From 0904e30ef59894e483d50ac5a550070517845b60 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 17 Jun 2015 22:41:46 +0000 Subject: poemscol (17jun15) git-svn-id: svn://tug.org/texlive/trunk@37588 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/poemscol/poemscol.pdf | Bin 559140 -> 582767 bytes .../texmf-dist/source/latex/poemscol/poemscol.dtx | 486 +++++++++++++++++++-- .../texmf-dist/source/latex/poemscol/poemscol.ins | 2 +- Master/texmf-dist/tex/latex/poemscol/poemscol.sty | 244 ++++++++++- 4 files changed, 689 insertions(+), 43 deletions(-) diff --git a/Master/texmf-dist/doc/latex/poemscol/poemscol.pdf b/Master/texmf-dist/doc/latex/poemscol/poemscol.pdf index 200a8290603..477f7fd14e0 100644 Binary files a/Master/texmf-dist/doc/latex/poemscol/poemscol.pdf and b/Master/texmf-dist/doc/latex/poemscol/poemscol.pdf differ diff --git a/Master/texmf-dist/source/latex/poemscol/poemscol.dtx b/Master/texmf-dist/source/latex/poemscol/poemscol.dtx index fe2953bd6cc..9be56367ef4 100644 --- a/Master/texmf-dist/source/latex/poemscol/poemscol.dtx +++ b/Master/texmf-dist/source/latex/poemscol/poemscol.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % !TEX TS-program = dtxmk % -% Copyright (C) 2005 by John Burt +% Copyright (C) 2013 by John Burt % -------------------------------------------------- % % This file may be distributed and/or modified under the @@ -19,7 +19,7 @@ % \iffalse %\NeedsTeXFormat{LaTeX2e}[1997/12/01] %\ProvidesPackage{poemscol} -% [2013/08/20 v2.64 poemscol file] +% [2015/6/18 v2.7 poemscol file] % %<*driver> \documentclass{ltxdoc} @@ -33,7 +33,7 @@ % % \fi % -% \CheckSum{6228} +% \CheckSum{6702} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -201,6 +201,10 @@ % \changes{v2.64}{2013/08/02}{Bug fix: remove extra white space in % custom endnotes for prose sections when notes are in single paragraph mode. Fix % appearance of page number in endnote sections.} +% \changes{v2.65}{2013/12/20}{Modifications to parallel text macros, +% corrections to manual.} +% \changes{v2.66}{2015/5/14}{Change to page styles} +% \changes{v2.7}{2015/6/18}{Improvements to parallel texts.} % % \DoNotIndex{\newcommand,\newenvironment,\def,\edef,\else,\renewcommand,\makeatletter,\makeatother} % \DoNotIndex{\abovedisplayskip,\belowdisplayskip,\abovedisplayshortskip,\belowdisplayshortskip} @@ -231,12 +235,19 @@ % \nobreak, \par, \textbf} % \DoNotIndex{\closeout,\em,\emph,\expandafter,\Huge,\it,\jobname,\kern,\newif, % \newwrite,\p@,\pageref,\renewenvironment,\rm,\scriptsize,\string, -% \textsc, \unskip} \setcounter{IndexColumns}{2} \MakeShortVerb{|} -% \def\fileversion{2.64} \def\filedate{2 August 2013} \def\docdate{2 -% August2013} \title{Typesetting Poetry Collections with +% \textsc, \unskip} +% \setcounter{IndexColumns}{2} +% \MakeShortVerb{|} +% \def\fileversion{2.7} +% \def\filedate{17 June 2015} +% \def\docdate{17 June 2015} +% \title{Typesetting Poetry Collections with % \textsf{poemscol}\thanks{This document corresponds to -% \textsf{poemscol}~\fileversion, dated \filedate.}} \author{John Burt -% \\ \texttt{burt@brandeis.edu}} \date{June 20, 2013} \maketitle +% \textsf{poemscol}~\fileversion, dated \filedate.}} +% \author{John Burt +% \\ \texttt{burt@brandeis.edu}} +% \date{17 June 2015} +% \maketitle % \begin{abstract} \textsf{poemscol} provides macros for \LaTeX\ for % setting collections of poetry. It is especially suited for setting % collections of poetry in which several volumes are combined, such as @@ -393,7 +404,10 @@ % emendations sections also have multiple paragraph notes, you should % re-define them in order to produce footnotes in plain rather than in % para mode, if you wish to produce footnotes rather than endnotes. -% +% \textsf{manyfoot} sometimes gets into conflicts with other packages +% over the number of |\counts| it uses, causeing \LaTeX\ to complain +% that there is no room for a |\newcount|. If this happens, +% issue |\usepackage{etex}| and |\reserveinserts|. % % \subsection{~Verse drama and \textsf{dramatist}} % Massimiliano Dominici has made his \textsf{dramatist} package @@ -440,15 +454,32 @@ % \textsf{memoir} class and the \textsf{verse} package, because they % share some command names. I am preparing a workaround for this % problem. +% +% \subsection{~Parallel Text Editions} If you are using the |\keepttitlestraight| +% hack described below at \ref{parallelhack}, you should add \textsf{etoolbox} +% to your package list. % % \subsection{~Crop marks} % \textsf{poemscol} no longer provides cropmarks, but is compatible with % the style packages that do. I use \textsf{crop}, with the % letter,pdftex,cam, and center options. % +% \subsection{~Conflict with \textsf{BibLaTeX} } +% \BibTeX\ works with \textsf{poemscol} with no problem. But a bug I haven't +% yet tracked down (probably involving |\makeatletter|) +% complicates the use of \textsf{BibLaTeX}. To use \textsf{BibLaTeX} +% you will need to open up the .bbl file. You will find near the top +% the following lines:\\ +% |\makeatletter|\\ +% |\@ifundefined{ver@biblatex.sty}|\\ +% | {\@latex@error|\\ +% |{Missing 'biblatex' package}|\\ +% | {The bibliography requires the 'biblatex' package.}|\\ +% | \aftergroup\endinput}|\\ +% |{}|\\ +% Just comment out these lines and you will be able to use the .bbl file as usual. % -% -% +% % \section{Marking up individual poems} % First, a word about the command names. The command names may seem % ugly and long. And there are separate commands for many tasks that @@ -1950,7 +1981,7 @@ % \section{Customizing page geometry} % % -% \subsection{~Font sizes, skips, sinks indents, and penalties} +% \subsection{~Font sizes, skips, sinks, indents, and penalties} % % \label{changingfontsandleading} % \textsf{poemscol} sets the font sizes, but not the font family, of @@ -2422,7 +2453,8 @@ % verse and chapter, |\biblechapter| and |\bibleverse| are provided % for convenience. -% \section{Parallel Text Editions} +% \section{Parallel Text Editions} \label{parallelhack} +% \subsection{Parallel Texts in Verse} % \textsf{poemscol} does not make parallel texts in which the texts are % set in parallel on the same page, but it can help one make parallel % text editions in which the contrasting versions are set on facing @@ -2444,6 +2476,8 @@ % \DescribeMacro{\finishrectopage} % \DescribeMacro{\startversopage} % \DescribeMacro{\finishversopage} +% \DescribeMacro{\finishparalleltexts} +% \DescribeEnv{parallelverse} % You must begin a region of parallel text on a \emph{verso} page. % Setting parallel texts requires one to redefine the poem and stanza % environments. A parallel text region must begin with @@ -2452,7 +2486,10 @@ % Recto pages should begin with |\startrectopage| and end with % |\finishrectopage|. You have to declare the page breaks manually, % so be sure you are putting the two |\finish| commands in places which -% will work. +% will work. |\finishparalleltexts| just makes certain that stanzas, and poems +% that you opened in a region of parallel texts are closed when you leave it. +% |\startparalleltexts| and |\finishparalleltexts| can be issued on their own +% but I have combined them to make the |parallelverse| environment. % % Although usually with \textsf{poemscol} it is up to you where to put % the marginal line numbers, when you issue |\startparalleltexts| the @@ -2460,6 +2497,59 @@ % margin, line cross references (marking which lines in the recto text % correspond to which lines in the verso text) are in the right margin. % +% \DescribeMacro{\versopoemtitle} +% \DescribeMacro{\rectopoemtitle} +% \DescribeMacro{\versopoemtitlenocontents} +% \DescribeMacro{\rectopoemtitlenocontents} +% If you are making a parallel text edition, you will probably need to +% use |\definenewnotetype| to make the different kinds of endnote +% for the parallel texts. For instance, you may use something like |\rectoexplanatory| +% and |\versoexplanatory| for explanatory notes for the poems on the recto +% and verso pages. Without special care, \textsf{poemscol} may become +% confused about whether it has seen, for example, a |\rectoexplanatory| for +% a particular poem or not, and, if |\settitleinnotes| is set, may neglect to put the +% title in the notes for the first note for that poem. To remedy this, use |\versopoemtitle| +% and |\rectopoemtitle| rather than |\poemtitle| in sections of parallel texts. +% +% \DescribeMacro{\keeptitlestraight} +% \DescribeMacro{\resetitleinnotes} +% While setting parallel texts \textsf{poemscol} checks at the beginning of every +% verso or recto page whether the the different species of endnote for the poem on +% that page has appeared before. On rare occasions this turns out not to be frequently +% enough. In this case, the following hack, |\keeptitlesstraight| will check whether the verso or recto +% poem has set that species of note each time it is issued. Suppose, for instance, +% that you have defined, using |\definenewnotetype|, the following six +% kinds of endnotes: |\versotextnote| |\versoemendation|, |\versoexplanatory|, +% |\rectotextnote|, |\rectoemendation|, and |\rectoexplanatory|. You should +% define a new command called |\keeptitlesstraight| to keep track of these six +% kinds of note. Here is how it might look:\\ +% |\newcommand{\keeptitlesstraight}{|\\ +% |\pretocmd{\versotextnote}{\versotitleinnotescheck}{\relax}{\relax}| +% |\pretocmd{\versoemendation}{\versotitleinnotescheck}{\relax}{\relax}| +% |\pretocmd{\versoexplanatory}{\versotitleinnotescheck}{\relax}{\relax}| +% |\pretocmd{\rectotextnote}{\rectotitleinnotescheck}{\relax}{\relax}| +% |\pretocmd{\rectoemendation}{\rectotitleinnotescheck}{\relax}{\relax}| +% |\pretocmd{\rectoexplanatory}{\rectotitleinnotescheck}{\relax}{\relax}| +% |}|\\ +% All those fields filled with |\relax| are for reporting the success of failure +% |\pretocmd| has had in appending |\versotitleinnotescheck| (or |\rectotitleinnotescheck|) +% to the different endnotes commands. You may wish to replace +% the |\relax| with something like |\typeout{versotextnote modified}| or +% |\typeout{versotextnote not modified}|. +% +% Should a section of non-parallel texts follow a section of parallel texts, you +% will need to issue the following hack after the parallel texts close:\\ +% |\newcommand{\resettitleinnotes}{|\\ +% |\noversoemendationyettrue%|\\ +% |\noversoexplanatoryyettrue%|\\ +% |\noversotextnoteyettrue%|\\ +% |\norectoemendationyettrue%|\\ +% |\norectoexplanatoryyettrue%|\\ +% |\norectotextnoteyettrue%|\\ +% |}| +% +% +% % \DescribeMacro{\synchrolabel} \DescribeMacro{\synchroref} % \DescribeMacro{\setsynchroflag} To mark these cross references, you % need to make a label on the verso side, and a corresponding @@ -2495,6 +2585,36 @@ % \synchroref{Oh what can ail thee, knight at arms?}\verseline % \end{verbatim} % +% \subsection{Parallel Prose Passages} +% \DescribeMacro{\startparalleltextprose} +% \DescribeMacro{\finishparalleltextprose} +% \DescribeMacro{\startversoprosepage} +% \DescribeMacro{\finishversoprosepage} +% \DescribeMacro{\startrectoprosepage} +% \DescribeMacro{\finishrectoprosepage} +% \textsf{poemscol} is not designed to manage long parallel texts in prose, +% but for shorter texts up to a couple of dozen pages, such as +% two versions of an Author's Preface, say, \textsf{poemscol} has the |parallelprose| +% environment. (You can also use |\startparalleltextprose| and |\finishparalleltextprose|.) +% Like passages of parallel text in verse, parallel prose passages must start +% on a verso page. Each verso page must start with |\startversoprosepage| and finish with +% |\finishversoprosepage|, and each recto page must start with |\startrectoprosepage| +% and finish with |\finishrectoprosepage|. If a page continues a paragraph from the previous +% page, say, from a previous recto page, put the beginning of the +% text on the second page right after the |\startrectopage| command. (Alternatively, you could just +% begin that page with |\noindent|.) +% +% \DescribeMacro{\parastart} +% \DescribeMacro{\paraend} +% You must mark the beginning and end of every paragraph in parallel prose passages +% with |\parastart| and |\paraend|. +% +% You will have to pick the page breaks manually, using |\newpage|, once you find where +% \LaTeX\ would naturally break the page. Because how \LaTeX\ justifies text is a little +% unpredictable, however, you may find that the line before the page break, which filled +% the line before you added the page break, is actually a little shorter, and thus is +% no longer justified. To fix this, add an |\hfil| between each word of the last line. +% % \section{Using \textsf{poemscol} in a Multilingual World} % % \begin{sloppypar} @@ -3009,12 +3129,14 @@ \advance\leftmargin\runoverindentvalue} \item[]} {\endlist} +\newif\ifinquotedverse \newenvironment{quotedverse}{% + \inquotedversetrue \let\\=\@centercr% \list{}{\itemsep\z@ \itemindent -\runoverindentvalue\listparindent \itemindent \rightmargin 0sp\leftmargin 0sp\advance\leftmargin \runoverindentvalue}\item[]} - {\endlist} + {\endlist\inquotedversefalse} % rfoverse (flushes runover to right) (Just a placeholder now.) % \newif\ifrfv % \rfvfalse @@ -3190,7 +3312,7 @@ % \begin{macrocode} \fancypagestyle{volumefirststyle}{% \fancyhf{} -\fancyfoot[C]{\hfil{\small \botmark}} +\fancyfoot[C]{\hfil{\small \botmark}\hfil} \renewcommand{\headrulewidth}{0pt} \renewcommand{\footrulewidth}{0pt} } @@ -4526,7 +4648,7 @@ % \end{macro} % \end{macro} % \end{macro} -% \end{macro} +% \end{macro} % % \subsubsection{Poetic Sequences: Setting the Main Title} % \begin{macro}{\sequencetitle} @@ -5658,8 +5780,9 @@ literal#1\endcsname{\begin{multicols}{2}\fi\setlength{\parindent}{-10pt}}% \relax\else \modulolinenumbers[\value{prosemodulo}]% if lineno is called \fi +\newif\ifinprosesection \newenvironment{prosesection} -{\resetlinenumber\begin{linenumbers}% +{\inprosesectiontrue\resetlinenumber\begin{linenumbers}% \renewcommand{\linenumberfont}{\scriptsize}% \ifnumbersright\rightlinenumbers*\setlength{\linenumbersep}{-\marginparsep}% %\else\ifnumbersswitch\switchlinenumbers\setlength{\linenumbersep}{\marginparsep}% @@ -5670,7 +5793,7 @@ literal#1\endcsname{\begin{multicols}{2}\fi\setlength{\parindent}{-10pt}}% \noemendyettrue% \noexplainyettrue% } -{\end{linenumbers}} +{\end{linenumbers}\inprosesectionfalse} \newenvironment{prosesectionnoreset} {\begin{linenumbers}% \renewcommand{\linenumberfont}{\scriptsize} @@ -5796,7 +5919,7 @@ r@#2\endcsname{}{}\@nil % \end{macro} % \begin{macro}{\prosetextnote} % \begin{macrocode} -\newcommand{\proselinelabel}[1]{\unskip\linelabel{#1}} +\newcommand{\proselinelabel}[1]{\ifhmode\unskip\fi\linelabel{#1}} \newcommand{\prosetextnote}[3][0]{% \iftextnoteson% \unskip\proselinelabel{#2}% @@ -6388,7 +6511,6 @@ r@#2\endcsname{}{}\@nil \immediate\write\explanations{\string\noindent\string\kern-#1}% \fi} % \end{macrocode} - % \subsection{~Marking stanza breaks on page turns} Use the macro % below to change the symbol used to mark cases in which there is or is % not a stanza break at a page turn. @@ -6399,16 +6521,15 @@ r@#2\endcsname{}{}\@nil \nostanzaatbottom{\relax} % \end{macrocode} % \subsection{~Parallel Texts} -% First, two utility macros from the memoir class: -% \begin{macro}{\cleartorecto} +% First, three utility macros from the memoir class: +% \begin{macro}{\cleartorecto} % A repeat of |\cleardoublepage|; clears to a recto (odd-numbered) page. % \begin{macrocode} \def\cleartorecto{\clearpage\if@twoside \ifodd\c@page\else \hbox{}\thispagestyle{empty}% \newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi} - % \end{macrocode} -% \end{macro} +% \end{macro} % % \begin{macro}{\cleartoverso} % Clears to a verso (even-numbered) page. @@ -6416,13 +6537,28 @@ r@#2\endcsname{}{}\@nil \def\cleartoverso{\clearpage\if@twoside \ifodd\c@page\hbox{}\thispagestyle{empty}% \newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi} - % \end{macrocode} -% \end{macro} +% \end{macro} % +% +% \begin{macro}{\ifenv} +% Macro for testing whether one is in a particular environment. +% \begin{macrocode} +\makeatletter +\def\ifenv#1{% + \def\reserved@a{#1}% + \ifx\reserved@a\@currenvir + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\makeatother +% \end{macrocode} +% \end{macro} % Macros for forcing the marginal line numbers to the left side or % the right side. These marginal line numbers, unlike those made with -% |\marginpar|, do not float. This code is modelled after code from +% |\marginpar|, do not float. This code is modeled after code from % the memoir class, by Peter Wilson. % % \begin{macro}{\pmclleftsidepar} @@ -6533,6 +6669,24 @@ r@#2\endcsname{}{}\@nil \rectopoemstillopenfalse \newif\ifversopoemstillopen \versopoemstillopenfalse +% the same for prose sections +\newif\ifrectoprosesectionpending +\rectoprosesectionpendingfalse +\newif\ifversoprosesectionpending +\versoprosesectionpendingfalse +\newif\ifrectoprosesectionstillopen +\rectoprosesectionstillopenfalse +\newif\ifversoprosesectionstillopen +\versoprosesectionstillopenfalse +% the same for quoted verse +\newif\ifrectoquotedversepending +\rectoquotedversependingfalse +\newif\ifversoquotedversepending +\versoquotedversependingfalse +\newif\ifrectoquotedversestillopen +\rectoquotedversestillopenfalse +\newif\ifversoquotedversestillopen +\versoquotedversestillopenfalse % \end{macrocode} % A further set of booleans is required for emendations and % explanatory notes. Again the idea is that if a poem is artificially @@ -6632,6 +6786,133 @@ r@#2\endcsname{}{}\@nil \nolinebreak } } +\newenvironment{parallelverse}{\startparalleltexts} +{\finishparalleltexts} +\newtoks{\versotitleholder} +\newtoks{\rectotitleholder} +\newcommand{\makeversotitleholder}[1]{% +\versotitleholder={#1}% +} +\newcommand{\makerectotitleholder}[1]{% +\rectotitleholder={#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\versopoemtitle} +% \begin{macrocode} +\makeatletter +\newcommand{\versopoemtitle}[1]{% +\versoset@p@emtitle{#1}{\poemtitlepenalty}{\poemtitlefont}% +{\relax}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}{\z@}% +\c@ntentsinfo{#1}{\contentsindentone}{\contentspoemtitlefont}% +{\contentsindenttwoamount}% +} +\newcommand{\versoset@p@emtitle}[6]{\setlength{\titleentryoverrun}{#6}% +{#2}% +{#3 \begin{titleentryenvironment}% +{\ifcentertitleson\begin{center}#4 #1\end{center}\else #4 #1\fi}% +\end{titleentryenvironment}}% +{#5}% +\m@kep@emlabel +\versom@ken@teholder{#1}% +\setlength{\titleentryoverrun}{\z@}} +\newcommand{\versom@ken@teholder}[1]{% +\ifsinglelinetitle +\versotitleholder={#1}% +\global\edef\@compoundlabelscratch{poem\thepoemnumber}% +\else\iftitlefirstline + \versotitleholder={#1}% + \global\edef\@compoundlabelscratch{poem\thepoemnumber}% + \else\iftitlemiddleline + \titlesofar=\versotitleholder + \titleincrement={~#1}% + \global\edef\titleconcat{\the\titlesofar \the\titleincrement}% + \versotitleholder=\expandafter{\titleconcat}% + \global\edef\@compoundlabelscratch{poem\thepoemnumber}% + \else + \titlesofar=\versotitleholder + \titleincrement={~#1}% + \global\edef\titleconcat{\the\titlesofar \the\titleincrement}% + \versotitleholder=\expandafter{\titleconcat}% + \global\edef\@compoundlabelscratch{poem\thepoemnumber}% + \fi + \fi + \fi +} +\newcommand{\versotitletoothernotes}{\string\par +\ifputpagenumberinnotes% +\string\argpageref\string{\@compoundlabelscratch\string}% +\string\setcounterfrompageref\string{notepageholdertitle\string}% +\string{\@compoundlabelscratch\string}% +\fi% +\string\textbf\string{\ \the\versotitleholder\string} +}% +\newcommand{\versopoemtitlenocontents}[1]{% +\versoset@p@emtitle{#1}{\poemtitlepenalty}{\poemtitlefont}% +{\relax}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}{\z@}% +} +\newcommand{\versotitleinnotescheck}{\ifparalleltexts\let\titletoothernotes=\versotitletoothernotes\fi} +\makeatother +% \end{macrocode} +% \end{macro} +% \begin{macro}{\rectopoemtitle} +% \begin{macrocode} +\makeatletter +\newcommand{\rectopoemtitle}[1]{% +\rectoset@p@emtitle{#1}{\poemtitlepenalty}{\poemtitlefont}% +{\relax}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}{\z@}% +\c@ntentsinfo{#1}{\contentsindentone}{\contentspoemtitlefont}% +{\contentsindenttwoamount}% +} +\newcommand{\rectoset@p@emtitle}[6]{\setlength{\titleentryoverrun}{#6}% +{#2}% +{#3 \begin{titleentryenvironment}% +{\ifcentertitleson\begin{center}#4 #1\end{center}\else #4 #1\fi}% +\end{titleentryenvironment}}% +{#5}% +\m@kep@emlabel +\rectom@ken@teholder{#1}% +\setlength{\titleentryoverrun}{\z@}} +\newcommand{\rectom@ken@teholder}[1]{% +\ifsinglelinetitle +\rectotitleholder={#1}% +\global\edef\@compoundlabelscratch{poem\thepoemnumber}% +\else\iftitlefirstline + \rectotitleholder={#1}% + \global\edef\@compoundlabelscratch{poem\thepoemnumber}% + \else\iftitlemiddleline + \titlesofar=\rectotitleholder + \titleincrement={~#1}% + \global\edef\titleconcat{\the\titlesofar \the\titleincrement}% + \rectotitleholder=\expandafter{\titleconcat}% + \global\edef\@compoundlabelscratch{poem\thepoemnumber}% + \else + \titlesofar=\rectotitleholder + \titleincrement={~#1}% + \global\edef\titleconcat{\the\titlesofar \the\titleincrement}% + \rectotitleholder=\expandafter{\titleconcat}% + \global\edef\@compoundlabelscratch{poem\thepoemnumber}% + \fi + \fi + \fi +} +\newcommand{\rectotitletoothernotes}{\string\par +\ifputpagenumberinnotes% +\string\argpageref\string{\@compoundlabelscratch\string}% +\string\setcounterfrompageref\string{notepageholdertitle\string}% +\string{\@compoundlabelscratch\string}% +\fi% +\string\textbf\string{\ \the\rectotitleholder\string} +}% +\newcommand{\rectopoemtitlenocontents}[1]{% +\rectoset@p@emtitle{#1}{\poemtitlepenalty}{\poemtitlefont}% +{\relax}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}{\z@}% +%\c@ntentsinfo{#1}{\contentsindentone}{\contentspoemtitlefont}% +%{\contentsindenttwoamount}% +%\t@xtnotesinfo{#1}% +} +\newcommand{\rectotitleinnotescheck}{\ifparalleltexts\let\titletoothernotes=\rectotitletoothernotes\fi} +\makeatother % \end{macrocode} % \end{macro} % \begin{macro}{\saveversoline} @@ -6700,7 +6981,7 @@ r@#2\endcsname{}{}\@nil % \end{macrocode} % \end{macro} % Finally, the |\startversopage|, |\finishversopage|, |\startrectopage| -% and |\finishrectopage| macros: +% |\finishrectopage| and |\finishparalleltexts| macros: % \begin{macro}{\startversopage} % \begin{macrocode} \newcommand{\startversopage}{ @@ -6730,7 +7011,8 @@ r@#2\endcsname{}{}\@nil \noexplainyetfalse \global\versoexplanationspendingfalse \fi -\versotrue\restoreversoline} +\rectofalse\versotrue\restoreversoline +\let\titletoothernotes=\versotitletoothernotes} % \end{macrocode} % \end{macro} % \begin{macro}{\finishversopage} @@ -6792,7 +7074,8 @@ r@#2\endcsname{}{}\@nil \noexplainyetfalse \global\rectoexplanationspendingfalse \fi -\rectotrue\restorerectoline} +\versofalse\rectotrue\restorerectoline +\let\titletoothernotes=\rectotitletoothernotes} % \end{macrocode} % \end{macro} % \begin{macro}{\finishrectopage} @@ -6824,6 +7107,147 @@ r@#2\endcsname{}{}\@nil } % \end{macrocode} % \end{macro} +% \begin{macro}{\finishparalleltexts} +% \begin{macrocode} +\newcommand{\finishparalleltexts}{ +\ifinstanza +\end{stanza} +\fi +\ifinpoem +\end{poem} +\fi +\ifinprosesection +\end{prosesection} +\fi +\ifinquotedverse +\end{quotedverse} +\fi +\rectofalse\versofalse\paralleltextsfalse +} +% \end{macrocode} +% \end{macro} +% \subsection{~Parallel Texts in Prose} +% First, some booleans. +% \begin{macro}{\ifversopassagestillopen} +% \begin{macrocode} +\newif\ifversopassagestillopen +\versopassagestillopenfalse +\newif\ifrectopassagestillopen +\rectopassagestillopenfalse +% \end{macrocode} +% \end{macro} +% When the last recto page ended, was the last paragraph finished? +% True means the next recto should continue the paragraph from the last recto +% \begin{macro}{\ifinpara} +% \begin{macrocode} +\newif\ifinpara +\inparafalse +\newif\ifrectoparapending +\rectoparapendingfalse +\newif\ifrectoparaopen +\rectoparaopenfalse +\newif\ifversoparapending +\versoparapendingfalse +\newif\ifversoparaopen +\versoparaopenfalse +% \end{macrocode} +% \end{macro} +% Counters: prosepage versoproselinecounter, etc., and commands to set them. +% \begin{macro}{\makeprosepagelabel} +% \begin{macrocode} +\newcounter{prosepage} +\setcounter{prosepage}{1} +\newcommand{\makeprosepagelabel}{\proselinelabel{prosepageno\theprosepage}} +\newcounter{versoproselinecounter} +\newcommand{\saveversoproseline}{% +\refstepcounter{prosepage}% +\makeprosepagelabel +\setcounterfromref{versoproselinecounter}{prosepageno\theprosepage} +} +\newcommand{\restoreversoproseline}{\setcounter{linenumber}{\value{versoproselinecounter}}}% +\newcounter{rectoproselinecounter} +\newcommand{\saverectoproseline}{% +\refstepcounter{prosepage}% +\makeprosepagelabel +\setcounterfromref{rectoproselinecounter}{prosepageno\theprosepage} +} +\newcommand{\restorerectoproseline}{\setcounter{linenumber}% + {\value{rectoproselinecounter}}}% +% \end{macrocode} +% \end{macro} +% The |\parastart| and |\paraend| macros, to mark the beginning and end +% of paragraphs +% \begin{macro}{\parastart} +% \begin{macrocode} +\newcommand{\parastart}{\inparatrue} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\paraend} +% \begin{macrocode} +\newcommand{\paraend}{\inparafalse} +% \end{macrocode} +% \end{macro} +% |\startparalleltextsprose| and |\finishparalleltextsprose| +% \begin{macro}{\startparalleltextsprose} +% \begin{macrocode} +\newcommand{\startparalleltextsprose}{% +\leavevmode +\cleartoverso +\paralleltextstrue +\inparafalse +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\finishparalleltextsprose} +% \begin{macrocode} +\newcommand{\finishparalleltextsprose}{% +\paralleltextsfalse} +% \end{macrocode} +% \end{macro} +% \begin{macro}{parallelprose} +% \begin{macrocode} +\newenvironment{parallelprose}{\startparalleltextprose} {\finishparalleltextsprose} +% \end{macrocode} +% \end{macro} +% |\startversoprosepage| +% \begin{macro}{\startversoprosepage} +% \begin{macrocode} +\newcommand{\startversoprosepage}{% +\let\titletoothernotes=\versotitletoothernotes +\restoreversoproseline% +\ifversoparapending{\inparatrue}\else{\inparafalse}\fi% +\ifinpara{\noindent}\else{\relax}\fi% +} +% \end{macrocode} +% \end{macro} +% |\finishversoprosepage| +% \begin{macro}{\finishversoprosepage} +% \begin{macrocode} +\newcommand{\finishversoprosepage}{% +\ifinpara{\versoparapendingtrue}\else{\versoparapendingfalse}\fi% +\saveversoproseline% +} +% \end{macrocode} +% \end{macro} +% |\startrectoprosepage| +% \begin{macro}{\startrectoprosepage} +% \begin{macrocode} +\newcommand{\startrectoprosepage}{% +\let\titletoothernotes=\rectotitletoothernotes +\restorerectoproseline% +\ifrectoparapending{\inparatrue}\else{\inparafalse}\fi% +\ifinpara{\noindent}\else{\relax}\fi% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\finishrectoprosepage} +% \begin{macrocode} +\newcommand{\finishrectoprosepage}{% +\ifinpara{\rectoparapendingtrue}\else{\rectoparapendingfalse}\fi% +\saverectoproseline +} +% \end{macrocode} +% \end{macro} % \subsection{~Finishing up} % \begin{macro}{\finish} % The |\finish| macro reads in the notes, diff --git a/Master/texmf-dist/source/latex/poemscol/poemscol.ins b/Master/texmf-dist/source/latex/poemscol/poemscol.ins index 5d4cb70e69c..0628d333e1b 100644 --- a/Master/texmf-dist/source/latex/poemscol/poemscol.ins +++ b/Master/texmf-dist/source/latex/poemscol/poemscol.ins @@ -1,5 +1,5 @@ %% -%% Copyright (C) 2002 by John Burt +%% Copyright (C) 2013 by John Burt %% %% This file may be distributed and/or modified under the conditions %% of the LateX Project Public License, either verison 1.2 of this diff --git a/Master/texmf-dist/tex/latex/poemscol/poemscol.sty b/Master/texmf-dist/tex/latex/poemscol/poemscol.sty index 0686ae5934f..825ae7c4c68 100644 --- a/Master/texmf-dist/tex/latex/poemscol/poemscol.sty +++ b/Master/texmf-dist/tex/latex/poemscol/poemscol.sty @@ -22,7 +22,7 @@ %% in the same archive or directory.) \NeedsTeXFormat{LaTeX2e}[1997/12/01] \ProvidesPackage{poemscol} - [2013/08/20 v2.64 poemscol file] + [2015/6/18 v2.7 poemscol file] @@ -142,12 +142,14 @@ \advance\leftmargin\runoverindentvalue} \item[]} {\endlist} +\newif\ifinquotedverse \newenvironment{quotedverse}{% + \inquotedversetrue \let\\=\@centercr% \list{}{\itemsep\z@ \itemindent -\runoverindentvalue\listparindent \itemindent \rightmargin 0sp\leftmargin 0sp\advance\leftmargin \runoverindentvalue}\item[]} - {\endlist} + {\endlist\inquotedversefalse} \newcounter{verselinenumber} \newcounter{printlineindex} @@ -264,7 +266,7 @@ \fancypagestyle{volumefirststyle}{% \fancyhf{} -\fancyfoot[C]{\hfil{\small \botmark}} +\fancyfoot[C]{\hfil{\small \botmark}\hfil} \renewcommand{\headrulewidth}{0pt} \renewcommand{\footrulewidth}{0pt} } @@ -1765,8 +1767,9 @@ literal#1\endcsname{\begin{multicols}{2}\fi\setlength{\parindent}{-10pt}}% \relax\else \modulolinenumbers[\value{prosemodulo}]% if lineno is called \fi +\newif\ifinprosesection \newenvironment{prosesection} -{\resetlinenumber\begin{linenumbers}% +{\inprosesectiontrue\resetlinenumber\begin{linenumbers}% \renewcommand{\linenumberfont}{\scriptsize}% \ifnumbersright\rightlinenumbers*\setlength{\linenumbersep}{-\marginparsep}% \else\ifnumbersswitch\rightlinenumbers*\setlength{\linenumbersep}{-\marginparsep}% @@ -1776,7 +1779,7 @@ literal#1\endcsname{\begin{multicols}{2}\fi\setlength{\parindent}{-10pt}}% \noemendyettrue% \noexplainyettrue% } -{\end{linenumbers}} +{\end{linenumbers}\inprosesectionfalse} \newenvironment{prosesectionnoreset} {\begin{linenumbers}% \renewcommand{\linenumberfont}{\scriptsize} @@ -1858,7 +1861,7 @@ r@#2\endcsname{}{}\@nil \string{\string\mark\string{\string\thenotepageholdernote\string}\string}% \string{\string\mark\string{\string\thenotepageholdertitle\string}\string}\string\unskip \string\unskip\string\relax\ \proseciterange :\string~\string\nolinebreak}% -\newcommand{\proselinelabel}[1]{\unskip\linelabel{#1}} +\newcommand{\proselinelabel}[1]{\ifhmode\unskip\fi\linelabel{#1}} \newcommand{\prosetextnote}[3][0]{% \iftextnoteson% \unskip\proselinelabel{#2}% @@ -2309,7 +2312,6 @@ r@#2\endcsname{}{}\@nil {\ifexplanon% \immediate\write\explanations{\string\noindent\string\kern-#1}% \fi} - \newcommand{\stanzaatbottom}[1]{\global\edef\stanzaatbottomvalue{#1}} \stanzaatbottom{*} \newcommand{\nostanzaatbottom}[1]{\global\edef\nostanzaatbottomvalue{#1}} @@ -2317,11 +2319,19 @@ r@#2\endcsname{}{}\@nil \def\cleartorecto{\clearpage\if@twoside \ifodd\c@page\else \hbox{}\thispagestyle{empty}% \newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi} - \def\cleartoverso{\clearpage\if@twoside \ifodd\c@page\hbox{}\thispagestyle{empty}% \newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi} - +\makeatletter +\def\ifenv#1{% + \def\reserved@a{#1}% + \ifx\reserved@a\@currenvir + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\makeatother \newdimen\pmclsavsk \newcount\pmclsavsf \def\pmclbsphack{% @@ -2385,6 +2395,22 @@ r@#2\endcsname{}{}\@nil \rectopoemstillopenfalse \newif\ifversopoemstillopen \versopoemstillopenfalse +\newif\ifrectoprosesectionpending +\rectoprosesectionpendingfalse +\newif\ifversoprosesectionpending +\versoprosesectionpendingfalse +\newif\ifrectoprosesectionstillopen +\rectoprosesectionstillopenfalse +\newif\ifversoprosesectionstillopen +\versoprosesectionstillopenfalse +\newif\ifrectoquotedversepending +\rectoquotedversependingfalse +\newif\ifversoquotedversepending +\versoquotedversependingfalse +\newif\ifrectoquotedversestillopen +\rectoquotedversestillopenfalse +\newif\ifversoquotedversestillopen +\versoquotedversestillopenfalse \newif\ifrectoemendationspending \rectoemendationspendingfalse \newif\ifversoemendationspending @@ -2456,6 +2482,122 @@ r@#2\endcsname{}{}\@nil \nolinebreak } } +\newenvironment{parallelverse}{\startparalleltexts} +{\finishparalleltexts} +\newtoks{\versotitleholder} +\newtoks{\rectotitleholder} +\newcommand{\makeversotitleholder}[1]{% +\versotitleholder={#1}% +} +\newcommand{\makerectotitleholder}[1]{% +\rectotitleholder={#1}% +} +\makeatletter +\newcommand{\versopoemtitle}[1]{% +\versoset@p@emtitle{#1}{\poemtitlepenalty}{\poemtitlefont}% +{\relax}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}{\z@}% +\c@ntentsinfo{#1}{\contentsindentone}{\contentspoemtitlefont}% +{\contentsindenttwoamount}% +} +\newcommand{\versoset@p@emtitle}[6]{\setlength{\titleentryoverrun}{#6}% +{#2}% +{#3 \begin{titleentryenvironment}% +{\ifcentertitleson\begin{center}#4 #1\end{center}\else #4 #1\fi}% +\end{titleentryenvironment}}% +{#5}% +\m@kep@emlabel +\versom@ken@teholder{#1}% +\setlength{\titleentryoverrun}{\z@}} +\newcommand{\versom@ken@teholder}[1]{% +\ifsinglelinetitle +\versotitleholder={#1}% +\global\edef\@compoundlabelscratch{poem\thepoemnumber}% +\else\iftitlefirstline + \versotitleholder={#1}% + \global\edef\@compoundlabelscratch{poem\thepoemnumber}% + \else\iftitlemiddleline + \titlesofar=\versotitleholder + \titleincrement={~#1}% + \global\edef\titleconcat{\the\titlesofar \the\titleincrement}% + \versotitleholder=\expandafter{\titleconcat}% + \global\edef\@compoundlabelscratch{poem\thepoemnumber}% + \else + \titlesofar=\versotitleholder + \titleincrement={~#1}% + \global\edef\titleconcat{\the\titlesofar \the\titleincrement}% + \versotitleholder=\expandafter{\titleconcat}% + \global\edef\@compoundlabelscratch{poem\thepoemnumber}% + \fi + \fi + \fi +} +\newcommand{\versotitletoothernotes}{\string\par +\ifputpagenumberinnotes% +\string\argpageref\string{\@compoundlabelscratch\string}% +\string\setcounterfrompageref\string{notepageholdertitle\string}% +\string{\@compoundlabelscratch\string}% +\fi% +\string\textbf\string{\ \the\versotitleholder\string} +}% +\newcommand{\versopoemtitlenocontents}[1]{% +\versoset@p@emtitle{#1}{\poemtitlepenalty}{\poemtitlefont}% +{\relax}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}{\z@}% +} +\newcommand{\versotitleinnotescheck}{\ifparalleltexts\let\titletoothernotes=\versotitletoothernotes\fi} +\makeatother +\makeatletter +\newcommand{\rectopoemtitle}[1]{% +\rectoset@p@emtitle{#1}{\poemtitlepenalty}{\poemtitlefont}% +{\relax}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}{\z@}% +\c@ntentsinfo{#1}{\contentsindentone}{\contentspoemtitlefont}% +{\contentsindenttwoamount}% +} +\newcommand{\rectoset@p@emtitle}[6]{\setlength{\titleentryoverrun}{#6}% +{#2}% +{#3 \begin{titleentryenvironment}% +{\ifcentertitleson\begin{center}#4 #1\end{center}\else #4 #1\fi}% +\end{titleentryenvironment}}% +{#5}% +\m@kep@emlabel +\rectom@ken@teholder{#1}% +\setlength{\titleentryoverrun}{\z@}} +\newcommand{\rectom@ken@teholder}[1]{% +\ifsinglelinetitle +\rectotitleholder={#1}% +\global\edef\@compoundlabelscratch{poem\thepoemnumber}% +\else\iftitlefirstline + \rectotitleholder={#1}% + \global\edef\@compoundlabelscratch{poem\thepoemnumber}% + \else\iftitlemiddleline + \titlesofar=\rectotitleholder + \titleincrement={~#1}% + \global\edef\titleconcat{\the\titlesofar \the\titleincrement}% + \rectotitleholder=\expandafter{\titleconcat}% + \global\edef\@compoundlabelscratch{poem\thepoemnumber}% + \else + \titlesofar=\rectotitleholder + \titleincrement={~#1}% + \global\edef\titleconcat{\the\titlesofar \the\titleincrement}% + \rectotitleholder=\expandafter{\titleconcat}% + \global\edef\@compoundlabelscratch{poem\thepoemnumber}% + \fi + \fi + \fi +} +\newcommand{\rectotitletoothernotes}{\string\par +\ifputpagenumberinnotes% +\string\argpageref\string{\@compoundlabelscratch\string}% +\string\setcounterfrompageref\string{notepageholdertitle\string}% +\string{\@compoundlabelscratch\string}% +\fi% +\string\textbf\string{\ \the\rectotitleholder\string} +}% +\newcommand{\rectopoemtitlenocontents}[1]{% +\rectoset@p@emtitle{#1}{\poemtitlepenalty}{\poemtitlefont}% +{\relax}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}{\z@}% +} +\newcommand{\rectotitleinnotescheck}{\ifparalleltexts\let\titletoothernotes=\rectotitletoothernotes\fi} +\makeatother \newcommand{\saveversoline}{\setcounter{versolinecounter}% {\value{verselinenumber}}% \setcounter{versoindexscratch}{\value{printlineindex}}} @@ -2503,7 +2645,8 @@ r@#2\endcsname{}{}\@nil \noexplainyetfalse \global\versoexplanationspendingfalse \fi -\versotrue\restoreversoline} +\rectofalse\versotrue\restoreversoline +\let\titletoothernotes=\versotitletoothernotes} \newcommand{\finishversopage}{ \saveversoline\versofalse\ \ifinpoem @@ -2556,7 +2699,8 @@ r@#2\endcsname{}{}\@nil \noexplainyetfalse \global\rectoexplanationspendingfalse \fi -\rectotrue\restorerectoline} +\versofalse\rectotrue\restorerectoline +\let\titletoothernotes=\rectotitletoothernotes} \newcommand{\finishrectopage}{\saverectoline\rectofalse \ifinpoem \global\rectopoempendingtrue @@ -2581,6 +2725,84 @@ r@#2\endcsname{}{}\@nil \noexplainyetfalse \fi } +\newcommand{\finishparalleltexts}{ +\ifinstanza +\end{stanza} +\fi +\ifinpoem +\end{poem} +\fi +\ifinprosesection +\end{prosesection} +\fi +\ifinquotedverse +\end{quotedverse} +\fi +\rectofalse\versofalse\paralleltextsfalse +} +\newif\ifversopassagestillopen +\versopassagestillopenfalse +\newif\ifrectopassagestillopen +\rectopassagestillopenfalse +\newif\ifinpara +\inparafalse +\newif\ifrectoparapending +\rectoparapendingfalse +\newif\ifrectoparaopen +\rectoparaopenfalse +\newif\ifversoparapending +\versoparapendingfalse +\newif\ifversoparaopen +\versoparaopenfalse +\newcounter{prosepage} +\setcounter{prosepage}{1} +\newcommand{\makeprosepagelabel}{\proselinelabel{prosepageno\theprosepage}} +\newcounter{versoproselinecounter} +\newcommand{\saveversoproseline}{% +\refstepcounter{prosepage}% +\makeprosepagelabel +\setcounterfromref{versoproselinecounter}{prosepageno\theprosepage} +} +\newcommand{\restoreversoproseline}{\setcounter{linenumber}{\value{versoproselinecounter}}}% +\newcounter{rectoproselinecounter} +\newcommand{\saverectoproseline}{% +\refstepcounter{prosepage}% +\makeprosepagelabel +\setcounterfromref{rectoproselinecounter}{prosepageno\theprosepage} +} +\newcommand{\restorerectoproseline}{\setcounter{linenumber}% + {\value{rectoproselinecounter}}}% +\newcommand{\parastart}{\inparatrue} +\newcommand{\paraend}{\inparafalse} +\newcommand{\startparalleltextsprose}{% +\leavevmode +\cleartoverso +\paralleltextstrue +\inparafalse +} +\newcommand{\finishparalleltextsprose}{% +\paralleltextsfalse} +\newenvironment{parallelprose}{\startparalleltextprose} {\finishparalleltextsprose} +\newcommand{\startversoprosepage}{% +\let\titletoothernotes=\versotitletoothernotes +\restoreversoproseline% +\ifversoparapending{\inparatrue}\else{\inparafalse}\fi% +\ifinpara{\noindent}\else{\relax}\fi% +} +\newcommand{\finishversoprosepage}{% +\ifinpara{\versoparapendingtrue}\else{\versoparapendingfalse}\fi% +\saveversoproseline% +} +\newcommand{\startrectoprosepage}{% +\let\titletoothernotes=\rectotitletoothernotes +\restorerectoproseline% +\ifrectoparapending{\inparatrue}\else{\inparafalse}\fi% +\ifinpara{\noindent}\else{\relax}\fi% +} +\newcommand{\finishrectoprosepage}{% +\ifinpara{\rectoparapendingtrue}\else{\rectoparapendingfalse}\fi% +\saverectoproseline +} \newcommand{\finish}{ \small\bf \hyphenchar\font=45 -- cgit v1.2.3