%%
%% This is file `eledpar.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% eledpar.dtx  (with options: `code')
%% 
%%   Author: Author: Peter Wilson ; Herries Press herries dot press at earthlink dot net ; Maïeul Rouquette maieul at maieul dot net
%%   Copyright 2004, 2005 Peter R. Wilson
%%  2011- Maïeul Rouquette
%%   This work may be distributed and/or modified under the
%%   conditions of the LaTeX Project Public License, either
%%   version 1.3 of this license or (at your option) any
%%   later version.
%%   The latest version of the license is in
%%      http://www.latex-project.org/lppl.txt
%%   and version 1.3 or later is part of all distributions of
%%   LaTeX version 2003/06/01 or later.
%% 
%%   This work has the LPPL maintenance status "maintained".
%% 
%%   This work consists of the files listed in the README file.
%% 

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{eledpar}[2013/11/08 v1.5.0 eledmac extension for parallel texts]

\newif\ifshiftedpstarts
\let\shiftedversestrue\shiftedpstartstrue
\let\shiftedversesfalse\shiftedpstartsfalse
\DeclareOption{shiftedverses}{\shiftedpstartstrue}
\DeclareOption{shiftedpstarts}{\shiftedpstartstrue}
\ProcessOptions
  \l@dpairingfalse
\newif\ifl@dpaging
  \l@dpagingfalse
  \ledRcolfalse
\newdimen\Lcolwidth
  \Lcolwidth=0.45\textwidth
\newdimen\Rcolwidth
  \Rcolwidth=0.45\textwidth

\newcommand*{\led@err@TooManyPstarts}{%
  \eledmac@error{Too many \string\pstart\space without printing.
                Some text will be lost}{\@ehc}}
