diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/ledmac/ledmac.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/ledmac/ledmac.dtx | 392 |
1 files changed, 140 insertions, 252 deletions
diff --git a/Master/texmf-dist/source/latex/ledmac/ledmac.dtx b/Master/texmf-dist/source/latex/ledmac/ledmac.dtx index 8b7dba93418..91e4f8aa08b 100644 --- a/Master/texmf-dist/source/latex/ledmac/ledmac.dtx +++ b/Master/texmf-dist/source/latex/ledmac/ledmac.dtx @@ -50,7 +50,7 @@ % % \fi % -% \CheckSum{9041} +% \CheckSum{9034} % % \makeatletter % \newcommand*{\DescribeIt}{\leavevmode\@bsphack\begingroup\MakePrivateLetters @@ -128,7 +128,10 @@ % \def\fileversion{v0.6} \def\filedate{2004/12/10} % \def\fileversion{v0.7} \def\filedate{2005/03/24} % \def\fileversion{v0.8} \def\filedate{2011/07/11} -%\def\fileversion{v0.8.1} \def\filedate{2011/07/14} +% \def\fileversion{v0.8.1} \def\filedate{2011/07/14} +% \def\fileversion{v0.9} \def\filedate{2011/08/03} +% \def\fileversion{v0.9.1} \def\filedate{2011/08/08} +% \def\fileversion{v0.10} \def\filedate{2011/08/22} % \changes{v0.1}{2003/03/25}{First public release} % \changes{v0.2}{2003/08/16}{Added tabmac code, and extended indexing} % \changes{v0.2.1}{2003/09/13}{Bug fixes and match with mempatch v1.8} @@ -151,6 +154,9 @@ % \changes{v0.7}{2011/06/17}{Ma\"ieul Rouquette new maintainer} % \changes{v0.8}{2011/07/11}{Bug on endnotes fixed : in a // text, every endnotes can be at the end (!)} % \changes{v0.8.1}{2011/07/14}{Bug on \cs{edtext} ; \cs{critex} ; \cs{lemma} fixed : we can now us non switching commands, like \cs{textit}} +% \changes{v0.9}{2011/08/03}{No more ledpatch. All patches are now in the main file.} +% \changes{v0.9.1}{2011/08/08}{Fix some bug's linked with the integration of ledpatch on the main file.} +% \changes{v0.10}{2011/08/22}{Corrections about \cs{section} and other titles in numbered sections} % \hyphenation{man-u-script man-u-scripts} % % \newcommand{\Lpack}[1]{\textsf{#1}} @@ -259,6 +265,8 @@ % Other LaTeX packages for critical editions include EDNOTES, and % \Lpack{poemscol} for poetical works. % \end{PW} +% +% Please, for all bug's report, open a ticket on \url{https://github.com/maieul/ledmac/issues/} % \end{abstract} % % \tableofcontents @@ -2932,7 +2940,7 @@ % \begin{macrocode} %<*code> \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ledmac}[2005/03/24 v0.7 LaTeX port of EDMAC] +\ProvidesPackage{ledmac}[2011/08/22 v0.10 LaTeX port of EDMAC] % \end{macrocode} % @@ -4556,6 +4564,7 @@ % % \begin{macro}{\lock@on} % \begin{macro}{\do@lockon} +% \begin{macro}{\do@lockonL} % \cs{lock@on} % adds an entry to the action-code list to turn line number % locking on. The current setting of the sub-lineation flag tells us @@ -4570,52 +4579,62 @@ \newcommand*{\lock@on}{\futurelet\next\do@lockon} \newcommand*{\do@lockon}{% \ifx\next\lock@off - \global\let\lock@off=\skip@lockoff + \global\let\lock@off=\skip@lockoff \else - \xright@appenditem{\the\absline@num}\to\actionlines@list - \ifsublines@ - \xright@appenditem{-1005}\to\actions@list - \ifcase\sub@lock - \sub@lock \@ne - \else - \sub@lock \z@ - \fi - \else - \xright@appenditem{-1003}\to\actions@list - \ifcase\@lock - \@lock \@ne - \else - \@lock \z@ - \fi - \fi + \do@lockonL + \fi} +\newcommand*{\do@lockonL}{% + \xright@appenditem{\the\absline@num}\to\actionlines@list + \ifsublines@ + \xright@appenditem{-1005}\to\actions@list + \ifnum\sub@lock=\z@ + \sub@lock \@ne + \else + \ifnum\sub@lock=\thr@@ + \sub@lock \@ne + \fi + \fi + \else + \xright@appenditem{-1003}\to\actions@list + \ifnum\@lock=\z@ + \@lock \@ne + \else + \ifnum\@lock=\thr@@ + \@lock \@ne + \fi + \fi \fi} + % \end{macrocode} % \end{macro} % \end{macro} +% \end{macro} % % \begin{macro}{\lock@off} % \begin{macro}{\do@lockoff} +% \begin{macro}{\do@lockoffL} % \begin{macro}{\skip@lockoff} % \cs{lock@off} adds an entry to the action-code list % to turn line number locking off. % \begin{macrocode} -\newcommand*{\do@lockoff}{% +\newcommand*{\do@lockoffL}{% \xright@appenditem{\the\absline@num}\to\actionlines@list \ifsublines@ \xright@appenditem{-1006}\to\actions@list \ifnum\sub@lock=\tw@ - \sub@lock \thr@@ + \sub@lock \thr@@ \else - \sub@lock \z@ + \sub@lock \z@ \fi \else \xright@appenditem{-1004}\to\actions@list \ifnum\@lock=\tw@ - \@lock \thr@@ + \@lock \thr@@ \else - \@lock \z@ + \@lock \z@ \fi \fi} +\newcommand*{\do@lockoff}{\do@lockoffL} \newcommand*{\skip@lockoff}{\global\let\lock@off=\do@lockoff} \global\let\lock@off=\do@lockoff @@ -4623,6 +4642,7 @@ % \end{macro} % \end{macro} % \end{macro} +% \end{macro} % % \begin{PW} % \begin{macro}{\n@num} @@ -5512,7 +5532,14 @@ % is happening within a group; definitions must be global if you want % them to survive past the end of the paragraph. % \begin{macrocode} -\newcommand*{\pstart}{\ifnumbering \else +\newcommand*{\pstart}{ + \if@nobreak +\let\@oldnobreak\@nobreaktrue +\else +\let\@oldnobreak\@nobreakfalse +\fi +\@nobreaktrue + \ifnumbering \else \led@err@PstartNotNumbered \beginnumbering \fi @@ -5560,7 +5587,8 @@ % \begin{macrocode} \flush@notes \endgroup - \ignorespaces} + \ignorespaces + \@oldnobreak} % \end{macrocode} % \end{macro} @@ -5639,139 +5667,30 @@ % \subsection{Processing one line} % % \begin{macro}{\do@line} +% \begin{macro}{\l@dunhbox@line} % The \cs{do@line} macro is called by \cs{pend} to % do all the processing for a single line of text. % \begin{macrocode} -\newcommand*{\do@line}{% -% \end{macrocode} -% -% First, pull -% one line off the top of \cs{raw@text}, which contains the remaining -% unprocessed lines of the paragraph. \cs{vbadness} must be cranked up to -% suppress \verb"Underfull vbox" errors from -% \cs{vsplit}; \cs{splittopskip} will be inserted at the top of -% \cs{one@line}, so we zero it. (This skip will appear in the final -% vertical list, just before every \cs{baselineskip}.) -% \begin{macrocode} - {\vbadness=10000 \splittopskip=0pt -% \end{macrocode} -% \begin{PW} -% Provide a hook for potential extra settings. -% \begin{macrocode} - \do@linehook -% \end{macrocode} -% Null the \cs{...d@ta}, which may later hold line numbers, here. -% They will get defined within \cs{affixline@num}. Similarly for -% \cs{l@dcsnotetext} for the text of a sidenote. -% \begin{macrocode} - \l@demptyd@ta -% \end{macrocode} -% \end{PW} -% -% \begin{macrocode} - \global\setbox\one@line=\vsplit\raw@text to\baselineskip}% -% \end{macrocode} -% -% \cs{one@line} comes out of \cs{vsplit} as a \verb"vbox"; -% we now convert it to an \verb"hbox". -% -% This operation breaks if there's an insert connected to the -% \phantomsection\label{doline} line. In that case, the content of the \verb"vbox" -% \cs{one@line} before this operation is not just an \verb"hbox": it's -% an \verb"hbox" followed by an insert. After the \cs{unvbox}, the -% last thing on the vertical list is not the \verb"hbox" but the -% insert. The result is that our line heads prematurely onto the -% vertical list---with incorrect interline spacing, because there's -% still a level of boxing that should be undone---and \cs{one@line} -% is the void box, because the last thing on the vertical list -% wasn't a box. The subsequent code consequently prints a blank -% line. -% -% All this is why insertions need to be kept out of the paragraph -% until this point; our footnote macros add all insertions to list -% macros, and the \cs{add@inserts} macro below puts them onto the -% vertical list at the proper time. -% \begin{macrocode} - \unvbox\one@line \global\setbox\one@line=\lastbox -% \end{macrocode} -% -% Calculate the line and page number for this line. -% \begin{macrocode} - \getline@num -% \end{macrocode} -% -% Now we'll add the line to the vertical list, with a line -% number attached if necessary. -% -% The \verb"\hfil\hbox to \wd\one@line" is necessary to position a -% hangindented line correctly: without it, \cs{one@line} gets -% stretched out to \cs{hsize} in width and the indentation -% disappears. This is because hanging indentation is done by -% setting a nonzero `shift' value for the \verb"hbox" that -% contains the line within the \verb"vbox", and that shift vanishes, like -% the penalties, when we slice up the paragraph; one can examine -% the \cs{ht} or \cs{wd} of a box within \TeX{}, but it provides no -% way of examining the \cs{shift}, though it would be a trivial -% modification of the \TeX{} program to add that function. -% (\cs{parshape}\phantomsection\label{parshape} -% also works by setting a nonzero shift, but this fix isn't good -% enough there, because the total width of the lines is also varied -% in that case; our algorithm will push all the lines of text over -% to the right margin.) -% -% We put the \cs{new@line} start-of-line marker in the output list at -% this point too: putting it within the \cs{hbox} here ensures that -% it comes before any of the text of the line in the vertical list, -% but cannot be broken away from it at a page break. -% -% \begin{PW} -% For LaTeX I think that \cs{linewidth} is more appropriate -% than \cs{hsize} here. -% -% It turns out (e.g., in the \verb?ledgroupsized? environment) to be useful -% to have controllable fills at each end of the line, not just the -% original \verb?\hfil\hbox?. Another change from the original, namely -% adding the inserts earlier at the start of the line, lets -% us have sidenotes in numbered text, and also regular and familiar -% footnotes. -% \changes{v0.5}{2004/04/03}{Changed \cs{do@line} to enable sidenotes and -% regular footnoting} -% \changes{v0.5.1}{2004/04/10}{Changed \cs{do@line} to restore correct line -% numbering} -% \changes{v0.5.1}{2004/04/10}{Added code to \cs{do@line} to handle -% \cs{ledsidenote}s} -% -% \cs{affixline@num} puts the line numbers into \cs{l@dld@ta} (left) -% and \cs{l@drd@ta} (right), so call it before starting to process the line. -% \begin{macrocode} + \newcommand*{\l@dunhbox@line}[1]{\unhbox #1} + \newcommand*{\do@line}{% + {\vbadness=10000 + \splittopskip=\z@ + \do@linehook +\l@demptyd@ta + \global\setbox\one@line=\vsplit\raw@text to\baselineskip}% + \unvbox\one@line \global\setbox\one@line=\lastbox + \getline@num \affixline@num -% \end{macrocode} -% Now stick everything into a set of boxes. After calling \cs{add@inserts} -% to grab any inserts for the line call \cs{affixside@note} to grab -% the texts for any moveable sidenotes going into the margin(s). -% \begin{macrocode} - \hb@xt@ \linewidth{% - \l@dld@ta\add@inserts\affixside@note - \l@dlsn@te% left side note - {\ledllfill - \hb@xt@ \wd\one@line{\new@line\unhbox\one@line}% - \ledrlfill\l@drd@ta% - \l@drsn@te}% right side note - }% -% \end{macrocode} -% -% Originally the footnotes and insertions for this line were pulled out of the -% \cs{inserts@list} list macro at this point and attached, but this has -% now been done earlier. -% \end{PW} -% -% Penalties get stripped off by this slicing process; the following -% macro puts them back in as the last step. -% \begin{macrocode} - \add@penalties} + \hb@xt@ \linewidth{\l@dld@ta\add@inserts\affixside@note + \l@dlsn@te + {\ledllfill\hb@xt@ \wd\one@line{\new@line\l@dunhbox@line{\one@line}}\ledrlfill\l@drd@ta% + \l@drsn@te + }} + \add@penalties} % \end{macrocode} % \end{macro} +% \end{macro} % % \begin{PW} % \begin{macro}{\do@linehook} @@ -5990,62 +5909,33 @@ % \changes{v0.7}{2005/02/24}{Added \cs{do@actions@fixedcode}} % \begin{macrocode} \newcommand*{\do@actions@fixedcode}{% - \ifcase\@l@dtempcnta% %1000 -% \end{macrocode} -% -% Commands that turn sub-lineation on and off. -% \begin{macrocode} - \or% % 1001 - \global\sublines@true - \or% % 1002 - \global\sublines@false -% \end{macrocode} -% -% Line locking. We ignore these indications when they don't appear -% at the right times: a start-lock should appear only when locking -% is entirely off, and an end-lock should only appear when locking is -% in the `middle'. -% \begin{macrocode} - \or% % 1003 - \ifcase\@lock - \global\@lock=\@ne - \else - \global\@lock=\z@ - \fi - \or% % 1004 - \ifnum\@lock=\tw@ - \global\@lock=\thr@@ - \else - \global\@lock=\z@ - \fi -% \end{macrocode} -% -% Sub-line locking. Same comments as for line locking. -% \begin{macrocode} - \or% % 1005 - \ifcase\sub@lock - \global\sub@lock=\@ne - \else - \global\sub@lock=\z@ - \fi - \or% % 1006 - \ifnum\sub@lock=\tw@ - \global\sub@lock=\thr@@ - \else - \global\sub@lock=\z@ - \fi -% \end{macrocode} -% Number skipping. -% \begin{macrocode} - \or% % 1007 - \l@dskipnumbertrue -% \end{macrocode} -% -% If we get here, some unknown action code has been encountered. -% \begin{macrocode} - \else - \led@warn@BadAction - \fi} + \ifcase\@l@dtempcnta + \or% % 1001 + \global\sublines@true + \or% % 1002 + \global\sublines@false + \or% % 1003 + \global\@lock=\@ne + \or% % 1004 + \ifnum\@lock=\tw@ + \global\@lock=\thr@@ + \else + \global\@lock=\z@ + \fi + \or% % 1005 + \global\sub@lock=\@ne + \or% % 1006 + \ifnum\sub@lock=\tw@ + \global\sub@lock=\thr@@ + \else + \global\sub@lock=\z@ + \fi + \or% % 1007 + \l@dskipnumbertrue + \else + \led@warn@BadAction + \fi} + % \end{macrocode} % \end{macro} @@ -9120,21 +9010,23 @@ % The `footnotes' for left, right, and moveable sidenotes. The whole % scheme is reminiscent of the critical footnotes code. % \begin{macrocode} +\newif\ifrightnoteup + \rightnoteuptrue \newcommand*{\l@dlsnote}[1]{% \ifnumberedpar@ - \xright@appenditem{\noexpand\vl@dlsnote{{\l@d@nums}{\@tag}{#1}}}% + \xright@appenditem{\noexpand\vl@dlsnote{#1}}% \to\inserts@list \global\advance\insert@count \@ne \fi\ignorespaces} \newcommand*{\l@drsnote}[1]{% \ifnumberedpar@ - \xright@appenditem{\noexpand\vl@drsnote{{\l@d@nums}{\@tag}{#1}}}% + \xright@appenditem{\noexpand\vl@drsnote{#1}}% \to\inserts@list \global\advance\insert@count \@ne \fi\ignorespaces} \newcommand*{\l@dcsnote}[1]{% \ifnumberedpar@ - \xright@appenditem{\noexpand\vl@dcsnote{{\l@d@nums}{\@tag}{#1}}}% + \xright@appenditem{\noexpand\vl@dcsnote{#1}}% \to\inserts@list \global\advance\insert@count \@ne \fi\ignorespaces} @@ -9149,9 +9041,9 @@ % \begin{macro}{\vl@dcsnote} % Put the left/right text into boxes, but just save the moveable text. % \begin{macrocode} -\newcommand*{\vl@dlsnote}[1]{\setl@dlp@rbox#1} -\newcommand*{\vl@drsnote}[1]{\setl@drp@rbox#1} -\newcommand*{\vl@dcsnote}[1]{\savel@dcsnote#1} +\newcommand*{\vl@dlsnote}[1]{\setl@dlp@rbox{#1}} +\newcommand*{\vl@drsnote}[1]{\setl@drp@rbox{#1}} +\newcommand*{\vl@dcsnote}[1]{\gdef\l@dcsnotetext{#1}} % \end{macrocode} % \end{macro} @@ -9166,14 +9058,25 @@ % It is these boxes that finally % get displayed in the margins. % \begin{macrocode} -\newcommand*{\setl@dlp@rbox}[3]{% +\newcommand*{\setl@dlp@rbox}[1]{% {\parindent\z@\hsize=\ledlsnotewidth\ledlsnotefontsetup - \global\setbox\l@dlp@rbox=\vbox to\z@{\vss#3}}}% aligns on bottom line + \global\setbox\l@dlp@rbox + \ifleftnoteup + =\vbox to\z@{\vss #1}% + \else + =\vbox to 0.70\baselineskip{\strut#1\vss}% + \fi}} %% \global\setbox\l@dlp@rbox=\vbox to\z@{#3\vss}}}% aligns on top line -\newcommand*{\setl@drp@rbox}[3]{% +\newcommand*{\setl@drp@rbox}[1]{% {\parindent\z@\hsize=\ledrsnotewidth\ledrsnotefontsetup - \global\setbox\l@drp@rbox=\vbox to\z@{\vss#3}}} - + \global\setbox\l@drp@rbox + \ifrightnoteup + =\vbox to\z@{\vss#1}% + \else + =\vbox to0.7\baselineskip{\strut#1\vss}% + \fi}} +\newif\ifleftnoteup + \leftnoteuptrue % \end{macrocode} % \end{macro} % \end{macro} @@ -9199,9 +9102,9 @@ \ifx\@templ@d\l@dcsnotetext \else \if@twocolumn \if@firstcolumn - \setl@dlp@rbox{}{}{\l@dcsnotetext}% + \setl@dlp@rbox{\l@dcsnotetext}% \else - \setl@drp@rbox{}{}{\l@dcsnotetext}% + \setl@drp@rbox{\l@dcsnotetext}% \fi \else \@l@dtempcntb=\sidenote@margin @@ -9209,9 +9112,9 @@ \advance\@l@dtempcntb by\page@num \fi \ifodd\@l@dtempcntb - \setl@drp@rbox{}{}{\l@dcsnotetext}% + \setl@drp@rbox{\l@dcsnotetext}% \else - \setl@dlp@rbox{}{}{\l@dcsnotetext}% + \setl@dlp@rbox{\l@dcsnotetext}% \fi \fi \fi} @@ -10068,7 +9971,7 @@ % \changes{v0.4.1}{2003/03/06}{Added minpage setup to \cs{addfootinsX}} % \begin{macrocode} \newcommand*{\addfootinsX}[1]{% - \footnormalX{#1} + \footnormalX{#1}% \g@addto@macro{\doxtrafeeti}{% \setbox\@outputbox \vbox{% \unvbox\@outputbox @@ -10078,11 +9981,11 @@ \ifvoid\@nameuse{footins#1}\else \insert\@nameuse{footins#1}{\unvbox\@nameuse{footins#1}}\fi}% \g@addto@macro{\l@dfambeginmini}{% - \expandafter\let\csname footnote#1\endcsname=\@nameuse{mpfootnote#1}} + \expandafter\expandafter\expandafter\let\expandafter\expandafter + \csname footnote#1\endcsname \csname mpfootnote#1\endcsname}% \g@addto@macro{\l@dfamendmini}{% - \ifvoid\@nameuse{mpfootins#1}\else\@nameuse{mpfootgroup#1{#1}}}% + \ifvoid\@nameuse{mpfootins#1}\else\@nameuse{mpfootgroup#1}{#1}\fi}% } - % \end{macrocode} % \end{macro} % @@ -11226,16 +11129,17 @@ % \begin{macro}{\l@dcheckcols} % Check that the number of columns is consistent. (was |\tabfehlermeldung|) % \begin{macrocode} -\newcommand{\l@dcheckcols}{% - \ifnum\l@dcolcount=1\relax% +\newcommand*{\l@dcheckcols}{% + \ifnum\l@dcolcount=1\relax \else - \ifnum\l@dampcount=1\relax% + \ifnum\l@dampcount=1\relax \else - \ifnum\l@dcolcount=\l@dampcount\relax% - \led@err@UnequalColumns - \fi% + \ifnum\l@dcolcount=\l@dampcount\relax + \else + \l@d@err@UnequalColumns + \fi \fi - \l@dampcount=\l@dcolcount% + \l@dampcount=\l@dcolcount \fi} % \end{macrocode} @@ -12223,14 +12127,8 @@ % % \section{The End}\label{end} % -% This is the end of the package code. But before we finish, enable -% a patch file (if there is one) to be read. -% -% \begin{macrocode} -\InputIfFileExists{ledpatch.sty} %</code> -% \end{macrocode} % % \newpage % \appendix @@ -12972,18 +12870,8 @@ in section~\ref{subsec}. \newcommand{\vffootnote}[2]{\setlp@rbox#2} \newcommand{\vgfootnote}[2]{\def\rd@ta{#2}} + - \renewcommand{\do@line}{% - {\vbadness=10000 \splittopskip=0pt - \gdef\rd@ta{}% for right margin paragraph->always a few characters - \global\setbox\one@line=\vsplit\raw@text to\baselineskip}% - \unvbox\one@line \global\setbox\one@line=\lastbox - \getline@num - \hbox to\hsize{\affixline@num\add@inserts\hbox to\z@% inserts added here so - {\hss\box\lp@rbox\kern\linenumsep}% that margin pars are - \hfil\hbox to\wd\one@line{\new@line\unhbox\one@line% included. - \hbox to\z@{\kern\linenumsep\notenumfont\rd@ta\hss}}}% - \add@penalties} % margin pars also included in line format \renewcommand{\affixline@num}{% \ifsublines@ |