From 2f667f4d777c2ce38eb648f49ae5fde2c644dcfc Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 30 Sep 2015 21:17:05 +0000 Subject: reledmac (30sep15) git-svn-id: svn://tug.org/texlive/trunk@38505 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/reledmac/reledmac.sty | 180 ++++++++--- Master/texmf-dist/tex/latex/reledmac/reledpar.sty | 358 +++++++++++++++++----- 2 files changed, 413 insertions(+), 125 deletions(-) (limited to 'Master/texmf-dist/tex') diff --git a/Master/texmf-dist/tex/latex/reledmac/reledmac.sty b/Master/texmf-dist/tex/latex/reledmac/reledmac.sty index d2d99743656..851465c5b0b 100644 --- a/Master/texmf-dist/tex/latex/reledmac/reledmac.sty +++ b/Master/texmf-dist/tex/latex/reledmac/reledmac.sty @@ -27,10 +27,12 @@ + + %% \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{reledmac}[2015/09/05 v2.1.3 typeset critical edition]% +\ProvidesPackage{reledmac}[2015/09/29 v2.2.0 typeset critical edition]% \RequirePackage{xkeyval} \newif\ifparledgroup \DeclareOptionX{series}[A,B,C,D,E]{\xdef\default@series{#1}} @@ -1025,7 +1027,7 @@ \newwrite\linenum@out \newif\iffirst@linenum@out@ \first@linenum@out@true -\newcommand{\this@line@list@version}{2}% +\newcommand{\this@line@list@version}{3}% \newcommand*{\line@list@stuff}[1]{% \read@linelist{#1}% \iffirst@linenum@out@ @@ -1033,6 +1035,9 @@ \global\first@linenum@out@false% \immediate\openout\linenum@out=#1\relax% \immediate\write\linenum@out{\string\line@list@version{\this@line@list@version}}% + \ifl@dpaging% + \immediate\write\linenum@out{\string\@par@sync@option{\@par@this@sync@option}}% + \fi% \else \if@minipage% \leavevmode% @@ -2338,10 +2343,10 @@ }}% #3\strut\par\allowbreak} \newcommand*{\threecolfootgroup}[1]{{\csuse{Xnotefontsize@#1}% - \noindent\csuse{Xtxtbeforenotes@#1}\par% + \noindent\csuse{Xtxtbeforenotes@#1}}\par% \splittopskip=\ht\strutbox \expandafter - \rigidbalance\csname #1footins\endcsname \thr@@ \splittopskip}} + \rigidbalance\csname #1footins\endcsname \thr@@ \splittopskip} \newcommand*{\mpthreecolfootgroup}[1]{{% \vskip\skip\@nameuse{mp#1footins} \ifl@dpairing\ifparledgroup% @@ -2411,10 +2416,10 @@ }}% #3\strut\par\allowbreak} \newcommand*{\twocolfootgroup}[1]{{\csuse{Xnotefontsize@#1} - \noindent\csuse{Xtxtbeforenotes@#1}\par% + \noindent\csuse{Xtxtbeforenotes@#1}}\par% \splittopskip=\ht\strutbox \expandafter - \rigidbalance\csname #1footins\endcsname \tw@ \splittopskip}} + \rigidbalance\csname #1footins\endcsname \tw@ \splittopskip} \newcommand*{\mptwocolfootsetup}[1]{% \count\csname mp#1footins\endcsname 500 @@ -2498,11 +2503,7 @@ {% \hspace{\csuse{Xinplaceofnumber@#2}}% }% - {\hspace{\csuse{Xbeforesymlinenum@#2}}\csuse{Xnotenumfont@#2}% - \ifdimequal{\csuse{Xboxsymlinenum@#2}}{0pt}% - {\csuse{Xsymlinenum@#2}}% - {\hbox to \csuse{Xboxsymlinenum@#2}{\csuse{Xsymlinenum@#2}\hfill}}% - \hspace{\csuse{Xaftersymlinenum@#2}}}% + {\printsymlinefootnotearea{#2}}% }% {% \printlinefootnotearea{#1}{#2}% @@ -2521,6 +2522,16 @@ }% }% } +\newcommand{\printsymlinefootnotearea}[1]{% + \hspace{\csuse{Xbeforesymlinenum@#1}}% + \csuse{Xnotenumfont@#1}% + \ifdimequal{\csuse{Xboxsymlinenum@#1}}{\z@}% + {\csuse{Xsymlinenum@#1}}% + {\hbox to \csuse{Xboxsymlinenum@#1}% + {\csuse{Xsymlinenum@#1}\hfill}% + }% + \hspace{\csuse{Xaftersymlinenum@#1}}% +}% \newcommand{\printlinefootnotearea}[2]{% \printXbeforenumber{#2}% \csuse{Xnotenumfont@#2}% @@ -2667,7 +2678,8 @@ \def\printlines#1|#2|#3|#4|#5|#6|#7|{% \begingroup% \ifluatex% - \textdir TLT% + \edef\@tmp{\the\textdir}% + \ifdefstring{\@tmp}{TLT}{}{\textdir TLT}%Test in order to prevent spurious space (bug #397) \fi% \setprintlines{#1}{#2}{#3}{#4}{#5}{#6}% \ifdimequal{\csuse{Xboxstartlinenum@\@currentseries}}{0pt}% @@ -3390,6 +3402,7 @@ }% \global\notbool{parapparatus@}{}{\long}\def\endprint#1#2#3#4#5{{% + \hangindent=\csuse{Xendhangindent@#4}% \ifXendinsertsep@% \hskip\csuse{Xendafternote@#4}% \csuse{Xendsep@#4}% @@ -3405,15 +3418,10 @@ \notblank{#5}{\docsvlist{#5}}{}% \csuse{Xendbhooknote@#4}% \csuse{Xendnotefontsize@#4}% - \ifboolexpr{% - togl {nonum@}% - or togl {Xendnonumber@#4}% - }% - {\hspace{\csuse{Xendinplaceofnumber@#4}}}% - {\printlineendnotearea{#1}{#4}}% - \nottoggle{Xendlemmadisablefontselection@#4}% - {\select@lemmafont#1|#2}% - {#2}% + \printlineendnote{#1}{#4}% + \nottoggle{Xendlemmadisablefontselection@#4}% + {\select@lemmafont#1|#2}% + {#2}% \ifboolexpr{% togl {nosep@}% or test{\ifcsempty{Xendlemmaseparator@#4}}% @@ -3434,7 +3442,50 @@ \let\l@d@section=\@gobble +\newcommand{\printlineendnote}[2]{% + \l@dp@rsefootspec#1|% + \iftoggle{Xendnumberonlyfirstintwolines@#2}{% + \edef\lineinfo@{\l@dparsedstartpage - \l@dparsedstartline - \l@dparsedstartsub - \l@dparsedendpage - \l@dparsedendline - \l@dparsedendsub}% + }% + {% + \edef\lineinfo@{\l@dparsedstartpage - \l@dparsedstartline - \l@dparsedstartsub}% + }% + \ifboolexpr{% + togl {nonum@}% + or togl {Xendnonumber@#2}% + }% + {\hspace{\csuse{Xendinplaceofnumber@#2}}}% + {% + \iftoggle{Xendnumberonlyfirstinline@#2}% + {\ifcsdef{prevendline#2}% + {\ifcsequal{prevendline#2}{lineinfo@}% + {% + \csuse{Xendbhookinplaceofnumber@#2}% + \ifcsempty{Xendsymlinenum@#2}% + {\hspace{\csuse{Xendinplaceofnumber@#2}}}% + {\printsymlineendnotearea{#2}}% + \csuse{Xendahookinplaceofnumber@2}% + }% + {\printlineendnotearea{#1}{#2}}}% + {\printlineendnotearea{#1}{#2}}% + }% + {\printlineendnotearea{#1}{#2}}%We keep every time line + \csxdef{prevendline#2}{\lineinfo@}% + }% +}% +\newcommand{\printsymlineendnotearea}[1]{% + \hspace{\csuse{Xendbeforesymlinenum@#1}}% + \csuse{Xendnotenumfont@#1}% + \ifdimequal{\csuse{Xendboxsymlinenum@#1}}{\z@}% + {\csuse{Xendsymlinenum@#1}}% + {\hbox to \csuse{Xendboxsymlinenum@#1}% + {\csuse{Xendsymlinenum@#1}\hfill}% + }% + \hspace{\csuse{Xendaftersymlinenum@#1}}% +}% \newcommand{\printlineendnotearea}[2]{% + \csuse{Xendbhooklinenumber@#2}% + \hspace{\csuse{Xendbeforenumber@#2}}% \bgroup% \csuse{Xendnotenumfont@#2}% \ifdimequal{\csuse{Xendboxlinenum@#2}}{0pt}% @@ -3447,7 +3498,8 @@ \IfSubStr{LC}{\csuse{Xendboxlinenumalign@#2}}{\hfill}{}% }}% \egroup% - \enspace% + \hspace{\csuse{Xendafternumber@#2}}% + \csuse{Xendahooklinenumber@#2}% }% \newcommand*{\setprintendlines}[6]{% \l@d@pnumfalse \l@d@dashfalse @@ -3759,6 +3811,9 @@ \csgdef{Xendnotefontsize@#1}{\footnotesize}% \csgdef{Xendbhooknote@#1}{}% + \csgdef{Xendbeforenumber@#1}{0pt} + \csgdef{Xendafternumber@#1}{0.5em} + \csgdef{Xendboxlinenum@#1}{0pt}% \csgdef{Xendboxlinenumalign@#1}{L}% @@ -3776,6 +3831,20 @@ \csgdef{Xendinplaceofnumber@#1}{0pt}% \newtoggle{Xendnonumber@#1}% + + \csgdef{Xendhangindent@#1}{0pt}% + \newtoggle{Xendnumberonlyfirstinline@#1}% + \newtoggle{Xendnumberonlyfirstintwolines@#1}% + + \csgdef{Xendbeforesymlinenum@#1}{\csuse{Xendbeforenumber@#1}}% + \csgdef{Xendaftersymlinenum@#1}{\csuse{Xendafternumber@#1}}% + \csgdef{Xendsymlinenum@#1}{}% + \csgdef{Xendboxsymlinenum@#1}{0pt}% + + \csgdef{Xendbhooklinenumber@#1}{}% + \csgdef{Xendehooklinenumber@#1}{}% + \csgdef{Xendbhookinplaceofnumber@#1}{}% + \csgdef{Xendehookinplaceofnumber@#1}{}% \fi% \listxadd{\@series}{#1} } @@ -3808,13 +3877,13 @@ \newcommandx{\settoggle@series}[5][4,5,usedefault]{% \def\do##1{% \global\settoggle{#2@##1}{#3}% - \ifstrequal{#4}{reload}% - {% - \csuse{Xarrangement@\csuse{series@display##1}}{##1}% - \csuse{arrangementX@\csuse{series@displayX##1}}{##1}% - }% - {}% - }% + \ifstrequal{#4}{critical}{ + \csuse{Xarrangement@\csuse{series@display##1}}{##1}% + }{} + \ifstrequal{#4}{familiar}{ + \csuse{arrangementX@\csuse{series@displayX##1}}{##1}% + }{} + }% \ifstrempty{#1}{% \dolistloop{\@series}% \ifstrempty{#5}{}{% @@ -3828,10 +3897,13 @@ \newcommandx{\setcommand@series}[5][4,5,usedefault]{% \def\do##1{ \csgdef{#2@##1}{#3} - \ifstrequal{#4}{reload}{ - \csuse{Xarrangement@\csuse{series@display##1}}{##1}% - \csuse{arrangementX@\csuse{series@displayX##1}}{##1}% - }{}} + \ifstrequal{#4}{critical}{% + \csuse{Xarrangement@\csuse{series@display##1}}{##1}% + }{} + \ifstrequal{#4}{familiar}{% + \csuse{arrangementX@\csuse{series@displayX##1}}{##1}% + }{}% + }% \ifstrempty{#1}{% \dolistloop{\@series}% \ifstrempty{#5}{}{% @@ -3868,14 +3940,14 @@ \docsvlist{#2}% }% } -\newcommand{\newhooktoggle@series@reload}[1]{% +\newcommand{\newhooktoggle@series@reload}[2]{% \global\expandafter\newcommandx\expandafter*\csname #1\endcsname[2][1,2={true},usedefault]{% - \settoggle@series{##1}{#1}{##2}[reload]% + \settoggle@series{##1}{#1}{##2}[#2]% }% }% -\newcommand{\newhookcommand@series@reload}[1]{% +\newcommand{\newhookcommand@series@reload}[2]{% \global\expandafter\newcommand\expandafter*\csname #1\endcsname[2][]{% - \setcommand@series{##1}{#1}{##2}[reload]% + \setcommand@series{##1}{#1}{##2}[#2]% }% } \unless\ifnocritical@ @@ -3903,7 +3975,7 @@ \newhookcommand@series{Xafterlemmaseparator} \newhookcommand@series{Xinplaceoflemmaseparator} \newhookcommand@series{Xtxtbeforenotes} - \newhookcommand@series@reload{Xafterrule} + \newhookcommand@series@reload{Xafterrule}{critical} \newhooktoggle@series{Xnumberonlyfirstinline} \newhooktoggle@series{Xnumberonlyfirstintwolines} \newhooktoggle@series{Xnonumber} @@ -3916,9 +3988,9 @@ \newhooktoggle@series{Xonlypstart} \newhooktoggle@series{Xnonbreakableafternumber} \newhooktoggle@series{Xlemmadisablefontselection} - \newhookcommand@series@reload{Xmaxhnotes} - \newhookcommand@series@reload{Xbeforenotes} - \newhooktoggle@series@reload{Xnoteswidthliketwocolumns}% + \newhookcommand@series@reload{Xmaxhnotes}{critical} + \newhookcommand@series@reload{Xbeforenotes}{critical} + \newhooktoggle@series@reload{Xnoteswidthliketwocolumns}{critical}% \newhookcommand@series{Xnotefontsize} \newhookcommand@series{Xboxlinenum}% @@ -3940,10 +4012,10 @@ \newhookcommand@series{colalignX}% \newhookcommand@series{notenumfontX} \newhookcommand@series{bhooknoteX} - \newhookcommand@series@reload{beforenotesX} - \newhookcommand@series@reload{maxhnotesX} - \newhooktoggle@series@reload{noteswidthliketwocolumnsX}% - \newhookcommand@series@reload{afterruleX} + \newhookcommand@series@reload{beforenotesX}{familiar} + \newhookcommand@series@reload{maxhnotesX}{familiar} + \newhooktoggle@series@reload{noteswidthliketwocolumnsX}{familiar}% + \newhookcommand@series@reload{afterruleX}{familiar} \newhookcommand@series{notefontsizeX} \newhookcommand@series{afternoteX} \newhookcommand@series{parafootsepX} @@ -3969,12 +4041,30 @@ \newhookcommand@series{Xendafterlemmaseparator} \newhookcommand@series{Xendinplaceoflemmaseparator} + \newhookcommand@series{Xendbeforenumber}% + \newhookcommand@series{Xendafternumber}% + \newhooktoggle@series{Xendparagraph} \newhookcommand@series{Xendafternote} \newhookcommand@series{Xendsep} \newhookcommand@series{Xendinplaceofnumber}% \newhooktoggle@series{Xendnonumber}% + + \newhooktoggle@series{Xendnumberonlyfirstinline}% + \newhooktoggle@series{Xendnumberonlyfirstintwolines}% + + \newhookcommand@series{Xendsymlinenum}% + \newhookcommand@series{Xendbeforesymlinenum}% + \newhookcommand@series{Xendaftersymlinenum}% + \newhookcommand@series{Xendboxsymlinenum}% + + \newhookcommand@series{Xendbhooklinenumber}% + \newhookcommand@series{Xendahooklinenumber}% + \newhookcommand@series{Xendbhookinplaceofnumber}% + \newhookcommand@series{Xendahookinplaceofnumber}% + + \newhookcommand@series{Xendhangindent}% \fi \newtoggle{fulllines@}% \newtoggle{nonum@} diff --git a/Master/texmf-dist/tex/latex/reledmac/reledpar.sty b/Master/texmf-dist/tex/latex/reledmac/reledpar.sty index c3d837be570..c14c9498cf6 100644 --- a/Master/texmf-dist/tex/latex/reledmac/reledpar.sty +++ b/Master/texmf-dist/tex/latex/reledmac/reledpar.sty @@ -27,12 +27,34 @@ \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{reledpar}[2015/09/05 v2.3.0 reledmac extension for parallel texts]% +\ProvidesPackage{reledpar}[2015/09/29 v2.4.0 reledmac extension for parallel texts]% \RequirePackage{xspace}% \RequirePackage{xkeyval} +\def\@par@this@sync@option{}% \newif\ifshiftedpstarts -\DeclareOptionX{shiftedpstarts}{\shiftedpstartstrue} +\DeclareOptionX{shiftedpstarts}{% + \shiftedpstartstrue% + \apptocmd{\@par@this@sync@option}{shifted}{}{}% +}% +\newif\ifadvancedshiftedpstarts +\DeclareOptionX{advancedshiftedpstarts}{% + \advancedshiftedpstartstrue% + \shiftedpstartstrue% + \apptocmd{\@par@this@sync@option}{advancedshifted}{}{}% +}% +\newif\ifnomaxlines% +\DeclareOptionX{nomaxlines}{% + \nomaxlinestrue% + \apptocmd{\@par@this@sync@option}{nomax}{}{}% +}% +\newif\ifnosyncpstarts% +\DeclareOptionX{nosyncpstarts}{% + \shiftedpstartstrue% + \nomaxlinestrue% + \nosyncpstartstrue% + \apptocmd{\@par@this@sync@option}{nosync}{}{}% +}% \DeclareOptionX{parledgroup}{\parledgrouptrue} \DeclareOptionX{widthliketwocolumns}{\widthliketwocolumnstrue}% \newif\ifsameparallelpagenumber @@ -46,6 +68,7 @@ \newdimen\Rcolwidth \Rcolwidth=0.45\textwidth \newcommand{\reledpar@error}[2]{\PackageError{reledpar}{#1}{#2}} +\newcommand{\reledpar@warning}[1]{\PackageWarning{reledpar}{#1}}% \newcommand*{\led@err@TooManyPstarts}{% \reledpar@error{Too many \string\pstart\space without printing. Some text will be lost}{\@ehc}} @@ -76,6 +99,9 @@ \newcommand{\led@error@fail@patch@@outputpage}{% \reledpar@error{Fail to patch \string\@outputpage\space command.}{\@ehc}% }% +\newcommand*{\led@warn@ChangeSyncOption}[1]{% + \reledpar@warning{You have changed synchronization's options since last run. We have not read line-list file #1. Please run LaTeX again.}% +}% \newcount\section@numR \section@numR=\z@ \pst@rtedLfalse @@ -323,6 +349,17 @@ \list@clear{\linesinpar@listR}% \list@clear{\linesonpage@listR} } +\newcommand{\@par@sync@option}[1]{% + \IfStrEq{#1}{\@par@this@sync@option}% + {}% + {\ifledRcol% + \led@warn@ChangeSyncOption{\jobname.\extensionchars\the\section@num}% + \else% + \led@warn@ChangeSyncOption{\jobname.\extensionchars\the\section@num}% + \fi% + \endinput% + }% +}% \newcommand{\@nl@regR}{% \ifx\l@dchset@num\relax \else \advance\absline@numR \@ne @@ -465,6 +502,26 @@ \ifbypstart@R\global\line@numR=0\fi \xright@appenditem{#1}\to\linesinpar@listR} +\newcommand{\@pstart}[3]{% + \ifcsdef{minpage@pstart@#1}% + {\ifnumgreater{#2}{\csuse{minpage@pstart@#1}}% + {\csnumgdef{minpage@pstart@#1}{#2}}% + {}% + }% + {\csnumgdef{minpage@pstart@#1}{#2}} + \csnumgdef{afterlines@pstart@#1L}{#3}% + }% + +\newcommand{\@pstartR}[3]{% + \numdef{\@tmp}{#2-1}%Because we have not to know in which page the pstart starts, but in which pair of facing page + \ifcsdef{minpage@pstart@#1}% + {\ifnumgreater{\@tmp}{\csuse{minpage@pstart@#1}}% + {\csnumgdef{minpage@pstart@#1}{\@tmp}}% + {}% + }% + {\csnumgdef{minpage@pstart@#1}{\@tmp}} + \csnumgdef{afterlines@pstart@#1R}{#3}% +}% \renewcommand*{\@lopL}[1]{% \xright@appenditem{#1}\to\linesonpage@listL} \renewcommand*{\@lopR}[1]{% @@ -480,6 +537,9 @@ \global\first@linenum@out@Rfalse \immediate\openout\linenum@outR=#1 \immediate\write\linenum@outR{\string\line@list@version{\this@line@list@version}}% + \ifl@dpaging% + \immediate\write\linenum@outR{\string\@par@sync@option{\@par@this@sync@option}}% + \fi% \else \if@minipage% \leavevmode% @@ -806,38 +866,41 @@ \letcs{\ifnumberpstart}{numberpstart@L\the\l@dpscL}% \advance\countLline \@ne% \ifvbox\namebox{l@dLcolrawbox\the\l@dpscL}% - {\vbadness=10000% - \splittopskip=\z@% - \do@lineLhook% - \l@demptyd@ta% - \global\setbox\one@line=\vsplit\namebox{l@dLcolrawbox\the\l@dpscL}% + {\vbadness=10000% + \splittopskip=\z@% + \do@lineLhook% + \l@demptyd@ta% + \global\setbox\one@line=\vsplit\namebox{l@dLcolrawbox\the\l@dpscL}% to\baselineskip}% - \IfStrEq{\splitfirstmarks\parledgroup@}{begin}{\parledgroup@notes@startL}{}% - \unvbox\one@line \global\setbox\one@line=\lastbox% - \getline@numL% - \ifnum\@lock>\@ne% - \inserthangingsymboltrue% - \else% - \inserthangingsymbolfalse% - \fi% - \setbox\l@dleftbox% - \hb@xt@ \Lcolwidth{% - \ifl@dhidenumber% - \global\l@dhidenumberfalse% - \f@x@l@cks% + \IfStrEq{\splitfirstmarks\parledgroup@}{begin}{\parledgroup@notes@startL}{}% + \unvbox\one@line \global\setbox\one@line=\lastbox% + \@writepageofparL% + \getline@numL% + \ifnum\@lock>\@ne% + \inserthangingsymboltrue% \else% - \affixline@num% + \inserthangingsymbolfalse% \fi% - \xifinlist{\the\l@dpscL}{\eled@sections@@}% - {\add@inserts\affixside@note}% - {\print@lineL}}% - \add@penaltiesL% - \global\advance\@donereallinesL\@ne% - \global\advance\@donetotallinesL\@ne% -\else% - \setbox\l@dleftbox \hb@xt@ \Lcolwidth{\hspace*{\Lcolwidth}}% - \global\advance\@donetotallinesL\@ne% -\fi} + \setbox\l@dleftbox% + \hb@xt@ \Lcolwidth{% + \ifl@dhidenumber% + \global\l@dhidenumberfalse% + \f@x@l@cks% + \else% + \affixline@num% + \fi% + \xifinlist{\the\l@dpscL}{\eled@sections@@}% + {\add@inserts\affixside@note}% + {\print@lineL}% + }% + \add@penaltiesL% + \global\advance\@donereallinesL\@ne% + \global\advance\@donetotallinesL\@ne% + \else% + \setbox\l@dleftbox \hb@xt@ \Lcolwidth{\hspace*{\Lcolwidth}}% + \global\advance\@donetotallinesL\@ne% + \fi% +}% \def\print@lineL{% \affixpstart@numL% @@ -899,40 +962,41 @@ \ledRcol@true% \advance\countRline \@ne% \ifvbox\namebox{l@dRcolrawbox\the\l@dpscR}% - {\vbadness=10000% - \splittopskip=\z@% - \do@lineRhook% - \l@demptyd@ta% - \global\setbox\one@lineR=\vsplit\namebox{l@dRcolrawbox\the\l@dpscR}% + {\vbadness=10000% + \splittopskip=\z@% + \do@lineRhook% + \l@demptyd@ta% + \global\setbox\one@lineR=\vsplit\namebox{l@dRcolrawbox\the\l@dpscR}% to\baselineskip}% - \IfStrEq{\splitfirstmarks\parledgroup@}{begin}{\parledgroup@notes@startR}{}% - \unvbox\one@lineR \global\setbox\one@lineR=\lastbox% - \getline@numR% - \ifnum\@lockR>\@ne% - \inserthangingsymbolRtrue% - \else% - \inserthangingsymbolRfalse% - \fi% - \setbox\l@drightbox% - \hb@xt@ \Rcolwidth{% - \ifl@dhidenumber% - \global\l@dhidenumberfalse% - \f@x@l@cksR% + \IfStrEq{\splitfirstmarks\parledgroup@}{begin}{\parledgroup@notes@startR}{}% + \unvbox\one@lineR \global\setbox\one@lineR=\lastbox% + \@writepageofparR% + \getline@numR% + \ifnum\@lockR>\@ne% + \inserthangingsymbolRtrue% \else% - \affixline@numR% + \inserthangingsymbolRfalse% \fi% - \xifinlist{\the\l@dpscR}{\eled@sectionsR@@}% - {\add@insertsR\affixside@noteR}% - {\print@lineR}% - }% - \add@penaltiesR% - \global\advance\@donereallinesR\@ne% - \global\advance\@donetotallinesR\@ne% -\else% - \setbox\l@drightbox \hb@xt@ \Rcolwidth{\hspace*{\Rcolwidth}}% - \global\advance\@donetotallinesR\@ne% -\fi% -\ledRcol@false% + \setbox\l@drightbox% + \hb@xt@ \Rcolwidth{% + \ifl@dhidenumber% + \global\l@dhidenumberfalse% + \f@x@l@cksR% + \else% + \affixline@numR% + \fi% + \xifinlist{\the\l@dpscR}{\eled@sectionsR@@}% + {\add@insertsR\affixside@noteR}% + {\print@lineR}% + }% + \add@penaltiesR% + \global\advance\@donereallinesR\@ne% + \global\advance\@donetotallinesR\@ne% + \else% + \setbox\l@drightbox \hb@xt@ \Rcolwidth{\hspace*{\Rcolwidth}}% + \global\advance\@donetotallinesR\@ne% + \fi% + \ledRcol@false% } \def\print@lineR{% @@ -1672,6 +1736,22 @@ \next \global\@donereallinesR \z@} +\newcommand*{\@writepageofparL}[0]{% + \ifnum\@donereallinesL=\z@% + \edef\next{% + \write\linenum@out{\string\@pstart{\the\l@dpscL}{\the\c@page}{\the\numpagelinesL}}% + }% + \next% + \fi% +}% +\newcommand*{\@writepageofparR}[0]{% + \ifnum\@donereallinesR=\z@% + \edef\next{% + \write\linenum@outR{\string\@pstartR{\the\l@dpscR}{\the\c@page}{\the\numpagelinesR}}% + }% + \next% + \fi% +}% \newsavebox{\@eledsectionL}% \newsavebox{\@eledsectionR}% \newcommand*{\Columns}{% @@ -1937,10 +2017,11 @@ \newcount\numpagelinesR \newcount\l@dminpagelines -\newcommand*{\Pages}{% +\newcommandx*{\Pages}[1][1,usedefault]{% \ifl@dpairing% \led@err@Pages@InsideEnv% \fi% + \ifstrequal{#1}{mainmatter}{\Pages@mainmattertrue}{\Pages@mainmatterfalse}% \eledsection@correcting@skip=-2\baselineskip% line correcting for section titles. \parledgroup@notespacing@set@correction% \typeout{}% @@ -2008,16 +2089,30 @@ \parledgroup@correction@notespacing{L}% \hb@xt@ \hsize{\ledstrutL\unhbox\l@dleftbox}% \else% - \dimen0=\pagetotal% - \advance\dimen0 by \baselineskip% - \global\pagetotal=\dimen0% + \unless\ifadvancedshiftedpstarts% + \dimen0=\pagetotal% + \advance\dimen0 by \baselineskip% + \global\pagetotal=\dimen0% + \else% + \ifnomaxlines% + \numdef{\@tmp}{\the\l@dpscL+1}% + \ifcsdef{minpage@pstart@\@tmp}{% + \ifnumless{\the\c@page}{\csuse{minpage@pstart@\@tmp}}% + {\dimen0=\pagetotal% + \advance\dimen0 by \baselineskip% + \global\pagetotal=\dimen0% + }% + {}% + }{}% + \fi% + \fi% \fi% \else% \parledgroup@correction@notespacing{L}% \hb@xt@ \hsize{\ledstrutL\unhbox\l@dleftbox}% \fi% \get@nextboxL% - \global\l@dskipversenumberfalse% + \global\l@dskipversenumberfalse% \ifprint@last@after@pendL% \csuse{after@pendL@\the\l@dpscL}% \global\csundef{after@pendL@\the\l@dpscL}% @@ -2051,16 +2146,30 @@ \parledgroup@correction@notespacing{R}% \hb@xt@ \hsize{\ledstrutR\unhbox\l@drightbox}% \else% - \dimen0=\pagetotal% - \advance\dimen0 by \baselineskip% - \global\pagetotal=\dimen0% + \unless\ifadvancedshiftedpstarts% + \dimen0=\pagetotal% + \advance\dimen0 by \baselineskip% + \global\pagetotal=\dimen0% + \else% + \ifnomaxlines% + \numdef{\@tmp}{\the\l@dpscR+1}% + \ifcsdef{minpage@pstart@\@tmp}{% + \ifnumless{\the\c@page}{\csuse{minpage@pstart@\@tmp}}% + {\dimen0=\pagetotal% + \advance\dimen0 by \baselineskip% + \global\pagetotal=\dimen0% + }% + {}% + }{}% + \fi% + \fi% \fi% \else% \parledgroup@correction@notespacing{R}% \hb@xt@ \hsize{\ledstrutR\unhbox\l@drightbox}% \fi% \get@nextboxR% - \global\l@dskipversenumberRfalse% + \global\l@dskipversenumberRfalse% \ifprint@last@after@pendR% \csuse{after@pendR@\the\l@dpscR}% \global\csundef{after@pendR@\the\l@dpscR}% @@ -2119,8 +2228,8 @@ }% \dolistloop{\@series}% }% -\newcommand*{\ledstrutL}{\strut} -\newcommand*{\ledstrutR}{\strut} +\newcommand*{\ledstrutL}{} +\newcommand*{\ledstrutR}{} \providecommand{\cleartoevenpage}[1][\@empty]{% \clearpage @@ -2130,6 +2239,7 @@ \ifdim\pagetotal<\topskip% on an empty page \else \clearpage + \Pages@mainmatter% \fi \ifodd\c@page% \ifprevpgnotnumbered% @@ -2214,8 +2324,11 @@ \ifdim\pagetotal<\ledthegoal \ifnum\numpagelinesL<\l@dminpagelines \else - \l@dsamepagefalse - \l@dpagefullfalse + \ifnomaxlines% + \else% + \l@dsamepagefalse% + \l@dpagefullfalse% + \fi% \fi \else \l@dsamepagefalse @@ -2235,8 +2348,11 @@ \ifdim\pagetotal<\ledthegoal \ifnum\numpagelinesR<\l@dminpagelines \else - \l@dsamepagefalse - \l@dpagefullfalse + \ifnomaxlines% + \else% + \l@dsamepagefalse% + \l@dpagefullfalse% + \fi% \fi \else \l@dsamepagefalse @@ -2309,12 +2425,49 @@ \newif\ifwrittenlinesL \newif\ifwrittenlinesR +\newif\if@getnextbox% \newcommand*{\get@nextboxL}{% \ifvbox\namebox{l@dLcolrawbox\the\l@dpscL}% box is not empty \else% box is empty + \@getnextboxtrue%Should be local, but be cautious \ifnum\usenamecount{l@dmaxlinesinpar\the\l@dpscL}>\@donetotallinesL - \parledgroup@notes@endL - \else + \parledgroup@notes@endL% + \unless\ifnosyncpstarts% + \@getnextboxfalse% + \ifnomaxlines% + \ifdim\pagetotal<\ledthegoal% + \numdef{\@tmp}{\l@dpscL+1}% + \ifcsdef{afterlines@pstart@\@tmp R}{% + \ifnumless{\numpagelinesL}{\csuse{afterlines@pstart@\@tmp R}}% + {}% + {\ifcsdef{minpage@pstart@\@tmp}% + {\ifnumless{\the\c@page}{\csuse{minpage@pstart@\@tmp}}% + {\ifnum\numpagelinesL=\l@dminpagelines% + \@getnextboxtrue% + \fi% + }% + {\@getnextboxtrue}}% + {\@getnextboxtrue}% + }% + }% + {}% + \fi% + \fi% + \fi% + \else% + \ifnomaxlines% + \numdef{\@tmp}{\the\l@dpscL+1}% + \ifcsdef{minpage@pstart@\@tmp}{% + \ifnumless{\the\c@page}{\csuse{minpage@pstart@\@tmp}}% + {\ifdimgreater{\pagetotal}{\ledthegoal}% + {\@getnextboxtrue}% + {\@getnextboxfalse}% + }% + {\@getnextboxtrue}% + }{}% + \fi% + \fi% + \if@getnextbox% \ifnum\usenamecount{l@dmaxlinesinpar\the\l@dpscL}=\@donetotallinesL \parledgroup@notes@endL \fi @@ -2347,9 +2500,45 @@ \newcommand*{\get@nextboxR}{% \ifvbox\namebox{l@dRcolrawbox\the\l@dpscR}% box is not empty \else% box is empty + \@getnextboxtrue% \ifnum\usenamecount{l@dmaxlinesinpar\the\l@dpscR}>\@donetotallinesR \parledgroup@notes@endR - \else + \unless\ifnosyncpstarts% + \@getnextboxfalse% + \ifnomaxlines% + \ifdim\pagetotal<\ledthegoal% + \numdef{\@tmp}{\l@dpscR+1}% + \ifcsdef{afterlines@pstart@\@tmp L}{% + \ifnumless{\numpagelinesL}{\csuse{afterlines@pstart@\@tmp L}}% + {}% + {\ifcsdef{minpage@pstart@\@tmp}% + {\ifnumless{\the\c@page}{\csuse{minpage@pstart@\@tmp}}% + {\ifnum\numpagelinesR=\l@dminpagelines% + \@getnextboxtrue% + \fi% + }% + {\@getnextboxtrue}}% + {\@getnextboxtrue}% + }%% + }% + {}% + \fi% + \fi% + \fi% + \else% + \ifnomaxlines% + \numdef{\@tmp}{\the\l@dpscR+1}% + \ifcsdef{minpage@pstart@\@tmp}{% + \ifnumless{\the\c@page}{\csuse{minpage@pstart@\@tmp}}% + {\ifdimgreater{\pagetotal}{\ledthegoal}% + {\@getnextboxtrue}% + {\@getnextboxfalse}% + }% + {\@getnextboxtrue}% + }{} + \fi% + \fi% + \if@getnextbox% \ifnum\usenamecount{l@dmaxlinesinpar\the\l@dpscR}=\@donetotallinesR \parledgroup@notes@endR \fi @@ -2441,6 +2630,15 @@ } \newcounter{par@page}% \setcounter{par@page}{1}% +\newif\ifPages@mainmatter +\newcommand{\Pages@mainmatter}{% + \ifPages@mainmatter% + \pagenumbering{arabic}% + \addtocounter{page}{1}% + \addtocounter{par@page}{-1}% + \patchcmd{\thepage}{page}{par@page}{}{}% + \fi% +} \pretocmd{\chapter}{% \ifl@dprintingpages% \vbox{}% -- cgit v1.2.3