crossrefenum/test/main-test.tex
2024-04-13 12:35:27 +02:00

456 lines
11 KiB
TeX
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\input ../tex/crossrefenum
\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
}