crossrefenum/test/main-test.tex

456 lines
11 KiB
TeX
Raw Normal View History

2024-04-13 09:49:25 +01:00
\usemodule[crossrefenum]
2022-11-13 18:32:36 +00:00
\crfnmOriginalCatcodeAt=\catcode`\@
\catcode`\@=11
\input config-formats
\input format-specific-defs
\catcode`\@=\crfnmOriginalCatcodeAt
\input config-crossrefenum
%\tracingmacros=1
%\tracingcommands=2
%\tracingoutput=2
\showboxbreadth=100
\showboxdepth=50
\def\withvisiblespace{\tt}
\long\def\iflatex#1{%
\expandafter\ifx\csname usepackage\endcsname\relax\else #1\fi
}
\long\def\ifcontext#1{%
\expandafter\ifx\csname contextformat\endcsname\relax\else #1\fi
}
% TODO : verser dans crossrefenum.tex et commenter le code dans le README
\catcode`\@=11
\ifcontext{
\def\crfnm@line{Line}
\def\crfnm@pageline{Pageline}
\crfnm@newListFrom[\crfnm@simpleRefTypes][\crfnm@line] -> \crfnm@simpleRefTypes
\crfnm@newListFrom[\crfnm@doubleRefTypes][\crfnm@pageline] -> \crfnm@doubleRefTypes
\let\crfnm@PagelinePrimary\crfnm@page
\let\crfnm@PagelineSecondary\crfnm@line
\def\crfnm@LineRef#1{\in[lr:b:#1]}
\def\crfnm@getLineNumber#1{\directlua{get_raw_ref_number('lr:b:#1', 'linenumber')}}
\def\crfnmLine{l. }
\def\crfnmLines{ll.}
\def\crfnmLineBeforeLastInSecond{, }
\def\crfnmPagelineSubtypesSep{}
\def\crfnmPagelinePrintFirstPrefix{once}
\def\crfnmLineFormatInSecond#1{\crfnmSuperscript{#1}}
\def\crfnmLinePrintPrefixInSecond{no}
}
\catcode`\@=\crfnmOriginalCatcodeAt
\parindent=0pt
\long\def\crfnmtestenum#1#2#3#4#5{%
\def\crfnmtestdesc{#1}
\def\crfnmempty{}
\ifx\crfnmtestdesc\crfnmempty\else
\vbox{%
\lineskiplimit=10000pt\lineskip=1ex
\parskip=2ex
{\it #1}
\everypar={\leftskip=1em}
\raggedright Enumeration: \crfnmTypesetEnumArg#2{crfnmEnumArgEnd}
Reference type: {\tt #3}
Expected: {\withvisiblespace [#5]}
Result: \hbox to 1.3em{}{\withvisiblespace [\crossrefenum[#3][#4]{#2}]}
}%
\vskip2.5\bigskipamount
\fi
}
\def\crfnmEnumArgEnd{crfnmEnumArgEnd}
\def\crfnmTypesetEnumArg#1{%
\def\crfnmTheArg{#1}%
\ifx\crfnmTheArg\crfnmEnumArgEnd\else
\allowbreak{\tt\detokenize{{#1}}}\expandafter\crfnmTypesetEnumArg
\fi
}
\long\def\crfnmheader#1{{\crfnmsc #1}\nobreak\vglue\baselineskip}
\def\crfnmverbatim#1#2{{\tt\detokenize{#1}}#2}
\iflatex{
\begin{document}
\begin{english}
}
\ifcontext{
\starttext
\language[en]
}
\vfill
\crfnmheader{All references point to different pages}
\crfnmtestenum{Nothing}
{}
{page}
{withprefix}
{p. }
\crfnmtestenum{One single page}
{{matthaeus-14}}
{page}
{withprefix}
{p. 2}
\crfnmtestenum{One single page without prefix}
{{matthaeus-18}}
{page}
{noprefix}
{2}
\crfnmtestenum{Two single pages}
{{matthaeus-14}{matthaeus-025}}
{page}
{withprefix}
{pp. 2 and 4}
\crfnmtestenum{Two single pages without prefix}
{{matthaeus-19}{matthaeus-0210}}
{page}
{noprefix}
{2 and 4}
\crfnmtestenum{More than two single pages}
{{matthaeus-14}{matthaeus-026}{matthaeus-0223}}
{page}
{withprefix}
{pp. 2, 4 and 6}
\crfnmtestenum{One single page again}
{{matthaeus-027}}
{page}
{withprefix}
{p. 4}
\crfnmtestenum{One range}
{{matthaeus-14 to matthaeus-23}}
{page}
{withprefix}
{pp. 2-3}
\crfnmheader{Some references point to the same page}
\crfnmtestenum{One range that returns a single page}
{{matthaeus-027 to matthaeus-029}}
{page}
{withprefix}
{p. 4}
\crfnmtestenum{Two identical pages}
{{matthaeus-026}{matthaeus-028}}
{page}
{withprefix}
{p. 4}
\crfnmtestenum{A range followed by a reference on its end page}
{{matthaeus-2 to matthaeus-15}{matthaeus-16}}
{page}
{withprefix}
{pp. 1-2}
\crfnmtestenum{Two ranges with a common boundary}
{{matthaeus-5 to matthaeus-21}{matthaeus-25 to matthaeus-0214}}
{page}
{withprefix}
{pp. 1-5}
\crfnmtestenum{Two ranges with a common boundary, the second one having boths ends on a single page}
{{matthaeus-5 to matthaeus-21}{matthaeus-25 to matthaeus-022}}
{page}
{withprefix}
{pp. 1-3}
\crfnmtestenum{A range followed by a reference to its end page and a reference to another page}
{{matthaeus-2 to matthaeus-15}{matthaeus-16}{matthaeus-0216}}
{page}
{withprefix}
{pp. 1-2 and 5}
\crfnmtestenum{A range followed by two references to its end page}
{{matthaeus-2 to matthaeus-15}{matthaeus-16}{matthaeus-18}}
{page}
{withprefix}
{pp. 1-2}
\crfnmtestenum{A range preceded by a reference to its begin page}
{{matthaeus-1}{matthaeus-2 to matthaeus-15}}
{page}
{withprefix}
{pp. 1-2}
\crfnmheader{Some references point to successive pages}
\crfnmtestenum{Successive pages forming a range}
{{matthaeus-2}{matthaeus-15}{matthaeus-22}{matthaeus-025}}
{page}
{withprefix}
{pp. 1-4}
\crfnmtestenum{A range followed by a page that extends it}
{{matthaeus-2 to matthaeus-15}{matthaeus-22}}
{page}
{withprefix}
{pp. 1-3}
\crfnmtestenum{A range preceded by a page that extends it}
{{matthaeus-1}{matthaeus-14 to matthaeus-0210}}
{page}
{withprefix}
{pp. 1-4}
\crfnmtestenum{A range extended by another range}
{{matthaeus-2 to matthaeus-15}{matthaeus-22 to matthaeus-025}}
{page}
{withprefix}
{pp. 1-4}
\crfnmheader{References to notes}
\crfnmtestenum{One note}
{{note-Aminadab-undecim}}
{note}
{withprefix}
{n. 1}
\crfnmtestenum{Two notes}
{{note-autem-non}{note-generatio-Persarum}}
{note}
{withprefix}
{nn. 2 and 4}
\crfnmtestenum{Two consecutive notes}
{{note-autem-non}{note-generationes-quis}}
{note}
{withprefix}
{nn. 2 and 3}
\crfnmtestenum{Three consecutive notes}
{{note-congregans-conteram}{note-Israhel-mittam}{note-regem-Theman}}
{note}
{withprefix}
{nn. 1, 2 and 3}
\crfnmheader{References to notes with page number}
\crfnmtestenum{One note with page number}
{{note-Babylonis-Libani}}
{pagenote}
{withprefix}
{p. 2, n. 1}
\def\crfnmPagenoteOrder{inverted}
\crfnmtestenum{Same thing, but with \crfnmverbatim{\crfnmPagenoteOrder} set to {\tt inverted}}
{{note-quaerat-clamate}}
{pagenote}
{withprefix}
{n. 3, p. 5}
\def\crfnmPagenoteOrder{normal}
\crfnmtestenum{Four notes on different pages}
{{note-Aminadab-undecim}{note-generationes-quis}{note-regem-Theman}}
{pagenote}
{withprefix}
{p. 1, n. 1, p. 2, n. 3 and p. 4, n. 3}
\def\crfnmPagenotePrintFirstPrefix{once}
\crfnmtestenum{Same thing, but with \crfnmverbatim{\crfnmPagenotePrintFirstPrefix} set to {\tt once}}
{{note-Aminadab-undecim}{note-generationes-quis}{note-regem-Theman}}
{pagenote}
{withprefix}
{pp. 1, n. 1, 2, n. 3 and 4, n. 3}
\def\crfnmPagenotePrintFirstPrefix{always}
\crfnmtestenum{Several notes on the same page}
{{note-et-et}{note-puerum-et}{note-habitavit-quae}}
{pagenote}
{withprefix}
{p. 6, nn. 1, 3 and 4}
\crfnmtestenum{Same thing, but followed by an isolated reference on another page}
{{note-somnis-hic}{note-cum-haec}{note-quaerat-clamate}}
{pagenote}
{withprefix}
{p. 3, nn. 1 and 2 and p. 5, n. 3}
\def\crfnmPagenoteOrder{inverted}
\crfnmtestenum{Same thing, but with \crfnmverbatim{\crfnmPagenoteOrder} set to {\tt inverted}}
{{note-somnis-hic}{note-cum-haec}{note-quaerat-clamate}{note-obitum-mittite}}
{pagenote}
{withprefix}
{nn. 1 and 2, p. 3 and nn. 3 and 4, p. 5}
\def\crfnmPagenoteOrder{normal}
\iflatex{
\crfnmheader{Reledmac}
\crfnmtestenum{Simple reference to a line}
{{vulgate-12}}
{edline}
{withprefix}
{l. 8}
\crfnmtestenum{Simple reference to page and line}
{{vulgate-14}}
{edpageline}
{withprefix}
{p. 8\crfnmSuperscript{12}}
\crfnmtestenum{Several lines on different pages}
{{vulgate-15}{vulgate-24}{vulgate-215}}
{edpageline}
{withprefix}
{pp. 8\crfnmSuperscript{13}, 9\crfnmSuperscript{15} and 11\crfnmSuperscript{13}}
\crfnmtestenum{A range of lines on a single page}
{{vulgate-22 to vulgate-23}}
{edpageline}
{withprefix}
{p. 9\crfnmSuperscript{9-11}}
\crfnmtestenum{A range of lines on two different pages}
{{vulgate-24 to vulgate-212}}
{edpageline}
{withprefix}
{pp. 9\crfnmSuperscript{15}-11\crfnmSuperscript{6}}
\def\crfnmEdpagelineGroupSubtypes{yes}
\crfnmtestenum{A range of lines on two different pages
with \crfnmverbatim{\crfnmEdpagelineGroupSubtypes} set to {\tt yes}}
{{vulgate-11 to vulgate-215}}
{edpageline}
{withprefix}
{pp. 8-11\crfnmSuperscript{4-13}}
\def\crfnmEdpagelineGroupSubtypes{no}
\crfnmtestenum{Two ranges of lines on the same page that should be merged}
{{vulgate-211 to vulgate-212}{vulgate-213 to vulgate-217}}
{edpageline}
{withprefix}
{p. 11\crfnmSuperscript{4-19}}
\crfnmtestenum{Two ranges of lines on the same page that should not be merged}
{{vulgate-219 to vulgate-221}{vulgate-224 to vulgate-227}}
{edpageline}
{withprefix}
{p. 12\crfnmSuperscript{1-6, 12-19}}
\crfnmtestenum{Two ranges of lines spanning across pages that should be merged}
{{vulgate-214 to vulgate-223}{vulgate-224 to vulgate-233}}
{edpageline}
{withprefix}
{pp. 11\crfnmSuperscript{10}-13\crfnmSuperscript{15}}
\crfnmtestenum{Two ranges of lines on consecutive pages,
the beginning of the second being at the same line number as the end of the first + 1.
They should not be merged, since the document is lineated per page.}
{{vulgate-2 to vulgate-6}{vulgate-14 to vulgate-18}}
{edpageline}
{withprefix}
{pp. 7\crfnmSuperscript{3-11} and 8\crfnmSuperscript{12-20}}
\def\crfnmEdlineNumberingContinuousAcrossDocument{yes}
\crfnmtestenum{Same as the above, but with
\crfnmverbatim{\crfnmEdlineNumberingContinuousAcrossDocument} set to {\tt yes}.
We make {\em crossrefenum} believe that the first range ends at the end of a page
and the second begins at the first line of the following page.}
{{vulgate-2 to vulgate-6}{vulgate-14 to vulgate-18}}
{edpageline}
{withprefix}
{pp. 7\crfnmSuperscript{3}-8\crfnmSuperscript{20}}
\def\crfnmEdlineNumberingContinuousAcrossDocument{no}
\crfnmtestenum{A range of lines whose page boundaries are identical to those of the preceding and following references}
{{vulgate-3}{vulgate-7 to vulgate-20}{vulgate-25}}
{edpageline}
{withprefix}
{pp. 7\crfnmSuperscript{5}, 7\crfnmSuperscript{13}-9\crfnmSuperscript{5} and 9\crfnmSuperscript{17}}
}
\ifcontext{
\crfnmheader{References to lines}
{See the tests on reledmac in the file produced by LaTeX for a more extensive coverage.}\vskip\baselineskip
\crfnmtestenum{Simple reference to a line}
{{soph-2}}
{line}
{withprefix}
{l. 3}
\crfnmtestenum{Simple reference to page and line}
{{soph-5}}
{pageline}
{withprefix}
{p. 7\crfnmSuperscript{9}}
\crfnmtestenum{Several lines on different pages}
{{soph-7}{soph-13}{soph-012}}
{pageline}
{withprefix}
{pp. 7\crfnmSuperscript{12}, 8\crfnmSuperscript{5} and 10\crfnmSuperscript{3}}
\crfnmtestenum{A range of lines on a single page}
{{soph-04 to soph-06}}
{pageline}
{withprefix}
{p. 9\crfnmSuperscript{5-9}}
\crfnmtestenum{A range of lines on two different pages}
{{soph-14 to soph-014}}
{pageline}
{withprefix}
{pp. 8\crfnmSuperscript{8}-10\crfnmSuperscript{6}}
\crfnmtestenum{}
{}
{}
{}
{}
\crfnmtestenum{}
{}
{}
{}
{}
}
\iflatex{\end{english}}
\ifcontext{
\language[latin]
\setupinterlinespace[big]
}
\vfill\penalty-10000
\crfnmresetpage
\input data-common
\iflatex{\input data-reledmac}
\input data-lines
\ifcontext{\stoptext}
\iflatex{
\def\crfnmtheend{\end{document}}
\expandafter\crfnmtheend
}