\newcommand*{\led@err@BadLeftRightPstarts}[2]{%
  \eledmac@error{The numbers of left (#1) and right (#2)
                \string\pstart s do not match}{\@ehc}}
\newcommand*{\led@err@LeftOnRightPage}{%
  \eledmac@error{The left page has ended on a right page}{\@ehc}}
\newcommand*{\led@err@RightOnLeftPage}{%
  \eledmac@error{The right page has ended on a left page}{\@ehc}}
\newcount\section@numR
  \section@numR=\z@
  \pst@rtedLfalse
\newif\ifpst@rtedR
  \pst@rtedRfalse

\providecommand*{\beginnumbering}{%
  \ifnumbering
    \led@err@NumberingStarted
    \endnumbering
  \fi
  \global\l@dnumpstartsL \z@
  \global\pst@rtedLfalse
  \global\numberingtrue
  \global\advance\section@num \@ne
  \initnumbering@reg
  \message{Section \the\section@num}%
  \line@list@stuff{\jobname.\extensionchars\the\section@num}%
  \l@dend@stuff}
\newcommand*{\beginnumberingR}{%
  \ifnumberingR
    \led@err@NumberingStarted
    \endnumberingR
  \fi
  \global\l@dnumpstartsR \z@
  \global\pst@rtedRfalse
  \global\numberingRtrue
  \global\advance\section@numR \@ne
  \global\absline@numR \z@
  \gdef\normal@page@breakR{}
  \gdef\l@prev@pbR{}
  \gdef\l@prev@nopbR{}
  \global\line@numR \z@
  \global\@lockR \z@
  \global\sub@lockR \z@
  \global\sublines@false
  \global\let\next@page@numR\relax
  \global\let\sub@change\relax
  \message{Section \the\section@numR R }%
  \line@list@stuffR{\jobname.\extensionchars\the\section@numR R}%
  \l@dend@stuff
  \setcounter{pstartR}{1}
  \begingroup
  \initnumbering@sectcmd
  \initnumbering@sectcountR
}

\def\endnumberingR{%
  \ifnumberingR
    \global\numberingRfalse
    \normal@pars
    \ifl@dpairing
      \global\pst@rtedRfalse
    \else
      \ifx\insertlines@listR\empty\else
        \global\noteschanged@true
      \fi
      \ifx\line@listR\empty\else
        \global\noteschanged@true
      \fi
    \fi
    \ifnoteschanged@
      \led@mess@NotesChanged
    \fi
  \else
    \led@err@NumberingNotStarted
  \fi\endgroup}

\newcounter{chapterR}
\newcounter{sectionR}
\newcounter{subsectionR}
\newcounter{subsubsectionR}
\newcommand{\initnumbering@sectcountR}{
\let\c@chapter\c@chapterR
\let\c@section\c@sectionR
\let\c@subsection\c@subsectionR
\let\c@subsubsection\c@subsubsectionR
}
\newcommand*{\pausenumberingR}{%
  \endnumberingR\global\numberingRtrue}
\newcommand*{\resumenumberingR}{%
  \ifnumberingR
     \global\pst@rtedRtrue
     \global\advance\section@numR \@ne
     \led@mess@SectionContinued{\the\section@numR R}%
     \line@list@stuffR{\jobname.\extensionchars\the\section@numR R}%
     \l@dend@stuff
  \else
    \led@err@numberingShouldHaveStarted
     \endnumberingR
     \beginnumberingR
  \fi}

\newcommand*{\memorydumpL}{%
  \endnumbering
  \numberingtrue
  \global\pst@rtedLtrue
  \global\advance\section@num \@ne
     \led@mess@SectionContinued{\the\section@num}%
  \line@list@stuff{\jobname.\extensionchars\the\section@num}%
  \l@dend@stuff}
\newcommand*{\memorydumpR}{%
  \endnumberingR
  \numberingRtrue
  \global\pst@rtedRtrue
  \global\advance\section@numR \@ne
     \led@mess@SectionContinued{\the\section@numR R}%
  \line@list@stuffR{\jobname.\extensionchars\the\section@numR R}%
  \l@dend@stuff}

\newif\ifbypage@R
\newif\ifbypstart@R
  \bypage@Rfalse
  \bypstart@Rfalse
\newcommand*{\lineationR}[1]{{%
  \ifnumbering
    \led@err@LineationInNumbered
  \else
    \def\@tempa{#1}\def\@tempb{page}%
    \ifx\@tempa\@tempb
        \global\bypage@Rtrue
        \global\bypstart@Rfalse
    \else
       \def\@tempb{pstart}%
       \ifx\@tempa\@tempb
           \global\bypage@Rfalse
           \global\bypstart@Rtrue
       \else
           \def@tempb{section}
           \ifx\@tempa\@tempb
           \global\bypage@Rfalse
           \global\bypstart@Rfalse
           \else
             \led@warn@BadLineation
        \fi
       \fi
    \fi
  \fi}}
\newcount\line@marginR
\renewcommand*{\linenummargin}[1]{{%
  \l@dgetline@margin{#1}%
  \ifnum\@l@dtempcntb>\m@ne
    \ifledRcol
      \global\line@marginR=\@l@dtempcntb
    \else
      \global\line@margin=\@l@dtempcntb
    \fi
  \fi}}
\line@marginR=\@ne

\newcounter{firstlinenumR}
  \setcounter{firstlinenumR}{5}
\newcounter{linenumincrementR}
  \setcounter{linenumincrementR}{5}
\newcounter{firstsublinenumR}
  \setcounter{firstsublinenumR}{5}
\newcounter{sublinenumincrementR}
  \setcounter{sublinenumincrementR}{5}

\providecommand*{\firstlinenum}{}
\providecommand*{\linenumincrement}{}
\providecommand*{\firstsublinenum}{}
\providecommand*{\sublinenumincrement}{}
\renewcommand*{\firstlinenum}[1]{%
  \ifledRcol \setcounter{firstlinenumR}{#1}%
  \else      \setcounter{firstlinenum}{#1}%
  \fi}
\renewcommand*{\linenumincrement}[1]{%
  \ifledRcol \setcounter{linenumincrementR}{#1}%
  \else      \setcounter{linenumincrement}{#1}%
  \fi}
\renewcommand*{\firstsublinenum}[1]{%
  \ifledRcol \setcounter{firstsublinenumR}{#1}%
  \else      \setcounter{firstsublinenum}{#1}%
  \fi}
\renewcommand*{\sublinenumincrement}[1]{%
  \ifledRcol \setcounter{sublinenumincrementR}{#1}%
  \else      \setcounter{sublinenumincrement}{#1}%
  \fi}
\WithSuffix\newcommand\firstlinenum*[1]{\setcounter{firstlinenumR}{#1}\setcounter{firstlinenum}{#1}}
\WithSuffix\newcommand\linenumincrement*[1]{\setcounter{linenumincrementR}{#1}\setcounter{linenumincrement}{#1}}
\WithSuffix\newcommand\firstsublinenum*[1]{\setcounter{subfirstlinenumR}{#1}\setcounter{subfirstlinenum}{#1}}
\WithSuffix\newcommand\sublinenumincrement*[1]{\setcounter{sublinenumincrementR}{#1}\setcounter{sublinenumincrement}{#1}}
\newcommand*{\Rlineflag}{R}

\newcommand*{\linenumrepR}[1]{\@arabic{#1}}
\newcommand*{\sublinenumrepR}[1]{\@arabic{#1}}

\newcommand*{\leftlinenumR}{%
  \l@dlinenumR
  \kern\linenumsep}
\newcommand*{\rightlinenumR}{%
  \kern\linenumsep
  \l@dlinenumR}
\newcommand*{\l@dlinenumR}{%
  \numlabfont\linenumrepR{\line@numR}\Rlineflag%
  \ifsublines@
    \ifnum\subline@num>\z@
      \unskip\fullstop\sublinenumrepR{\subline@numR}%
    \fi
  \fi}

\newcount\line@numR
\newcount\subline@numR
\newcount\absline@numR

\list@create{\line@listR}
\list@create{\insertlines@listR}
\list@create{\actionlines@listR}
\list@create{\actions@listR}

\list@create{\linesinpar@listL}
\list@create{\linesinpar@listR}
\list@create{\maxlinesinpar@list}

\newcount\page@numR

\renewcommand*{\read@linelist}[1]{%
  \ifledRcol
    \list@clear{\line@listR}%
    \list@clear{\insertlines@listR}%
    \list@clear{\actionlines@listR}%
    \list@clear{\actions@listR}%
    \list@clear{\linesinpar@listR}%
    \list@clear{\linesonpage@listR}
  \else
    \list@clearing@reg
    \list@clear{\linesinpar@listL}%
    \list@clear{\linesonpage@listL}%
  \fi
  \list@clear{\maxlinesinpar@list}
  \get@linelistfile{#1}%
  \endgroup
  \ifledRcol
    \global\page@numR=\m@ne
    \ifx\actionlines@listR\empty
      \gdef\next@actionlineR{1000000}%
    \else
      \gl@p\actionlines@listR\to\next@actionlineR
      \gl@p\actions@listR\to\next@actionR
    \fi
  \else
    \global\page@num=\m@ne
    \ifx\actionlines@list\empty
      \gdef\next@actionline{1000000}%
    \else
      \gl@p\actionlines@list\to\next@actionline
      \gl@p\actions@list\to\next@action
    \fi
  \fi}

\newcommand{\@l@regR}{%
  \ifx\l@dchset@num\relax \else
    \advance\absline@numR \@ne
    \set@line@action
    \let\l@dchset@num\relax
    \advance\absline@numR \m@ne
    \advance\line@numR \m@ne%   % do we need this?
  \fi
  \advance\absline@numR \@ne
  \ifx\next@page@numR\relax \else
    \page@action
    \let\next@page@numR\relax
  \fi
  \ifx\sub@change\relax \else
    \ifnum\sub@change>\z@
      \sublines@true
    \else
      \sublines@false
    \fi
    \sub@action
    \let\sub@change\relax
  \fi
  \ifcase\@lockR
  \or
    \@lockR \tw@
  \or\or
    \@lockR \z@
  \fi
  \ifcase\sub@lockR
  \or
    \sub@lockR \tw@
  \or\or
    \sub@lockR \z@
  \fi
  \ifsublines@
    \ifnum\sub@lockR<\tw@
      \advance\subline@numR \@ne
    \fi
  \else
    \ifnum\@lockR<\tw@
      \advance\line@numR \@ne \subline@numR \z@
    \fi
  \fi}

\renewcommand*{\@l}[2]{%
  \fix@page{#1}%
  \ifledRcol
    \@l@regR
  \else
    \@l@reg
  \fi}

\newcount\last@page@numR
  \last@page@numR=-10000
\renewcommand*{\fix@page}[1]{%
  \ifledRcol
    \ifnum #1=\last@page@numR
    \else
      \ifbypage@R
        \line@numR \z@ \subline@numR \z@
      \fi
      \page@numR=#1\relax
      \last@page@numR=#1\relax
      \def\next@page@numR{#1}%
    \fi
  \else
    \ifnum #1=\last@page@num
    \else
      \ifbypage@
        \line@num \z@ \subline@num \z@
      \fi
      \page@num=#1\relax
      \last@page@num=#1\relax
      \def\next@page@num{#1}%
      \listcsxadd{normal@page@break}{\the\absline@num}
    \fi
  \fi}

\renewcommand*{\@adv}[1]{%
  \ifsublines@
    \ifledRcol
      \advance\subline@numR by #1\relax
      \ifnum\subline@numR<\z@
        \led@warn@BadAdvancelineSubline
        \subline@numR \z@
      \fi
    \else
      \advance\subline@num by #1\relax
      \ifnum\subline@num<\z@
        \led@warn@BadAdvancelineSubline
        \subline@num \z@
      \fi
    \fi
  \else
    \ifledRcol
      \advance\line@numR by #1\relax
      \ifnum\line@numR<\z@
        \led@warn@BadAdvancelineLine
        \line@numR \z@
      \fi
    \else
      \advance\line@num by #1\relax
      \ifnum\line@num<\z@
        \led@warn@BadAdvancelineLine
        \line@num \z@
      \fi
    \fi
  \fi
  \set@line@action}

\renewcommand*{\@set}[1]{%
  \ifledRcol
    \ifsublines@
      \subline@numR=#1\relax
    \else
      \line@numR=#1\relax
    \fi
    \set@line@action
  \else
    \ifsublines@
      \subline@num=#1\relax
    \else
      \line@num=#1\relax
    \fi
    \set@line@action
  \fi}

\renewcommand*{\l@d@set}[1]{%
  \ifledRcol
    \line@numR=#1\relax
    \advance\line@numR \@ne
    \def\l@dchset@num{#1}
  \else
    \line@num=#1\relax
    \advance\line@num \@ne
    \def\l@dchset@num{#1}
  \fi}
\let\l@dchset@num\relax

\renewcommand*{\page@action}{%
  \ifledRcol
    \xright@appenditem{\the\absline@numR}\to\actionlines@listR
    \xright@appenditem{\next@page@numR}\to\actions@listR
  \else
    \xright@appenditem{\the\absline@num}\to\actionlines@list
    \xright@appenditem{\next@page@num}\to\actions@list
  \fi}
\renewcommand*{\set@line@action}{%
  \ifledRcol
    \xright@appenditem{\the\absline@numR}\to\actionlines@listR
    \ifsublines@
       \@l@dtempcnta=-\subline@numR
    \else
       \@l@dtempcnta=-\line@numR
    \fi
    \advance\@l@dtempcnta by -5000\relax
    \xright@appenditem{\the\@l@dtempcnta}\to\actions@listR
  \else
    \xright@appenditem{\the\absline@num}\to\actionlines@list
    \ifsublines@
       \@l@dtempcnta=-\subline@num
    \else
       \@l@dtempcnta=-\line@num
    \fi
    \advance\@l@dtempcnta by -5000\relax
    \xright@appenditem{\the\@l@dtempcnta}\to\actions@list
  \fi}

\renewcommand*{\sub@action}{%
  \ifledRcol
    \xright@appenditem{\the\absline@numR}\to\actionlines@listR
    \ifsublines@
      \xright@appenditem{-1001}\to\actions@listR
    \else
      \xright@appenditem{-1002}\to\actions@listR
    \fi
  \else
    \xright@appenditem{\the\absline@num}\to\actionlines@list
    \ifsublines@
      \xright@appenditem{-1001}\to\actions@list
    \else
      \xright@appenditem{-1002}\to\actions@list
    \fi
  \fi}

\newcount\@lockR
\newcount\sub@lockR

\newcommand*{\do@lockonR}{%
  \xright@appenditem{\the\absline@numR}\to\actionlines@listR
  \ifsublines@
    \xright@appenditem{-1005}\to\actions@listR
    \ifnum\sub@lockR=\z@
      \sub@lockR \@ne
    \else
      \ifnum\sub@lockR=\thr@@
        \sub@lockR \@ne
      \fi
    \fi
  \else
    \xright@appenditem{-1003}\to\actions@listR
    \ifnum\@lockR=\z@
      \@lockR \@ne
    \else
      \ifnum\@lockR=\thr@@
        \@lockR \@ne
      \fi
    \fi
  \fi}

\renewcommand*{\do@lockon}{%
  \ifx\next\lock@off
    \global\let\lock@off=\skip@lockoff
  \else
    \ifledRcol
      \do@lockonR
    \else
      \do@lockonL
    \fi
  \fi}

\newcommand{\do@lockoffR}{%
  \xright@appenditem{\the\absline@numR}\to\actionlines@listR
  \ifsublines@
    \xright@appenditem{-1006}\to\actions@listR
    \ifnum\sub@lockR=\tw@
      \sub@lockR \thr@@
    \else
      \sub@lockR \z@
    \fi
  \else
    \xright@appenditem{-1004}\to\actions@listR
    \ifnum\@lockR=\tw@
      \@lockR \thr@@
    \else
      \@lockR \z@
    \fi
  \fi}

\renewcommand*{\do@lockoff}{%
  \ifledRcol
    \do@lockoffR
  \else
    \do@lockoffL
  \fi}
\global\let\lock@off=\do@lockoff

\providecommand*{\n@num}{}
\renewcommand*{\n@num}{%
  \ifledRcol
    \xright@appenditem{\the\absline@numR}\to\actionlines@listR
    \xright@appenditem{-1007}\to\actions@listR
  \else
    \n@num@reg
  \fi}

\newcount\insert@countR
\renewcommand*{\@ref}[2]{%
  \ifledRcol
    \global\insert@countR=#1\relax
    \loop\ifnum\insert@countR>\z@
      \xright@appenditem{\the\absline@numR}\to\insertlines@listR
      \global\advance\insert@countR \m@ne
    \repeat
  \begingroup
    \let\@ref=\dummy@ref
    \let\page@action=\relax
    \let\sub@action=\relax
    \let\set@line@action=\relax
    \let\@lab=\relax
    #2
    \global\endpage@num=\page@numR
    \global\endline@num=\line@numR
    \global\endsubline@num=\subline@numR
  \endgroup
    \xright@appenditem%
      {\the\page@numR|\the\line@numR|%
       \ifsublines@ \the\subline@numR \else 0\fi|%
       \the\endpage@num|\the\endline@num|%
       \ifsublines@ \the\endsubline@num \else 0\fi}\to\line@listR
  #2
  \else
    \@ref@reg{#1}{#2}%
  \fi}
\providecommand*{\@pend}[1]{}
\renewcommand*{\@pend}[1]{%
  \ifbypstart@\global\line@num=0\fi%
  \xright@appenditem{#1}\to\linesinpar@listL}
\providecommand*{\@pendR}[1]{}
\renewcommand*{\@pendR}[1]{%
  \ifbypstart@R\global\line@numR=0\fi
  \xright@appenditem{#1}\to\linesinpar@listR}

\providecommand*{\@lopL}[1]{}
\renewcommand*{\@lopL}[1]{%
  \xright@appenditem{#1}\to\linesonpage@listL}
\providecommand*{\@lopR}[1]{}
\renewcommand*{\@lopR}[1]{%
  \xright@appenditem{#1}\to\linesonpage@listR}

\newwrite\linenum@outR
\newif\iffirst@linenum@out@R
  \first@linenum@out@Rtrue
\newcommand*{\line@list@stuffR}[1]{%
  \read@linelist{#1}%
  \iffirst@linenum@out@R
     \immediate\closeout\linenum@outR
     \global\first@linenum@out@Rfalse
     \immediate\openout\linenum@outR=#1
  \else
    \if@minipage%
      \if@ledgroup%
        \closeout\linenum@outR
        \openout\linenum@outR=#1
      \else
        \immediate\closeout\linenum@outR
        \immediate\openout\linenum@outR=#1\relax
      \fi
    \else
       \closeout\linenum@outR%
       \openout\linenum@outR=#1\relax%
    \fi
  \fi}

\newcommand*{\new@lineL}{%
  \write\linenum@out{\string\@l[\the\c@page][\thepage]}}
\newcommand*{\new@lineR}{%
  \write\linenum@outR{\string\@l[\the\c@page][\thepage]}}
\renewcommand*{\flag@start}{%
  \ifledRcol
    \edef\next{\write\linenum@outR{%
                  \string\@ref[\the\insert@countR][}}%
    \next
  \else
    \edef\next{\write\linenum@out{%
                  \string\@ref[\the\insert@count][}}%
    \next
  \fi}
\renewcommand*{\flag@end}{%
  \ifledRcol
    \write\linenum@outR{]}%
  \else
    \write\linenum@out{]}%
  \fi}
\renewcommand*{\startsub}{\dimen0\lastskip
  \ifdim\dimen0>0pt \unskip \fi
  \ifledRcol \write\linenum@outR{\string\sub@on}%
  \else      \write\linenum@out{\string\sub@on}%
  \fi
  \ifdim\dimen0>0pt \hskip\dimen0 \fi}
\def\endsub{\dimen0\lastskip
  \ifdim\dimen0>0pt \unskip \fi
  \ifledRcol \write\linenum@outR{\string\sub@off}%
  \else      \write\linenum@out{\string\sub@off}%
  \fi
  \ifdim\dimen0>0pt \hskip\dimen0 \fi}

\renewcommand*{\advanceline}[1]{%
  \ifledRcol \write\linenum@outR{\string\@adv[#1]}%
  \else      \write\linenum@out{\string\@adv[#1]}%
  \fi}
\renewcommand*{\setline}[1]{%
  \ifnum#1<\z@
    \led@warn@BadSetline
  \else
    \ifledRcol \write\linenum@outR{\string\@set[#1]}%
    \else      \write\linenum@out{\string\@set[#1]}%
    \fi
  \fi}
\renewcommand*{\setlinenum}[1]{%
  \ifnum#1<\z@
    \led@warn@BadSetlinenum
  \else
    \ifledRcol \write\linenum@outR{\string\l@d@set[#1]}
    \else      \write\linenum@out{\string\l@d@set[#1]} \fi
  \fi}

\renewcommand*{\startlock}{%
  \ifledRcol \write\linenum@outR{\string\lock@on}%
  \else      \write\linenum@out{\string\lock@on}%
  \fi}
\def\endlock{%
  \ifledRcol \write\linenum@outR{\string\lock@off}%
  \else      \write\linenum@out{\string\lock@off}%
  \fi}

\renewcommand*{\skipnumbering}{%
  \ifledRcol \write\linenum@outR{\string\n@num}%
             \advanceline{-1}%
  \else
    \skipnumbering@reg
  \fi}

\long\def\critext#1#2/{\leavevmode
  \begingroup
    \renewcommand{\@tag}{\no@expands #1}%
    \set@line
    \ifledRcol \global\insert@countR \z@
    \else      \global\insert@count \z@ \fi
    \ignorespaces #2\relax
    \@ifundefined{xpg@main@language}{%if not polyglossia
       \flag@start}%
       {\if@RTL\flag@end\else\flag@start\fi% be careful on the direction of writing with polyglossia
       }%
  \endgroup
  \showlemma{#1}%
  \ifx\end@lemmas\empty \else
    \gl@p\end@lemmas\to\x@lemma
    \x@lemma
    \global\let\x@lemma=\relax
  \fi
  \@ifundefined{xpg@main@language}{%if not polyglossia
       \flag@end}%
       {\if@RTL\flag@start\else\flag@end\fi% be careful on the direction of writing with polyglossia
       }
  }
\renewcommand{\edtext}[2]{\leavevmode
  \begingroup%
    \renewcommand{\@tag}{\no@expands #1}%
    \set@line%
    \ifledRcol \global\insert@countR \z@%
    \else      \global\insert@count \z@ \fi%
    \ignorespaces #2\relax%
    \@ifundefined{xpg@main@language}{%if not polyglossia
       \flag@start}%
       {\if@RTL\flag@end\else\flag@start\fi% be careful on the direction of writing with polyglossia
       }%
  \endgroup%
  \showlemma{#1}%
  \ifx\end@lemmas\empty \else%
    \gl@p\end@lemmas\to\x@lemma%
    \x@lemma%
    \global\let\x@lemma=\relax%
  \fi%
  \@ifundefined{xpg@main@language}{%if not polyglossia
       \flag@end}%
       {\if@RTL\flag@start\else\flag@end\fi% be careful on the direction of writing with polyglossia
       }%
}

\renewcommand*{\set@line}{%
  \ifledRcol
    \ifx\line@listR\empty
      \global\noteschanged@true
      \xdef\l@d@nums{000|000|000|000|000|000|\edfont@info}%
    \else
      \gl@p\line@listR\to\@tempb
      \xdef\l@d@nums{\@tempb|\edfont@info}%
      \global\let\@tempb=\undefined
    \fi
  \else
    \ifx\line@list\empty
      \global\noteschanged@true
      \xdef\l@d@nums{000|000|000|000|000|000|\edfont@info}%
    \else
      \gl@p\line@list\to\@tempb
      \xdef\l@d@nums{\@tempb|\edfont@info}%
      \global\let\@tempb=\undefined
    \fi
  \fi}

\newenvironment{pairs}{%}
  \l@dpairingtrue
  \l@dpagingfalse
}{%
  \l@dpairingfalse
}
\newenvironment{pages}{%
 \let\oldchapter\chapter
 \let\chapter\chapterinpages
  \l@dpairingtrue
  \l@dpagingtrue
  \setlength{\Lcolwidth}{\textwidth}%
  \setlength{\Rcolwidth}{\textwidth}%
}{%
  \l@dpairingfalse
  \l@dpagingfalse
  \let\chapter\oldchapter
}
\newcommand{\chapterinpages}{\thispagestyle{plain}%
                    \global\@topnum\z@
                    \@afterindentfalse
                    \secdef\@chapter\@schapter}

 \newif\ifinstanzaL
 \newif\ifinstanzaR
\newenvironment{Leftside}{%
  \ledRcolfalse
  \let\beginnumbering\beginnumbering\setcounter{pstartL}{1}
  \let\pstart\pstartL
  \let\thepstart\thepstartL
  \let\pend\pendL
  \let\memorydump\memorydumpL
  \Leftsidehook
  \let\oldstanza\stanza
  \renewcommand{\stanza}{\oldstanza\global\instanzaLtrue}
}{
    \let\stanza\oldstanza
    \Leftsidehookend}
\newcommand*{\Leftsidehook}{}
\newcommand*{\Leftsidehookend}{}
\newcommand*{\Rightsidehook}{}
\newcommand*{\Rightsidehookend}{}

\newenvironment{Rightside}{%
  \ledRcoltrue
  \let\beginnumbering\beginnumberingR
  \let\endnumbering\endnumberingR
  \let\pausenumbering\pausenumberingR
  \let\resumenumbering\resumenumberingR
  \let\memorydump\memorydumpR
  \let\thepstart\thepstartR
  \let\pstart\pstartR
  \let\pend\pendR
  \let\ledpb\ledpbR
  \let\lednopb\lednopbR
  \let\lineation\lineationR
  \Rightsidehook
  \let\oldstanza\stanza
  \renewcommand{\stanza}{\oldstanza\global\instanzaRtrue}
}{%
  \ledRcolfalse
  \let\stanza\oldstanza
  \Rightsidehookend
}

\newcount\num@linesR
\newbox\one@lineR
\newcount\par@lineR

\newcounter{pstartL}
\newcounter{pstartLold}
\renewcommand{\thepstartL}{{\bfseries\@arabic\c@pstartL}. }
\newcounter{pstartR}
\newcounter{pstartRold}
\renewcommand{\thepstartR}{{\bfseries\@arabic\c@pstartR}. }

\newcommand*{\pstartL}{%
\if@nobreak%
    \let\@oldnobreak\@nobreaktrue%
\else%
    \let\@oldnobreak\@nobreakfalse%
\fi%
    \@nobreaktrue%
  \ifnumbering \else%
    \led@err@PstartNotNumbered%
    \beginnumbering%
  \fi%
  \ifnumberedpar@%
    \led@err@PstartInPstart%
    \pend%
  \fi%
  \ifpst@rtedL\else%
      \setcounter{pstartLold}{\value{pstartL}}%
    \list@clear{\inserts@list}%
    \global\let\next@insert=\empty%
     \global\pst@rtedLtrue%
  \fi%
  \begingroup\normal@pars%
  \global\advance\l@dnumpstartsL \@ne%
  \ifnum\l@dnumpstartsL>\l@dc@maxchunks%
    \led@err@TooManyPstarts%
    \global\l@dnumpstartsL=\l@dc@maxchunks%
  \fi%
  \global\setnamebox{l@dLcolrawbox\the\l@dnumpstartsL}=\vbox\bgroup%
  \ifautopar\else%
    \ifnumberpstart%
      \ifsidepstartnum%
        \else%
         \thepstartL%
        \fi%
       \fi%
      \fi%
  \hsize=\Lcolwidth%
  \numberedpar@true%
  \iflabelpstart\protected@edef\@currentlabel%
       {\p@pstartL\thepstartL}\fi%
  }
\newcommand*{\pstartR}{%
\if@nobreak%
    \let\@oldnobreak\@nobreaktrue%
\else%
    \let\@oldnobreak\@nobreakfalse%
\fi%
    \@nobreaktrue%
  \ifnumberingR \else%
    \led@err@PstartNotNumbered%
    \beginnumberingR%
  \fi%
  \ifnumberedpar@%
    \led@err@PstartInPstart%
    \pendR%
  \fi%
  \ifpst@rtedR\else%
      \setcounter{pstartRold}{\value{pstartR}}%
    \list@clear{\inserts@listR}%
    \global\let\next@insertR=\empty%
    \global\pst@rtedRtrue%
  \fi%
  \begingroup\normal@pars%
  \global\advance\l@dnumpstartsR \@ne%
  \ifnum\l@dnumpstartsR>\l@dc@maxchunks%
    \led@err@TooManyPstarts%
    \global\l@dnumpstartsR=\l@dc@maxchunks%
  \fi%
  \global\setnamebox{l@dRcolrawbox\the\l@dnumpstartsR}=\vbox\bgroup%
    \ifautopar\else%
      \ifnumberpstart%
        \ifsidepstartnum\else%
          \thepstartR%
         \fi%
        \fi%
       \fi%
  \hsize=\Rcolwidth%
  \numberedpar@true%
   \iflabelpstart\protected@edef\@currentlabel%
       {\p@pstartR\thepstartR}\fi%
  }
\newcommand*{\pendL}{\ifnumbering \else%
    \led@err@PendNotNumbered%
  \fi%
  \ifnumberedpar@ \else%
    \led@err@PendNoPstart%
  \fi%
  \l@dzeropenalties%
  \endgraf\global\num@lines=\prevgraf\egroup%
  \global\par@line=0%
  \endgroup%
  \ignorespaces%
  \@oldnobreak%
    \ifnumberpstart%
    \addtocounter{pstartL}{1}%
    \fi}

\newcommand*{\pendR}{\ifnumberingR \else%
    \led@err@PendNotNumbered%
  \fi%
  \ifnumberedpar@ \else%
    \led@err@PendNoPstart%
  \fi%
  \l@dzeropenalties%
  \endgraf\global\num@linesR=\prevgraf\egroup%
  \global\par@lineR=0%
  \endgroup%
  \ignorespaces%
  \@oldnobreak%
    \ifnumberpstart%
    \addtocounter{pstartR}{1}%
    \fi%
}

\newbox\l@dleftbox
\newbox\l@drightbox

\newcount\countLline
  \countLline \z@
\newcount\countRline
  \countRline \z@

\newcount\@donereallinesL
\newcount\@donetotallinesL
\newcount\@donereallinesR
\newcount\@donetotallinesR

\newcommand*{\do@lineL}{%
  \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}
                           to\baselineskip}%
  \unvbox\one@line \global\setbox\one@line=\lastbox
  \getline@numL
\ifnum\@lock>\@ne\inserthangingsymboltrue\else\inserthangingsymbolfalse\fi
  \setbox\l@dleftbox
  \hb@xt@ \Lcolwidth{%
      \affixpstart@numL
    \affixline@num
    \l@dld@ta
    \add@inserts
    \affixside@note
    \l@dlsn@te
    {\ledllfill\hb@xt@ \wd\one@line{\do@insidelineLhook\inserthangingsymbolL\new@lineL\l@dunhbox@line{\one@line}}\correcthangingL\ledrlfill\l@drd@ta%
     \l@drsn@te
  }}%
  \add@penaltiesL
  \global\advance\@donereallinesL\@ne
  \global\advance\@donetotallinesL\@ne
\else
  \setbox\l@dleftbox \hb@xt@ \Lcolwidth{\hspace*{\Lcolwidth}}%
  \global\advance\@donetotallinesL\@ne
\fi}

\newcommand*{\do@lineLhook}{}
\newcommand*{\do@lineRhook}{}
\newcommand*{\do@insidelineLhook}{}
\newcommand*{\do@insidelineRhook}{}

\newcommand*{\do@lineR}{%
  \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}
                           to\baselineskip}%
  \unvbox\one@lineR \global\setbox\one@lineR=\lastbox
  \getline@numR
\ifnum\@lockR>\@ne\inserthangingsymbolRtrue\else\inserthangingsymbolRfalse\fi
  \setbox\l@drightbox
  \hb@xt@ \Rcolwidth{%
      \affixpstart@numR
    \affixline@numR
    \l@dld@ta
    \add@insertsR
    \affixside@noteR
    \l@dlsn@te
    {\correcthangingR\ledllfill\hb@xt@ \wd\one@lineR{\do@insidelineRhook\inserthangingsymbolR\new@lineR\l@dunhbox@line{\one@lineR}}\ledrlfill\l@drd@ta%
     \l@drsn@te
  }}%
  \add@penaltiesR
  \global\advance\@donereallinesR\@ne
  \global\advance\@donetotallinesR\@ne
\else
  \setbox\l@drightbox \hb@xt@ \Rcolwidth{\hspace*{\Rcolwidth}}
  \global\advance\@donetotallinesR\@ne
\fi}

\newcommand*{\getline@numR}{%
  \global\advance\absline@numR \@ne
  \do@actionsR
  \do@ballastR
\ifnumberline
  \ifsublines@
    \ifnum\sub@lockR<\tw@
      \global\advance\subline@numR \@ne
    \fi
  \else
    \ifnum\@lockR<\tw@
      \global\advance\line@numR \@ne
      \global\subline@numR \z@
    \fi
  \fi
\fi
}
\newcommand*{\getline@numL}{%
    \global\advance\absline@num \@ne
  \do@actions
  \do@ballast
\ifnumberline
  \ifsublines@
     \ifnum\sub@lock<\tw@
       \global\advance\subline@num \@ne
     \fi
  \else
     \ifnum\@lock<\tw@
       \global\advance\line@num \@ne
       \global\subline@num \z@
     \fi
  \fi
\fi
}

\newcommand*{\do@ballastR}{\global\ballast@count=\z@
  \begingroup
    \advance\absline@numR \@ne
    \ifnum\next@actionlineR=\absline@numR
      \ifnum\next@actionR>-1001
        \global\advance\ballast@count by -\c@ballast
       \fi
     \fi
  \endgroup}
\newcommand*{\do@actions@fixedcodeR}{%
  \ifcase\@l@dtempcnta%
  \or%                     % 1001
    \global\sublines@true
  \or%                     % 1002
    \global\sublines@false
  \or%                     % 1003
    \global\@lockR=\@ne
  \or%                     % 1004
    \ifnum\@lockR=\tw@
      \global\@lockR=\thr@@
    \else
      \global\@lockR=\z@
    \fi
  \or%                     % 1005
     \global\sub@lockR=\@ne
  \or%                     % 1006
    \ifnum\sub@lockR=\tw@
      \global\sub@lockR=\thr@@
    \else
      \global\sub@lockR=\z@
    \fi
  \or%                     % 1007
    \l@dskipnumbertrue
  \else
    \led@warn@BadAction
  \fi}

\newcommand*{\do@actionsR}{%
  \global\let\do@actions@nextR=\relax
  \@l@dtempcntb=\absline@numR
  \ifnum\@l@dtempcntb<\next@actionlineR\else
    \ifnum\next@actionR>-1001\relax
      \global\page@numR=\next@actionR
      \ifbypage@R
        \global\line@numR \z@  \global\subline@numR \z@
      \fi
    \else
      \ifnum\next@actionR<-4999\relax   %  9/05 added relax here
        \@l@dtempcnta=-\next@actionR
        \advance\@l@dtempcnta by -5001\relax
        \ifsublines@
          \global\subline@numR=\@l@dtempcnta
        \else
          \global\line@numR=\@l@dtempcnta
        \fi
      \else
        \@l@dtempcnta=-\next@actionR
        \advance\@l@dtempcnta by -1000\relax
        \do@actions@fixedcodeR
      \fi
    \fi
    \ifx\actionlines@listR\empty
      \gdef\next@actionlineR{1000000}%
    \else
      \gl@p\actionlines@listR\to\next@actionlineR
      \gl@p\actions@listR\to\next@actionR
      \global\let\do@actions@nextR=\do@actionsR
    \fi
  \fi
  \do@actions@nextR}


\providecommand*{\l@dcalcnum}[3]{%
  \ifnum #1 > #2\relax
    \@l@dtempcnta = #1\relax
    \advance\@l@dtempcnta by -#2\relax
    \divide\@l@dtempcnta by #3\relax
    \multiply\@l@dtempcnta by #3\relax
    \advance\@l@dtempcnta by #2\relax
  \else
    \@l@dtempcnta=#2\relax
  \fi}

\newcommand*{\ch@cksub@l@ckR}{%
  \ifcase\sub@lockR
  \or
    \ifnum\sublock@disp=\@ne
      \@l@dtempcntb \z@  \@l@dtempcnta \@ne
    \fi
  \or
    \ifnum\sublock@disp=\tw@
    \else
      \@l@dtempcntb \z@  \@l@dtempcnta \@ne
    \fi
  \or
    \ifnum\sublock@disp=\z@
      \@l@dtempcntb \z@  \@l@dtempcnta \@ne
    \fi
  \fi}

\newcommand*{\ch@ck@l@ckR}{%
  \ifcase\@lockR
  \or
    \ifnum\lock@disp=\@ne
      \@l@dtempcntb \z@  \@l@dtempcnta \@ne
    \fi
  \or
    \ifnum\lock@disp=\tw@
    \else
      \@l@dtempcntb \z@  \@l@dtempcnta \@ne
    \fi
  \or
    \ifnum\lock@disp=\z@
      \@l@dtempcntb \z@  \@l@dtempcnta \@ne
    \fi
  \fi}

\newcommand*{\f@x@l@cksR}{%
  \ifcase\@lockR
  \or
    \global\@lockR \tw@
  \or \or
    \global\@lockR \z@
  \fi
  \ifcase\sub@lockR
  \or
    \global\sub@lockR \tw@
  \or \or
    \global\sub@lockR \z@
  \fi}

\newcommand*{\affixline@numR}{%
\ifnumberline
\ifl@dskipnumber
  \global\l@dskipnumberfalse
\else
  \ifsublines@
    \@l@dtempcntb=\subline@numR
    \l@dcalcnum{\subline@numR}{\c@firstsublinenumR}{\c@sublinenumincrementR}%
    \ch@cksub@lockR
  \else
    \@l@dtempcntb=\line@numR
    \ifx\linenumberlist\empty
      \l@dcalcnum{\line@numR}{\c@firstlinenumR}{\c@linenumincrementR}%
    \else
      \@l@dtempcnta=\line@numR
      \edef\rem@inder{,\linenumberlist,\number\line@numR,}%
        \edef\sc@n@list{\def\noexpand\sc@n@list
        ####1,\number\@l@dtempcnta,####2|{\def\noexpand\rem@inder{####2}}}%
      \sc@n@list\expandafter\sc@n@list\rem@inder|%
        \ifx\rem@inder\empty\advance\@l@dtempcnta\@ne\fi
     \fi
     \ch@ck@l@ckR
  \fi
  \ifnum\@l@dtempcnta=\@l@dtempcntb
    \if@twocolumn
      \if@firstcolumn
        \gdef\l@dld@ta{\llap{{\leftlinenumR}}}%
      \else
        \gdef\l@drd@ta{\rlap{{\rightlinenumR}}}%
      \fi
    \else
      \@l@dtempcntb=\line@marginR
      \ifnum\@l@dtempcntb>\@ne
        \advance\@l@dtempcntb by\page@numR
      \fi
      \ifodd\@l@dtempcntb
        \gdef\l@drd@ta{\rlap{{\rightlinenumR}}}%
      \else
        \gdef\l@dld@ta{\llap{{\leftlinenumR}}}%
      \fi
    \fi
  \fi
  \f@x@l@cksR
\fi
\fi}

\newcommand*{\affixpstart@numL}{%
\ifsidepstartnum
\if@twocolumn
     \if@firstcolumn
       \gdef\l@dld@ta{\llap{{\leftpstartnumL}}}%
     \else
       \gdef\l@drd@ta{\rlap{{\rightpstartnumL}}}%
     \fi
    \else
      \@l@dtempcntb=\line@margin
     \ifnum\@l@dtempcntb>\@ne
       \advance\@l@dtempcntb \page@num
     \fi
     \ifodd\@l@dtempcntb
       \gdef\l@drd@ta{\rlap{{\rightpstartnumL}}}%
     \else
       \gdef\l@dld@ta{\llap{{\leftpstartnumL}}}%
     \fi
    \fi
\fi
}
\newcommand*{\affixpstart@numR}{%
\ifsidepstartnum
\if@twocolumn
     \if@firstcolumn
       \gdef\l@dld@ta{\llap{{\leftpstartnumR}}}%
     \else
       \gdef\l@drd@ta{\rlap{{\rightpstartnumR}}}%
     \fi
    \else
      \@l@dtempcntb=\line@marginR
     \ifnum\@l@dtempcntb>\@ne
       \advance\@l@dtempcntb \page@numR
     \fi
     \ifodd\@l@dtempcntb
       \gdef\l@drd@ta{\rlap{{\rightpstartnumR}}}%
     \else
       \gdef\l@dld@ta{\llap{{\leftpstartnumR}}}%
     \fi
    \fi
\fi
}

\newcommand*{\leftpstartnumL}{
\ifpstartnum
\thepstartL
\kern\linenumsep\global\pstartnumfalse\fi
}
\newcommand*{\rightpstartnumL}{
\ifpstartnum\kern\linenumsep
\thepstartL
\global\pstartnumfalse\fi
}
\newif\ifpstartnumR
\pstartnumRtrue
\newcommand*{\leftpstartnumR}{
\ifpstartnumR
\thepstartR
\kern\linenumsep\global\pstartnumRfalse\fi
}
\newcommand*{\rightpstartnumR}{
\ifpstartnumR\kern\linenumsep
\thepstartR
\global\pstartnumRfalse\fi
}
\list@create{\inserts@listR}
\newcommand*{\add@insertsR}{%
  \global\let\add@inserts@nextR=\relax
  \ifx\inserts@listR\empty \else
    \ifx\next@insertR\empty
      \ifx\insertlines@listR\empty
        \global\noteschanged@true
        \gdef\next@insertR{100000}%
      \else
        \gl@p\insertlines@listR\to\next@insertR
      \fi
    \fi
    \ifnum\next@insertR=\absline@numR
      \gl@p\inserts@listR\to\@insertR
      \@insertR
      \global\let\@insertR=\undefined
      \global\let\next@insertR=\empty
      \global\let\add@inserts@nextR=\add@insertsR
    \fi
  \fi
  \add@inserts@nextR}

\newcommand*{\add@penaltiesL}{}
\newcommand*{\add@penaltiesR}{}

\newcommand*{\flush@notesR}{%
  \@xloop
    \ifx\inserts@listR\empty \else
      \gl@p\inserts@listR\to\@insertR
      \@insertR
      \global\let\@insertR=\undefined
  \repeat}

\def\printlinesR#1|#2|#3|#4|#5|#6|#7|{\begingroup
  \setprintlines{#1}{#2}{#3}{#4}{#5}{#6}%
  \ifl@d@pnum #1\fullstop\fi
  \ifledplinenum \linenumr@p{#2}\Rlineflag\else \symplinenum\fi
  \ifl@d@ssub \fullstop \sublinenumr@p{#3}\fi
  \ifl@d@dash \endashchar\fi
  \ifl@d@pnum #4\fullstop\fi
  \ifl@d@elin \linenumr@p{#5}\Rlineflag\fi
  \ifl@d@esl \ifl@d@elin \fullstop\fi \sublinenumr@p{#6}\fi
\endgroup}

\let\ledsavedprintlines\printlines

\list@create{\labelref@listR}

\renewcommand*{\edlabel}[1]{\@bsphack
  \ifledRcol
    \write\linenum@outR{\string\@lab}%
    \ifx\labelref@listR\empty
      \xdef\label@refs{\zz@@@}%
    \else
      \gl@p\labelref@listR\to\label@refs
    \fi
    \ifvmode
        \advancelabel@refs
    \fi
    \protected@write\@auxout{}%
      {\string\l@dmake@labelsR\space\thepage|\label@refs|{#1}}%
  \else
    \write\linenum@out{\string\@lab}%
    \ifx\labelref@list\empty
      \xdef\label@refs{\zz@@@}%
    \else
      \gl@p\labelref@list\to\label@refs
    \fi
    \ifvmode
        \advancelabel@refs
    \fi
  \protected@write\@auxout{}%
    {\string\l@dmake@labels\space\thepage|\label@refs|{#1}}%
  \fi
  \@esphack}

\def\l@dmake@labelsR#1|#2|#3|#4{%
  \expandafter\ifx\csname the@label#4\endcsname \relax\else
    \led@warn@DuplicateLabel{#4}%
  \fi
  \expandafter\gdef\csname the@label#4\endcsname{#1|#2\Rlineflag|#3}%
  \ignorespaces}
\AtBeginDocument{%
  \def\l@dmake@labelsR#1|#2|#3|#4{}%
}

\renewcommand*{\@lab}{%
  \ifledRcol
    \xright@appenditem{\linenumr@p{\line@numR}|%
      \ifsublines@ \sublinenumr@p{\subline@numR}\else 0\fi}%
      \to\labelref@listR
  \else
    \xright@appenditem{\linenumr@p{\line@num}|%
      \ifsublines@ \sublinenumr@p{\subline@num}\else 0\fi}%
      \to\labelref@list
  \fi}

\newcount\sidenote@marginR
\renewcommand*{\sidenotemargin}[1]{{%
  \l@dgetsidenote@margin{#1}%
  \ifnum\@l@dtempcntb>\m@ne
    \ifledRcol
      \global\sidenote@marginR=\@l@dtempcntb
    \else
      \global\sidenote@margin=\@l@dtempcntb
    \fi
  \fi}}
\sidenotemargin{right}
\global\sidenote@margin=\@ne

\renewcommand*{\l@dlsnote}[1]{%
  \begingroup%
  \newcommand{\content}{#1}%
  \ifnumberedpar@
    \ifledRcol%
      \xright@appenditem{\noexpand\vl@dlsnote{\csexpandonce{content}}}%
                         \to\inserts@listR
      \global\advance\insert@countR \@ne%
    \else%
      \xright@appenditem{\noexpand\vl@dlsnote{\csexpandonce{content}}}%
                         \to\inserts@list
      \global\advance\insert@count \@ne%
    \fi
  \fi\ignorespaces\endgroup}
\renewcommand*{\l@drsnote}[1]{%
  \begingroup%
  \newcommand{\content}{#1}%
  \ifnumberedpar@
    \ifledRcol%
      \xright@appenditem{\noexpand\vl@drsnote{\csexpandonce{content}}}%
                         \to\inserts@listR
       \global\advance\insert@countR \@ne%
    \else%
      \xright@appenditem{\noexpand\vl@drsnote{\csexpandonce{content}}}%
                         \to\inserts@list
      \global\advance\insert@count \@ne%
    \fi
  \fi\ignorespaces\endgroup}
\renewcommand*{\l@dcsnote}[1]{%
  \begingroup%
  \newcommand{\content}{#1}%
  \ifnumberedpar@
    \ifledRcol%
      \xright@appenditem{\noexpand\vl@dcsnote{\csexpandonce{content}}}%
                         \to\inserts@listR
       \global\advance\insert@countR \@ne%
    \else%
      \xright@appenditem{\noexpand\vl@dcsnote{\csexpandonce{content}}}%
                         \to\inserts@list
      \global\advance\insert@count \@ne%
    \fi
  \fi\ignorespaces\endgroup}

\newcommand*{\affixside@noteR}{%
    \def\sidenotecontent@{}%
    \numdef{\itemcount@}{0}%
    \def\do##1{%
        \ifnumequal{\itemcount@}{0}%
            {%
            \appto\sidenotecontent@{##1}}% Not print not separator before the 1st note
            {\appto\sidenotecontent@{\sidenotesep ##1}%
            }%
            \numdef{\itemcount@}{\itemcount@+1}%
    }%
    \dolistloop{\l@dcsnotetext}%
    \ifnumgreater{\itemcount@}{1}{\eledmac@warning{\itemcount@\space sidenotes on line \the\line@numR R p. \the\page@numR,}}{}%
  \gdef\@templ@d{}%
  \ifx\@templ@d\l@dcsnotetext \else%
    \if@twocolumn%
      \if@firstcolumn%
        \setl@dlp@rbox{\sidenotecontent@}%
      \else%
        \setl@drp@rbox{\sidenotecontent@}%
      \fi%
    \else%
      \@l@dtempcntb=\sidenote@marginR%
      \ifnum\@l@dtempcntb>\@ne%
        \advance\@l@dtempcntb by\page@num%
      \fi%
      \ifodd\@l@dtempcntb%
        \setl@drp@rbox{\sidenotecontent@t}%
      \else%
        \setl@dlp@rbox{\sidenotecontent@}%
      \fi%
    \fi%
  \fi}

\renewcommand{\l@dbfnote}[1]{%
  \ifnumberedpar@
  \gdef\@tag{#1}%
    \ifledRcol%
      \xright@appenditem{\noexpand\vl@dbfnote{{\csexpandonce{@tag}}}{\@thefnmark}}%
                         \to\inserts@listR
       \global\advance\insert@countR \@ne%
    \else%
      \xright@appenditem{\noexpand\vl@dbfnote{{\csexpandonce{@tag}}}{\@thefnmark}}%
                         \to\inserts@list
      \global\advance\insert@count \@ne%
    \fi
  \fi\ignorespaces}

\renewcommand{\normalbfnoteX}[2]{%
  \ifnumberedpar@
    \ifledRcol%
      \ifluatex
          \footnotelang@lua[R]%
      \fi
      \@ifundefined{xpg@main@language}%if polyglossia
{}%
{\footnotelang@poly[R]}%
      \protected@csxdef{thisfootnote}{\csuse{thefootnote#1}}%
      \xright@appenditem{\noexpand\vbfnoteX{#1}{#2}{\csexpandonce{thisfootnote}}}%
                         \to\inserts@listR
       \global\advance\insert@countR \@ne%
    \else%
      \ifluatex
          \footnotelang@lua%
      \fi
      \@ifundefined{xpg@main@language}%if polyglossia
{}%
{\footnotelang@poly}%
      \protected@csxdef{thisfootnote}{\csuse{thefootnote#1}}%
      \xright@appenditem{\noexpand\vbfnoteX{#1}{#2}{\csexpandonce{thisfootnote}}}%
                         \to\inserts@list
      \global\advance\insert@count \@ne%
    \fi
  \fi\ignorespaces}


\newif\ifinserthangingsymbolR
\newcommand{\inserthangingsymbolL}{%
\ifinserthangingsymbol%
    \ifinstanzaL%
        \hangingsymbol%
    \fi%
\fi}
\newcommand{\inserthangingsymbolR}{%
\ifinserthangingsymbolR%
    \ifinstanzaR%
        \hangingsymbol%
    \fi%
\fi}
\newcommand{\correcthangingL}{%
\ifl@dpaging\else%
    \ifinstanzaL%
        \ifinserthangingsymbol%
            \hskip \@ifundefined{sza@0@}{0}{\expandafter%
                   \noexpand\csname sza@0@\endcsname}\stanzaindentbase%
        \fi%
    \fi%
\fi}

\newcommand{\correcthangingR}{%
\ifl@dpaging\else%
    \ifinstanzaR%
        \ifinserthangingsymbolR%
            \hskip \@ifundefined{sza@0@}{0}{\expandafter%
                   \noexpand\csname sza@0@\endcsname}\stanzaindentbase%
        \fi%
    \fi%
\fi}
  \chardef\next=\catcode`\&
  \catcode`\&=\active

\newenvironment{astanza}{%
  \startstanzahook
  \catcode`\&\active
  \global\stanza@count\@ne\stanza@modulo\@ne
  \ifnum\usenamecount{sza@0@}=\z@
    \let\stanza@hang\relax
    \let\endlock\relax
  \else
%%%    \interlinepenalty\@M % this screws things up, but I don't know why
    \rightskip\z@ plus 1fil\relax
  \fi
  \ifnum\usenamecount{szp@0@}=\z@
    \let\sza@penalty\relax
  \fi
  \def&{%
    \endlock\mbox{}%
    \sza@penalty
    \global\advance\stanza@count\@ne
    \@astanza@line}%
  \def\&{%
    \endlock\mbox{}
    \pend
    \endstanzaextra}%
  \pstart
  \@astanza@line
}{}

\newcommand*{\@astanza@line}{%
  \ifnum\value{stanzaindentsrepetition}=0
      \parindent=\csname sza@\number\stanza@count
               @\endcsname\stanzaindentbase
  \else
      \parindent=\csname sza@\number\stanza@modulo
               @\endcsname\stanzaindentbase
      \managestanza@modulo
  \fi
  \par
  \stanza@hang%\mbox{}%
  \ignorespaces}

  \catcode`\&=\next

\providecommand*{\newnamebox}[1]{%
  \expandafter\newbox\csname #1\endcsname}
\providecommand*{\setnamebox}[1]{%
  \expandafter\setbox\csname #1\endcsname}
\providecommand*{\unhnamebox}[1]{%
  \expandafter\unhbox\csname #1\endcsname}
\providecommand*{\unvnamebox}[1]{%
  \expandafter\unvbox\csname #1\endcsname}
\providecommand*{\namebox}[1]{%
                     \csname #1\endcsname}

\providecommand*{\newnamecount}[1]{%
  \expandafter\newcount\csname #1\endcsname}
\providecommand*{\usenamecount}[1]{%
                       \csname #1\endcsname}

\newcount\l@dc@maxchunks
\newcommand{\maxchunks}[1]{\l@dc@maxchunks=#1}
  \maxchunks{5120}

\newcount\l@dnumpstartsR

\newcount\l@dpscL
\newcount\l@dpscR

\newcommand*{\l@dsetuprawboxes}{%
  \@l@dtempcntb=\l@dc@maxchunks
  \loop\ifnum\@l@dtempcntb>\z@
    \newnamebox{l@dLcolrawbox\the\@l@dtempcntb}
    \newnamebox{l@dRcolrawbox\the\@l@dtempcntb}
    \advance\@l@dtempcntb \m@ne
  \repeat}

\newcommand*{\l@dsetupmaxlinecounts}{%
  \@l@dtempcntb=\l@dc@maxchunks
  \loop\ifnum\@l@dtempcntb>\z@
    \newnamecount{l@dmaxlinesinpar\the\@l@dtempcntb}
    \advance\@l@dtempcntb \m@ne
  \repeat}
\newcommand*{\l@dzeromaxlinecounts}{%
  \begingroup
  \@l@dtempcntb=\l@dc@maxchunks
  \loop\ifnum\@l@dtempcntb>\z@
    \global\usenamecount{l@dmaxlinesinpar\the\@l@dtempcntb}=\z@
    \advance\@l@dtempcntb \m@ne
  \repeat
  \endgroup}

\AtBeginDocument{%
  \l@dsetuprawboxes
  \l@dsetupmaxlinecounts
  \l@dzeromaxlinecounts
  \l@dnumpstartsL=\z@
  \l@dnumpstartsR=\z@
  \l@dpscL=\z@
  \l@dpscR=\z@}

\newif\ifl@dusedbabel
  \l@dusedbabelfalse
\newif\ifl@dsamelang
  \l@dsamelangtrue
\newcommand*{\l@dchecklang}{%
  \l@dsamelangfalse
  \edef\@tempa{\theledlanguageL}\edef\@temp{\theledlanguageR}%
  \ifx\@tempa\@tempb
    \l@dsamelangtrue
  \fi}

\newcommand*{\l@dbbl@set@language}[1]{%
  \edef\languagename{#1}%
  \select@language{\languagename}%
  \if@filesw
    \protected@write\@auxout{}{\string\select@language{\languagename}}%
    \addtocontents{toc}{\string\select@language{\languagename}}%
    \addtocontents{lof}{\string\select@language{\languagename}}%
    \addtocontents{lot}{\string\select@language{\languagename}}%
  \fi}

\providecommand{\selectlanguage}[1]{}
\newcommand*{\l@duselanguage}[1]{}
\gdef\theledlanguageL{}
\gdef\theledlanguageR{}

\AtBeginDocument{%
  \@ifundefined{xpg@main@language}{%
    \@ifundefined{bbl@main@language}{%
    \l@dusedbabelfalse
    \renewcommand*{\selectlanguage}[1]{}}{%
    \l@dusedbabeltrue
    \let\l@doldselectlanguage\selectlanguage
    \let\l@doldbbl@set@language\bbl@set@language
    \let\bbl@set@language\l@dbbl@set@language
    \renewcommand{\selectlanguage}[1]{%
      \l@doldselectlanguage{#1}%
      \ifledRcol \gdef\theledlanguageR{#1}%
      \else      \gdef\theledlanguageL{#1}%
      \fi}
    \renewcommand*{\l@duselanguage}[1]{%
      \l@doldselectlanguage{#1}}
    \gdef\theledlanguageL{\bbl@main@language}%
    \gdef\theledlanguageR{\bbl@main@language}%
    }%
   }
  {    \apptocmd{\xpg@set@language}{%
        \ifledRcol \gdef\theledlanguageR{#1}%
        \else      \gdef\theledlanguageL{#1}%
        \fi}%
      \let\l@duselanguage\xpg@set@language
      \gdef\theledlanguageL{\xpg@main@language}%
      \gdef\theledlanguageR{\xpg@main@language}%
}}
\newcommand*{\Columns}{%
  \setcounter{pstartL}{\value{pstartLold}}
  \setcounter{pstartR}{\value{pstartRold}}
  \ifnum\l@dnumpstartsL=\l@dnumpstartsR\else
    \led@err@BadLeftRightPstarts{\the\l@dnumpstartsL}{\the\l@dnumpstartsR}%
  \fi
  \begingroup
    \l@dzeropenalties
    \endgraf\global\num@lines=\prevgraf
            \global\num@linesR=\prevgraf
    \global\par@line=\z@
    \global\par@lineR=\z@
    \global\l@dpscL=\z@
    \global\l@dpscR=\z@
    \check@pstarts
    \loop\if@pstarts
        \global\pstartnumtrue
        \global\pstartnumRtrue
      \global\advance\l@dpscL \@ne
      \global\advance\l@dpscR \@ne
      \checkraw@text
      \l@dchecklang
{        \loop\ifaraw@text
          \ifl@dsamelang
            \do@lineL
            \do@lineR
          \else
            \l@duselanguage{\theledlanguageL}%
            \do@lineL
            \l@duselanguage{\theledlanguageR}%
            \do@lineR
          \fi
          \hb@xt@ \hsize{%
           \hfill \unhbox\l@dleftbox
            \hfill \columnseparator  \hfill
            \unhbox\l@drightbox
          }%
          \checkraw@text
          \checkverseL
          \checkverseR
          \checkpb@columns
        \repeat}
      \@writelinesinparL
      \@writelinesinparR
      \check@pstarts
            \ifbypstart@
           \write\linenum@out{\string\@set[1]}
           \resetprevline@
        \fi
       \ifbypstart@R
           \write\linenum@outR{\string\@set[1]}
           \resetprevline@
        \fi
      \addtocounter{pstartL}{1}
      \addtocounter{pstartR}{1}
    \repeat
    \flush@notes
    \flush@notesR
  \endgroup
  \global\l@dpscL=\z@
  \global\l@dpscR=\z@
  \global\l@dnumpstartsL=\z@
  \global\l@dnumpstartsR=\z@
  \ignorespaces
    \global\instanzaLfalse
    \global\instanzaRfalse}


\newcommand{\checkpb@columns}{%
    \newif\if@pb
    \newif\if@nopb
    \IfStrEq{\led@pb@setting}{before}{
    \numdef{\next@absline}{\the\absline@num+1}%
    \numdef{\next@abslineR}{\the\absline@numR+1}%
  \xifinlistcs{\next@absline}{l@prev@pb}{\@pbtrue}{}%
  \xifinlistcs{\next@abslineR}{l@prev@pbR}{\@pbtrue}{}
  \xifinlistcs{\next@absline}{l@prev@nopb}{\@nopbtrue}{}%
  \xifinlistcs{\next@abslineR}{l@prev@nopbR}{\@nopbtrue}{}
  }{}
    \IfStrEq{\led@pb@setting}{after}{
  \xifinlistcs{\the\absline@num}{l@prev@pb}{\@pbtrue}{}%
  \xifinlistcs{\the\absline@numR}{l@prev@pbR}{\@pbtrue}{}
  \xifinlistcs{\the\absline@num}{l@prev@nopb}{\@nopbtrue}{}%
  \xifinlistcs{\the\absline@numR}{l@prev@nopbR}{\@nopbtrue}{}
  }{}
\if@nopb\nopagebreak[4]\enlargethispage{\baselineskip}\fi
\if@pb\pagebreak[4]\fi
}
\newcommand*{\columnseparator}{%
  \smash{\rule[-0.2\baselineskip]{\columnrulewidth}{1.05\baselineskip}}}
\newdimen\columnrulewidth
  \columnrulewidth=\z@

\newif\if@pstarts
\newcommand*{\check@pstarts}{%
  \@pstartsfalse
  \ifnum\l@dnumpstartsL>\l@dpscL
    \@pstartstrue
  \else
    \ifnum\l@dnumpstartsR>\l@dpscR
      \@pstartstrue
    \fi
  \fi
}

\newif\ifaraw@text
  \araw@textfalse
\newcommand*{\checkraw@text}{%
  \araw@textfalse
  \ifvbox\namebox{l@dLcolrawbox\the\l@dpscL}
    \araw@texttrue
  \else
    \ifvbox\namebox{l@dRcolrawbox\the\l@dpscR}
      \araw@texttrue
    \fi
  \fi
}

\newcommand*{\@writelinesinparL}{%
  \edef\next{%
    \write\linenum@out{\string\@pend[\the\@donereallinesL]}}%
  \next
  \global\@donereallinesL \z@}
\newcommand*{\@writelinesinparR}{%
  \edef\next{%
    \write\linenum@outR{\string\@pendR[\the\@donereallinesR]}}%
  \next
  \global\@donereallinesR \z@}

\newcount\numpagelinesL
\newcount\numpagelinesR
\newcount\l@dminpagelines

\newcommand*{\Pages}{%
  \setcounter{pstartL}{\value{pstartLold}}
  \setcounter{pstartR}{\value{pstartRold}}
  \typeout{}
  \typeout{*************************** PAGES ***************************}
  \ifnum\l@dnumpstartsL=\l@dnumpstartsR\else
    \led@err@BadLeftRightPstarts{\the\l@dnumpstartsL}{\the\l@dnumpstartsR}%
  \fi
  \cleartol@devenpage
  \begingroup
    \l@dzeropenalties
    \endgraf\global\num@lines=\prevgraf
            \global\num@linesR=\prevgraf
    \global\par@line=\z@
    \global\par@lineR=\z@
    \global\l@dpscL=\z@
    \global\l@dpscR=\z@
    \writtenlinesLfalse
    \writtenlinesRfalse
    \check@pstarts
    \loop\if@pstarts
      \global\advance\l@dpscL \@ne
      \global\advance\l@dpscR \@ne
      \getlinesfromparlistL
      \getlinesfromparlistR
      \l@dcalc@maxoftwo{\@cs@linesinparL}{\@cs@linesinparR}%
          {\usenamecount{l@dmaxlinesinpar\the\l@dpscL}}%
      \check@pstarts
    \repeat
    \global\l@dpscL=\z@
    \global\l@dpscR=\z@
    \getlinesfrompagelistL
    \getlinesfrompagelistR
    \l@dcalc@minoftwo{\@cs@linesonpageL}{\@cs@linesonpageR}%
        {\l@dminpagelines}%
    \check@pstarts
    \if@pstarts
      \global\advance\l@dpscL \@ne
      \global\advance\l@dpscR \@ne
      \global\@donereallinesL=\z@
      \global\@donetotallinesL=\z@
      \global\@donereallinesR=\z@
      \global\@donetotallinesR=\z@
      \checkraw@text
{        \loop\ifaraw@text
          \checkpageL
          \l@duselanguage{\theledlanguageL}%
%%%          \begingroup
{            \loop\ifl@dsamepage

              \do@lineL
              \advance\numpagelinesL \@ne
              \ifshiftedpstarts
                      \ifdim\ht\l@dleftbox>0pt\hb@xt@ \hsize{\ledstrutL\unhbox\l@dleftbox}\fi%
              \else%
                      \hb@xt@ \hsize{\ledstrutL\unhbox\l@dleftbox}%
              \fi

              \get@nextboxL
              \checkpageL
              \checkverseL
              \checkpbL
            \repeat
            \ifl@dpagefull
              \@writelinesonpageL{\the\numpagelinesL}%
            \else
              \@writelinesonpageL{1000}%
            \fi
            \numpagelinesL \z@
            \clearl@dleftpage }%
          \checkpageR
          \l@duselanguage{\theledlanguageR}%
{            \loop\ifl@dsamepage
              \do@lineR
              \advance\numpagelinesR \@ne
              \ifshiftedpstarts
                      \ifdim\ht\l@drightbox>0pt\hb@xt@ \hsize{\ledstrutR\unhbox\l@drightbox}\fi%
              \else%
                      \hb@xt@ \hsize{\ledstrutR\unhbox\l@drightbox}%
              \fi
              \get@nextboxR
              \checkpageR
              \checkverseR
              \checkpbR
            \repeat
            \ifl@dpagefull
              \@writelinesonpageR{\the\numpagelinesR}%
            \else
              \@writelinesonpageR{1000}%
            \fi
            \numpagelinesR=\z@
            \clearl@drightpage}
          \checkraw@text
          \ifaraw@text
            \getlinesfrompagelistL
            \getlinesfrompagelistR
            \l@dcalc@minoftwo{\@cs@linesonpageL}{\@cs@linesonpageR}%
                             {\l@dminpagelines}%
          \fi
        \repeat}
    \fi
    \flush@notes
    \flush@notesR
  \endgroup
  \global\l@dpscL=\z@
  \global\l@dpscR=\z@
  \global\l@dnumpstartsL=\z@
  \global\l@dnumpstartsR=\z@
    \global\instanzaLfalse
    \global\instanzaRfalse
  \ignorespaces}

\newcommand*{\ledstrutL}{\strut}
\newcommand*{\ledstrutR}{\strut}

\providecommand{\cleartoevenpage}[1][\@empty]{%
  \clearpage
  \ifodd\c@page\hbox{}#1\clearpage\fi}
\newcommand*{\cleartol@devenpage}{%
  \ifdim\pagetotal<\topskip%  on an empty page
  \else
    \clearpage
  \fi
  \ifodd\c@page\hbox{}\clearpage\fi}
\newcommand*{\clearl@dleftpage}{%
  \clearpage
  \ifodd\c@page\else
    \led@err@LeftOnRightPage
    \hbox{}%
    \cleardoublepage
  \fi}
\newcommand*{\clearl@drightpage}{%
  \clearpage
  \ifodd\c@page
    \led@err@RightOnLeftPage
    \hbox{}%
    \cleartoevenpage
  \fi}

\newcommand*{\getlinesfromparlistL}{%
  \ifx\linesinpar@listL\empty
    \gdef\@cs@linesinparL{0}%
  \else
    \gl@p\linesinpar@listL\to\@cs@linesinparL
  \fi}
\newcommand*{\getlinesfromparlistR}{%
  \ifx\linesinpar@listR\empty
    \gdef\@cs@linesinparR{0}%
  \else
    \gl@p\linesinpar@listR\to\@cs@linesinparR
  \fi}

\newcommand*{\getlinesfrompagelistL}{%
  \ifx\linesonpage@listL\empty
    \gdef\@cs@linesonpageL{1000}%
  \else
    \gl@p\linesonpage@listL\to\@cs@linesonpageL
  \fi}
\newcommand*{\getlinesfrompagelistR}{%
  \ifx\linesonpage@listR\empty
    \gdef\@cs@linesonpageR{1000}%
  \else
    \gl@p\linesonpage@listR\to\@cs@linesonpageR
  \fi}

\newcommand*{\@writelinesonpageL}[1]{%
  \edef\next{\write\linenum@out{\string\@lopL{#1}}}%
  \next}
\newcommand*{\@writelinesonpageR}[1]{%
  \edef\next{\write\linenum@outR{\string\@lopR{#1}}}%
  \next}

\newcommand*{\l@dcalc@maxoftwo}[3]{%
  \ifnum #2>#1\relax
    #3=#2\relax
  \else
    #3=#1\relax
  \fi}
\newcommand*{\l@dcalc@minoftwo}[3]{%
  \ifnum #2<#1\relax
    #3=#2\relax
  \else
    #3=#1\relax
  \fi}

\newif\ifl@dsamepage
  \l@dsamepagetrue
\newif\ifl@dpagefull

\newcommand*{\checkpageL}{%
  \l@dpagefulltrue
  \l@dsamepagetrue
  \check@goal
  \ifdim\pagetotal<\ledthegoal
    \ifnum\numpagelinesL<\l@dminpagelines
    \else
      \l@dsamepagefalse
      \l@dpagefullfalse
    \fi
  \else
    \l@dsamepagefalse
    \l@dpagefulltrue
  \fi}
\newcommand*{\checkpageR}{%
  \l@dpagefulltrue
  \l@dsamepagetrue
  \check@goal
  \ifdim\pagetotal<\ledthegoal
    \ifnum\numpagelinesR<\l@dminpagelines
    \else
      \l@dsamepagefalse
      \l@dpagefullfalse
    \fi
  \else
    \l@dsamepagefalse
    \l@dpagefulltrue
  \fi}

\newcommand{\checkpbL}{
   \IfStrEq{\led@pb@setting}{after}{
     \xifinlistcs{\the\absline@num}{l@prev@pb}{\l@dpagefulltrue\l@dsamepagefalse}{}
     \xifinlistcs{\the\absline@num}{l@prev@nopb}{\l@dpagefullfalse\l@dsamepagetrue}{}
   }{}
   \IfStrEq{\led@pb@setting}{before}{
     \numdef{\next@absline}{\the\absline@num+1}
     \xifinlistcs{\next@absline}{l@prev@pb}{\l@dpagefulltrue\l@dsamepagefalse}{}
     \xifinlistcs{\next@absline}{l@prev@nopb}{\l@dpagefullfalse\l@dsamepagetrue}{}
   }{}
}

\newcommand{\checkpbR}{
   \IfStrEq{\led@pb@setting}{after}{
     \xifinlistcs{\the\absline@numR}{l@prev@pbR}{\l@dpagefulltrue\l@dsamepagefalse}{}
     \xifinlistcs{\the\absline@numR}{l@prev@nopbR}{\l@dpagefullfalse\l@dsamepagetrue}{}
     }{}
   \IfStrEq{\led@pb@setting}{before}{
     \numdef{\next@abslineR}{\the\absline@numR+1}
     \xifinlistcs{\next@abslineR}{l@prev@pbR}{\l@dpagefulltrue\l@dsamepagefalse}{}
     \xifinlistcs{\next@abslineR}{l@prev@nopbR}{\l@dpagefullfalse\l@dsamepagetrue}{}
   }{}
}
\newcommand{\checkverseL}{
\ifinstanzaL
  \iflednopbinverse
    \ifinserthangingsymbol
      \numgdef{\prev@abslineverse}{\the\absline@num-1}
      \IfStrEq{\led@pb@setting}{after}{\lednopbnum{\prev@abslineverse}}{}
      \IfStrEq{\led@pb@setting}{before}{\ifnum\numpagelinesL<3\ledpbnum{\prev@abslineverse}\fi}{}
    \fi
  \fi
\fi
}
\newcommand{\checkverseR}{
\ifinstanzaR
  \iflednopbinverse
    \ifinserthangingsymbolR
      \numgdef{\prev@abslineverse}{\the\absline@numR-1}
      \IfStrEq{\led@pb@setting}{after}{\lednopbnumR{\prev@abslineverse}}{}
      \IfStrEq{\led@pb@setting}{before}{\ifnum\numpagelinesR<3\ledpbnumR{\prev@abslineverse}\fi}{}
    \fi
  \fi
\fi
}
\newdimen\ledthegoal
\ifshiftedpstarts
       \newcommand*{\goalfraction}{0.95}
\else
       \newcommand*{\goalfraction}{0.9}
\fi

\newcommand*{\check@goal}{%
  \ledthegoal=\goalfraction\pagegoal}

\newif\ifwrittenlinesL
\newif\ifwrittenlinesR

\newcommand*{\get@nextboxL}{%
  \ifvbox\namebox{l@dLcolrawbox\the\l@dpscL}% box is not empty
  \else%                                      box is empty
    \ifnum\usenamecount{l@dmaxlinesinpar\the\l@dpscL}>\@donetotallinesL
    \else
      \ifwrittenlinesL
      \else
        \@writelinesinparL
        \writtenlinesLtrue
      \fi
      \ifnum\l@dnumpstartsL>\l@dpscL
        \writtenlinesLfalse
         \ifbypstart@
          \ifnum\value{pstartL}<\value{pstartLold}
          \else
            \global\line@num=0
            \resetprevline@
          \fi
          \fi
        \addtocounter{pstartL}{1}
        \global\pstartnumtrue
        \l@dcalc@maxoftwo{\the\usenamecount{l@dmaxlinesinpar\the\l@dpscL}}%
                         {\the\@donetotallinesL}%
                         {\usenamecount{l@dmaxlinesinpar\the\l@dpscL}}%
        \global\@donetotallinesL \z@
        \global\advance\l@dpscL \@ne
      \fi
    \fi
  \fi}
\newcommand*{\get@nextboxR}{%
  \ifvbox\namebox{l@dRcolrawbox\the\l@dpscR}% box is not empty
  \else%                                      box is empty
    \ifnum\usenamecount{l@dmaxlinesinpar\the\l@dpscR}>\@donetotallinesR
    \else
      \ifwrittenlinesR
      \else
        \@writelinesinparR
        \writtenlinesRtrue
      \fi
      \ifnum\l@dnumpstartsR>\l@dpscR
        \writtenlinesRfalse
        \ifbypstart@R
            \ifnum\value{pstartR}<\value{pstartRold}
            \else
               \global\line@numR=0
               \resetprevline@
            \fi
        \fi
        \addtocounter{pstartR}{1}
        \global\pstartnumRtrue
        \l@dcalc@maxoftwo{\the\usenamecount{l@dmaxlinesinpar\the\l@dpscR}}%
                         {\the\@donetotallinesR}%
                         {\usenamecount{l@dmaxlinesinpar\the\l@dpscR}}%
        \global\@donetotallinesR \z@
        \global\advance\l@dpscR \@ne
      \fi
    \fi
  \fi}

\def\l@prev@pbR{}
\def\l@prev@nopbR{}
\newcommand{\ledpbR}{\write\linenum@outR{\string\led@pbR}}
\newcommand{\ledpbnumR}[1]{\write\linenum@outR{\string\led@pbnumR{#1}}}
\newcommand{\lednopbR}{\write\linenum@outR{\string\led@nopbR}}
\newcommand{\lednopbnumR}[1]{\write\linenum@outR{\string\led@nopbnumR{#1}}}
\newcommand{\led@pbR}{\listcsxadd{l@prev@pbR}{\the\absline@numR}}
\newcommand{\led@pbnumR}[1]{\listcsxadd{l@prev@pbR}{#1}}
\newcommand{\led@nopbR}{\listcsxadd{l@prev@nopbR}{\the\absline@numR}}
\newcommand{\led@nopbnumR}[1]{\listcsxadd{l@prev@nopbR}{#1}}
\endinput
%%
%% End of file `eledpar.sty'.
