summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-09-30 21:17:05 +0000
committerKarl Berry <karl@freefriends.org>2015-09-30 21:17:05 +0000
commit2f667f4d777c2ce38eb648f49ae5fde2c644dcfc (patch)
tree3b7e1b1c11a57d6981a90224d1b8a380dbb9fe23 /Master/texmf-dist/tex
parent21923df0aa733309adbfcc3169c7ffc0e0ab8b1c (diff)
reledmac (30sep15)
git-svn-id: svn://tug.org/texlive/trunk@38505 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r--Master/texmf-dist/tex/latex/reledmac/reledmac.sty180
-rw-r--r--Master/texmf-dist/tex/latex/reledmac/reledpar.sty358
2 files changed, 413 insertions, 125 deletions
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{}%