summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/poemscol/poemscol.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/poemscol/poemscol.dtx')
-rw-r--r--macros/latex/contrib/poemscol/poemscol.dtx294
1 files changed, 235 insertions, 59 deletions
diff --git a/macros/latex/contrib/poemscol/poemscol.dtx b/macros/latex/contrib/poemscol/poemscol.dtx
index 5a4984c229..b1dd14c6d9 100644
--- a/macros/latex/contrib/poemscol/poemscol.dtx
+++ b/macros/latex/contrib/poemscol/poemscol.dtx
@@ -1,7 +1,7 @@
% \iffalse meta-comment
% !TEX TS-program = dtxmk
%
-% Copyright (C) 2002-2019 by John Burt <burt@brandeis.edu>
+% Copyright (C) 2002-2020 by John Burt <burt@brandeis.edu>
% --------------------------------------------------
%
% This file may be distributed and/or modified under the
@@ -23,7 +23,7 @@
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[1997/12/01]
%<package>\ProvidesPackage{poemscol}
-%<package> [2020/06/02 v3.14159 poemscol file]
+%<package> [2020/06/12 v3.141592 poemscol file]
%
%<*driver>
\documentclass{ltxdoc}
@@ -38,7 +38,7 @@
%</driver>
% \fi
%
-% \CheckSum{10550}
+% \CheckSum{10704}
%
% \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
@@ -268,6 +268,11 @@
% and its siblings. Marginal marks are now set using their own inserts, rather than using marginpar.}
% \changes{v3.14159}{2020/06/02}{Marginal marks set by JHpoemtitle now work with the different
% title placement schemes.}
+% \changes{v3.141592}{2020/06/12}{Special commands for titles with footnotes (where the footnotes
+% are authorial and part of the title). Title footnotes can be set at the bottom of the page, like
+% traditional footnotes, at the bottom of the page like ``Layered'' footnotes, or at the
+% end of the poem. Marginal marks set by JHpoemtitle can be placed
+% independently of the marginal marks produced by margreftextnote..}
% \DoNotIndex{\newcommand,\newenvironment,\def,\edef,\else,\renewcommand,\makeatletter,\makeatother}
% \DoNotIndex{\abovedisplayskip,\belowdisplayskip,\abovedisplayshortskip,\belowdisplayshortskip}
% \DoNotIndex{\newcommand, \section, \subsection, \subsubsection,
@@ -300,15 +305,15 @@
% \textsc, \unskip}
% \setcounter{IndexColumns}{2}
% \MakeShortVerb{|}
-% \def\fileversion{3.14159}
-% \def\filedate{2 June 2020}
-% \def\docdate{2 June 2020}
+% \def\fileversion{3.141592}
+% \def\filedate{12 June 2020}
+% \def\docdate{12 June 2020}
% \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{2 June 2020}
+% \date{12 June 2020}
% \maketitle
% \begin{abstract} \textsf{poemscol} provides commands for \LaTeX\ for
% setting collections of poetry. It is especially suited for setting
@@ -2290,7 +2295,8 @@
% range of line numbers of the lemma. To define a footnote called
% |\mynote|, first declare new footnote |\footnoteE| (A, B, C and D
% are reserved for sources, textual notes, emendations, and explanatory notes,
-% respectively). Then issue: \begin{verbatim}
+% respectively, and H is reserved for use for titles with
+% authorial footnotes). Then issue: \begin{verbatim}
% \newcommand{\mynote}[2][0]{\setlemmarange{#1}\\
% \FootnotetextE{\citerange}{#2}
% \resetlemmacounters} \end{verbatim}
@@ -2811,14 +2817,19 @@
% This is so that you can control the placement of these marks
% independently of how you place the line numbers (which use
% |\pmclsidepar|) or other marginal marks you may define using
-% |\marginpar|. Horizontal placement of the mark is controlled by the
+% |\marginpar|.
+%
+% Horizontal placement of the mark is controlled by the
% length |\JHmarginparsep|, which is set by default to 0 pt. Vertical
-% placement of the marginal mark, relative to the baseline, is set by
+% placement of the marginal mark for a textual note, relative to the baseline, is set by
% the length |\JHmarginparvshift|, which is set by default to 0 pt.
-% |\JHpoemtitle|, however, uses the same commands to
-% control the placement of the mark after the title, and the two
+% The horizontal placement of the
+% marginal mark set by |\JHpoemtitle|, and its siblings, however,
+% is controlled by the length |\JHtitlemarginparsep|. |\JHtitlemarginparsep|
+% is set by default to value of |\JHmarginparsep|,
+% so that the two
% kinds of mark
-% are designed so that they should always align vertically.
+% should align with each other by default.
% \end{sloppy}
%
% By default these marginal references are placed in the right
@@ -2828,14 +2839,20 @@
% If you wish the
% marks to aways be in the outer margin, issue the command
% |\JHmarksouter|. If you wish the marks to always be in the inner
-% margin, issue |\JHmarksgutter|.
+% margin, issue |\JHmarksgutter|. (The marks for titles and the marks for
+% notes always appear on the same side of the page, and the different |\JHmarks| commands
+% always move both kinds of mark.)
%
% If you are centering the verse block on the longest line, the verse
% line numbers normally move in towards the verse block. (To center
% the verse block on the longest line, see section
% \ref{centeringtextblock}.) The marginal
% marks for |\margeftextnote| do not do this, since they are designed to
-% line up with the marginal mark produced by |\JHpoemtitle|.
+% line up with the marginal mark produced by |\JHpoemtitle|. You can change
+% the alignment if you wish by changing the value of either the length |\JHmarginparsep|,
+% which controls the placement of marginal marks for notes, or changing the value
+% of the length |\JHtitlemarginparsep|, which controls the placement of the marginal
+% marks for titles.
%
% \begin{sloppypar}
% If you define a new endnote type using |\definenewnotetype|,
@@ -2864,6 +2881,65 @@
% \DescribeMacro{\margrefexplanatory}|\margrefexplanatory| is a
% version of |\margreftextnote| for explanatory notes.
%
+% \subsection{~Titles with footnotes}
+% In James Benstead's edition of the collected poems of Hugh
+% MacDiarmid, many of the titles of the poems have footnotes by the
+% author. Under most circumstances, one can put a note about the title
+% in the textual notes section simply by, after the |\begin{poem}|
+% command, issuing something like this: |\literaltextnote{title] text of note}|.
+% (One can make similar notes for the explanatory notes
+% section or for the emendations section.) But MacDiarmid's notes are
+% authorial, not editorial, and should be considered part of the
+% title. At the same time, the notes should not be printed in the Table
+% of Contents, nor for that matter in the endnotes sections.
+%
+% \DescribeMacro{\footnotepoemtitle} |\footnotepoemtitle| is for the default
+% case. It takes two arguments. The first argument is the title of
+% the poem. The second is the text of the footnote.
+%
+% \begin{sloppypar}
+% \DescribeMacro{\footnotepoemtitlefirstline}
+% |\footnotepoemtitlefirstline| |\footnotepoemtitlemiddleline| and
+% |\footnotepoemtitlelastline| are for long titles in which how the
+% author broke up the title on the page matters, and one or more of
+% the lines has a footnote. These commands also take two arguments,
+% of which the first is the title line and the second is the text of
+% the footnote. You can intersperse these commands with
+% |\poemtitlefirstline|
+% |\poemtitlemiddleline| or |\poemtitlelastline| (depending on which
+% line has the footnote). The lines will be broken in the same way in
+% the text and in the table of contents. \end{sloppypar}
+%
+% \DescribeMacro{\footnotesplitpoemtitle} |\footnotesplitpoemtitle|
+% is for the most general case. Use it if there is a footnote in the middle
+% of the title, or if you have a long title and don't need to ensure
+% that it is broken in the text and in the table of contents in the
+% same way. |\footnotesplitpoemtitle| takes three arguments. The first
+% argument is the first part of the title, up to the footnote mark,
+% the second is the text of the footnote, and the third is the rest
+% of the title.
+%
+% I have not created footnoted titles for sequences, sequence
+% sections, and so on. But if you compare how those titles are
+% defined in the implementation section below and how footnoted
+% titles are defined at \ref{footnotetitles}
+% (page \pageref{footnotetitles}), how to write those commands should be clear.
+%
+% You can control where the footnotes for footnoted titles are placed.
+% By default, those footnotes are conventional footnotes (and all
+% their parameters are set in the way normal \LaTeX\ footnotes are
+% set). You can force the default setting by issuing the command
+% |\maketitlefootnotesplain| in your preamble. If you are setting
+% your textual notes or other notes at the foot of the page using
+% ``layers'' of footnotes, you can treat these footnotes as just
+% another layer by issuing the command |\maketitlefootnoteslayered| in
+% your preamble. (``Layered'' footnotes are described at section \ref{makingfootnotes},
+% page \pageref{makingfootnotes}.) If you wish to place these footnotes at the end of
+% the poem, you must issue |\maketitlefootnotesatpoemend| in the
+% preamble. Just before you declare a title with a footnote, issue
+% |\makepoemendnotes|, and just after issuing |\end{poem}| for that
+% poem, issue |\putpoemendnotes|.
+%
% \subsection{~Empty poem titles and italicized poem titles}
%
% \DescribeMacro{\poemtitlenotitle}
@@ -7140,6 +7216,8 @@
\setlength{\JHmarginparwidth}{\marginparwidth}
\newlength{\JHmarginparsepmin}
\setlength{\JHmarginparsepmin}{\marginparsepmin}
+\newlength{\JHtitlemarginparsep}%
+\setlength{\JHtitlemarginparsep}{\JHmarginparsep}%
\newif{\ifJHmarkstoleft}
\JHmarkstolefttrue
\newif{\ifJHmarkstoright}
@@ -7307,10 +7385,10 @@
\newcommand{\JHrighttitlemarginpar}[1]{%
\pmclbsphack\strut\vadjust{%
\rlap{\kern-\parindent%
-\kern\textwidth\kern\JHmarginparsep% at right
-\ifcentertitleson
-\kern-.5\JHtextwidth\kern\marginparsepmin
-\fi
+\kern\textwidth\kern\JHtitlemarginparsep% at right
+\ifcentertitleson%
+\kern-.5\JHtextwidth\kern\marginparsepmin%
+\fi%
\setbox0=\vtop to 0pt{% added
\begin{minipage}[t]{\JHmarginparwidth}% added
#1%
@@ -7318,18 +7396,17 @@
\vss}%
\vtop to 0pt{\kern\JHmarginparvshift% default should be 0pt
\kern-\dp\strutbox \kern-\ht0 \box0 \vss}}}\pmclesphack}%
-
%
% commands for placing the marginal marks for titles
% left side
\newcommand{\JHlefttitlemarginpar}[1]{%
\pmclbsphack\strut\vadjust{% changed
\rlap{\kern-\parindent%
-\kern -\JHmarginparsep \kern -\JHmarginparwidth% at left
-\ifcentertitleson
-\kern-.5\JHtextwidth\kern\marginparsepmin
-\fi
-\setbox0=\vtop to 0pt{
+\kern -\JHtitlemarginparsep \kern -\JHmarginparwidth% at left
+\ifcentertitleson%
+\kern-.5\JHtextwidth\kern\marginparsepmin%
+\fi%
+\setbox0=\vtop to 0pt{%
\begin{minipage}[t]{\JHmarginparwidth}% added
#1%
\end{minipage}%
@@ -7337,46 +7414,46 @@
\vtop to 0pt{\kern\JHmarginparvshift % default should be 0pt
\kern-\dp\strutbox \kern-\ht0 \box0 \vss}}}\pmclesphack}% changed
%
-% command for JHmarks in title in outer margin or in gutter
+% command for JHtitlemarks in title in outer margin or in gutter
\newcommand{\JHswitchtitlemarginpar}{\@dblarg{\@JHswitchtitlemarginpar}}
%\long\def\@pmclsidepar[#1]#2{\@bsphack\leavevmode\vadjust{%
\long\def\@JHswitchtitlemarginpar[#1]#2{\@bsphack\strut\vadjust{% added
-\checkoddpage
- \ifJHmarginparswitch
- \ifJHreversemarginpar
- \ifoddpage
- \oddpagefalse
- \else
- \oddpagetrue
- \fi
- \fi
- \else
- \oddpagetrue
- \ifJHreversemarginpar
- \oddpagefalse
- \fi
- \fi
- \rlap{\kern-\parindent
- \if@twocolumn
+\checkoddpage%
+ \ifJHmarginparswitch%
+ \ifJHreversemarginpar%
+ \ifoddpage%
+ \oddpagefalse%
+ \else%
+ \oddpagetrue%
+ \fi%
+ \fi%
+ \else%
+ \oddpagetrue%
+ \ifJHreversemarginpar%
+ \oddpagefalse%
+ \fi%
+ \fi%
+ \rlap{\kern-\parindent%
+ \if@twocolumn%
\if@firstcolumn % put at left
- \kern -\JHmarginparsep \kern -\marginparwidth % at left
- \kern-.5\JHtextwidth\kern\marginparsepmin
+ \kern -\JHtitlemarginparsep \kern -\marginparwidth % at left
+ \kern-.5\JHtextwidth\kern\marginparsepmin%
\else % put at right
- \kern \columnwidth \kern \JHmarginparsep % at right
- \fi
- \else
+ \kern \columnwidth \kern \JHtitlemarginparsep % at right
+ \fi%
+ \else%
\ifoddpage % put at right
- \kern \textwidth \kern \JHmarginparsep % at right
- \ifcentertitleson
- \kern-.5\JHtextwidth\kern\marginparsepmin
- \fi
+ \kern \textwidth \kern \JHtitlemarginparsep % at right
+ \ifcentertitleson%
+ \kern-.5\JHtextwidth\kern\marginparsepmin%
+ \fi%
\else % put at left
- \kern -\JHmarginparsep \kern -\marginparwidth % at left
- \ifcentertitleson
- \kern-.5\JHtextwidth\kern\marginparsepmin
- \fi
- \fi
- \fi
+ \kern -\JHtitlemarginparsep \kern -\marginparwidth % at left
+ \ifcentertitleson%
+ \kern-.5\JHtextwidth\kern\marginparsepmin%
+ \fi%
+ \fi%
+ \fi%
% \vbox to 0pt{%
% \kern \pmclsideparvshift% % vertical shift to align top text lines
% \begin{minipage}{\marginparwidth}%
@@ -7388,7 +7465,7 @@
\vss}% added
\vtop to 0pt{\kern\JHmarginparvshift % default should be 0pt
\kern-\dp\strutbox \kern-\ht0 \box0 \vss}}}\@esphack}% added
-%
+ %
\newcommand{\set@margp@emtitle}[7]{\setlength{\titleentryoverrun}{#6}%
{#2}%
{#3 \begin{titleentryenvironment}%
@@ -7653,6 +7730,105 @@
% }
% \catcode`\@=12
% \end{verbatim}
+% \subsection{~Titles with footnotes}
+% \label{footnotetitles}
+% \begin{macro}{\footnotepoemtitle}
+% \begin{macrocode}
+\newif\iftitlefootnotesatpoemend%
+\titlefootnotesatpoemendfalse%
+\newif\iftitlefootnotesplain%
+\titlefootnotesplaintrue%
+\newif\iftitlefootnoteslayered%
+\titlefootnoteslayeredfalse%
+%
+\newcommand{\maketitlefootnoteslayered}{%
+\DeclareNewFootnote[plain]{H}%
+\titlefootnoteslayeredtrue%
+\titlefootnotesplainfalse%
+\titlefootnotesatpoemendfalse%
+}
+%
+\newcommand{\maketitlefootnotesatpoemend}{
+\titlefootnoteslayeredfalse%
+\titlefootnotesplainfalse%
+\titlefootnotesatpoemendtrue%
+}
+%
+\newcommand{\maketitlefootnotesplain}{
+\titlefootnoteslayeredfalse%
+\titlefootnotesplaintrue%
+\titlefootnotesatpoemendfalse%
+}
+%
+\newcommand{\placetitlefootnote}[1]{\iftitlefootnoteslayered%
+\footnoteH{#1}%
+\fi%
+\iftitlefootnotesatpoemend%
+\footnotemark%
+\immediate\write\poemendnotes{\string\makeatletter}%
+\immediate\write\poemendnotes{\string\footnotemark\string[\the\c@footnote \string]}%
+\immediate\write\poemendnotes{\string\makeatother}%
+\literalpoemendnote{#1}%
+\fi%
+\iftitlefootnotesplain%
+\footnote{#1}%
+\fi%
+}
+%
+\newcommand{\footnotepoemtitle}[2]{%
+\set@p@emtitle{#1\placetitlefootnote{#2}}{\poemtitlepenalty}{\poemtitlefont}%
+{\poemtitleindent}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}{\z@}%
+\c@ntentsinfo{#1}{\contentspoemtitleindent}{\contentspoemtitlefont}%
+{\contentspoemtitleindentamount}%
+\t@xtnotesinfo{#1}%
+}
+%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\footnotepoemtitlefirstline}
+% \begin{macrocode}
+\newcommand{\footnotepoemtitlefirstline}[2]{%
+\firstlinesettings%
+\set@p@emtitle{#1\placetitlefootnote{#2}}{\multilinetitlepenalty}{\poemtitlefont}%
+{\poemtitleindent}{\nobreak\par\nobreak}{\z@}%
+\c@ntentsinfo{#1}{\contentspoemtitleindent}{\contentspoemtitlefont}%
+{\contentspoemtitleindentamount}%
+\t@xtnotesinfo{#1}%
+\restoresinglelinesettings%
+}
+%
+\newcommand{\footnotepoemtitlemiddleline}[2]{%
+\middlelinesettings%
+\set@p@emtitle{#1\placetitlefootnote{#2}}{\par\nobreak}{\poemtitlefont}%
+{\poemtitlesecondlineindent}{\nobreak\par\nobreak}{\z@}%
+\c@ntentsinfo{#1}{\contentspoemtitlesecondlineindent}{\contentspoemtitlefont}%
+{\contentspoemtitlesecondlineindentamount}%
+\t@xtnotesinfo{#1}%
+\restoresinglelinesettings%
+}
+%
+\newcommand{\footnotepoemtitlelastline}[2]{%
+\lastlinesettings%
+\set@p@emtitle{#1\placetitlefootnote{#2}}{\par\nobreak}{\poemtitlefont}%
+{\poemtitlesecondlineindent}{\nobreak\par\afterpoemtitleskip\nobreak}{\z@}%
+\c@ntentsinfo{#1}{\contentspoemtitlesecondlineindent}{\contentspoemtitlefont}%
+{\contentspoemtitlesecondlineindentamount}%
+\t@xtnotesinfo{#1}%
+\restoresinglelinesettings%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\footnotesplitpoemtitle}
+% \begin{macrocode}
+\newcommand{\footnotesplitpoemtitle}[3]{%
+\set@p@emtitle{#1\placetitlefootnote{#2} #3}{\poemtitlepenalty}{\poemtitlefont}%
+{\poemtitleindent}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}{\z@}%
+\c@ntentsinfo{#1 #3}{\contentspoemtitleindent}{\contentspoemtitlefont}%
+{\contentspoemtitleindentamount}%
+\t@xtnotesinfo{#1 #3}%
+}
+% \end{macrocode}
+% \end{macro}
% \subsection{~Epigraphs, headnotes, attributions, dedications}
% Notice that epigraphs to volumes are handled differently from
% epigraphs to poems. Notice also the ``short'' commands, which