On 2018/08/01 08:59:39 -0700, Paul E. McKenney wrote: > On Thu, Aug 02, 2018 at 12:24:50AM +0900, Akira Yokosawa wrote: >> On 2018/07/31 08:10:27 -0700, Paul E. McKenney wrote: >>> On Tue, Jul 31, 2018 at 01:04:18AM +0900, Akira Yokosawa wrote: >>>> Hi Paul, >>>> >>>> This is v2 of the trial of fancyvrb scheme. >>>> >>>> --- >>>> The following changes since commit 3b62f67a76e15f8d8f8190a4252362d4ac0cdf23: >>>> >>>> Regenerating the atomic counter graph on a more modern CPU (2018-07-23 13:47:51 -0700) >>>> >>>> are available in the git repository at: >>>> >>>> https://github.com/akiyks/perfbook.git trial-fancyvrb-20180730a >>>> >>>> for you to fetch changes up to 3361b7331cf0f08a75bf6a9f69b7ea2f126e3b75: >>> >>> Looks very nice! >>> >>> So the effect of these are to establish a "label name environment"? >>> >>> \renewcommand{\lnlblbase}{ln:toolsoftrade:forkjoin:main} >>> \renewcommand{\lnrefbase}{ln:toolsoftrade:forkjoin:main} >> >> Yes. >> Another approach would be to define a *real* environment and >> enclose those parts where \lnref{} commands are used inside the >> environment. >> >> If we name the environment "lineref", the LaTeX source would >> look like: >> >> \begin{lineref}[ln:toolsoftrade:forkjoin:main] >> If \co{fork()} succeeds, it returns twice, once for the parent >> and again for the child. >> [...] >> Otherwise, the \co{fork()} has executed successfully, and the parent >> therefore executes line~\lnref{parent} with the variable \co{pid} >> containing the process ID of the child. >> \end{lineref} >> >> This might be clearer to see where the label-base string is >> effective. >> >> \lnlblbase could also have its own environment defined. >> >> I'll try this approach in v3 of this branch. > > That wasn't actually intended as a criticism, but I do agree that the > \begin-\end style is more clear. ;-) No, there was no way I took it as a criticism. Your mention of a "label name environment" was a cue for me to think "Why not make it a real environment". ;-) Thanks, Akira > > Thanx, Paul > >> Thanks, Akira >> >>> >>> This is very good -- allows use of short names, but also avoids >>> managing a very large flat global namespace. >>> >>> Then the C++ comments containing the "snippet" commands automate >>> code extraction, plus those containing the "lnlbl" commands to >>> automate label generation. >>> >>> This looks extremely good to me. It makes it much easier to modify >>> the code and the discussion of that code. >>> >>> Any thoughts from others? >>> >>> Thanx, Paul >>> >>>> [EXP] Automate sub makefile update (2018-07-31 00:31:56 +0900) >>>> >>>> ---------------------------------------------------------------- >>>> Akira Yokosawa (6): >>>> [EXP] toolsoftrade: Add labels in code samples as comments >>>> [EXP] Add script to extract code snippet from code sample >>>> [EXP] toolsoftrade: Reference line in code snippets by label >>>> [EXP] Update hyphen2endash >>>> [EXP] Add *.fcv to .gitignore >>>> [EXP] Automate sub makefile update >>>> >>>> .gitignore | 2 + >>>> CodeSamples/api-pthreads/api-pthreads.h | 18 ++-- >>>> CodeSamples/toolsoftrade/forkjoinvar.c | 12 ++- >>>> CodeSamples/toolsoftrade/pcreate.c | 7 +- >>>> Makefile | 14 ++- >>>> perfbook.tex | 12 +++ >>>> toolsoftrade/toolsoftrade.tex | 174 ++++++++++---------------------- >>>> utilities/fcvextract.pl | 166 ++++++++++++++++++++++++++++++ >>>> utilities/gen_snippet_mk.pl | 55 ++++++++++ >>>> utilities/hyphen2endash.sh | 3 + >>>> 10 files changed, 322 insertions(+), 141 deletions(-) >>>> create mode 100755 utilities/fcvextract.pl >>>> create mode 100755 utilities/gen_snippet_mk.pl >>>> >>>> --- >>>> >>>> There are quite a few changes since v1: >>>> >>>> o Rebased to current master. >>>> o Use line label format of "ln:directory:filename:function:linelabel" >>>> o To avoid repetitive use of long labels in reference, introduce >>>> \lnlblbase and \lnrefbase macros. By this change, now \lnlbl{} and >>>> \lnref{} can have simple line labels. >>>> o Add a script to extract VerbatimL sources from code samples. >>>> o Add a script to generate sub makefile for snippet extraction. >>>> o Update Makefile accordingly. >>>> >>>> The scheme looks like to work for 90% of code snippets. >>>> >>>> TODO list for me to improve: >>>> >>>> o Support of code snippets other than "C". >>>> o Support option to meta command \begin{snippet} other than labelbase and >>>> commandchars. >>>> o Support of commandchars option with no escape charactor required >>>> >>>> If this looks ready for you to merge, I'll amend commit logs and >>>> add header comment to gen_snippets_mk.pl and send a proper pull request. >>>> Please try this branch and let me know what you think. >>>> >>>> Thanks, Akika >>>> >>> >> > -- To unsubscribe from this list: send the line "unsubscribe perfbook" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html