From fd2c4128141939720f8122c58807051d63fb1f59 Mon Sep 17 00:00:00 2001 From: Robert Alessi Date: Sun, 14 Mar 2021 10:22:06 +0100 Subject: new general hook 'readingstyle'. better handling of 'postrefnum' --- Makefile | 6 +- ekdosis.dtx | 313 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 278 insertions(+), 41 deletions(-) diff --git a/Makefile b/Makefile index 649af77..eade9cd 100644 --- a/Makefile +++ b/Makefile @@ -29,16 +29,16 @@ $(NAME).pdf: testsamples $(NAME).dtx @ echo "Making the sample files first..." @ $(MAKE) --directory=$(SAMPLES) >/dev/null @ echo "Done making samples" - @ echo "Building the documentation of $(NAME). Please be patient..." + @ echo "Building the documentation of $(NAME) with $(CMP). Please be patient..." @ $(do_documentation) @ echo "Now calling biber" @ biber $(NAME) >/dev/null - @ echo "Returning to lualatex..." + @ echo "Returning to $(CMP)..." @ for run in {1..4}; do $(do_documentation); done @ echo "Building indexes..." @ if [ -f $(NAME).glo ]; then makeindex -q -s gglo.ist -o $(NAME).gls $(NAME).glo; fi @ if [ -f $(NAME).idx ]; then makeindex -q -s gind.ist -o $(NAME).ind $(NAME).idx; fi - @ echo "Final runs of lualatex..." + @ echo "Final runs of $(CMP)..." @ for run in {1..3}; do $(call do_documentation); done @ echo "Done" diff --git a/ekdosis.dtx b/ekdosis.dtx index 9e1ead5..1c35edb 100644 --- a/ekdosis.dtx +++ b/ekdosis.dtx @@ -104,6 +104,103 @@ along with this program. If not, see + + + Works of Mr. William Shakespeare + + Charles + Gildon + + + 17 + E. Curl and E. Sanders + 1710 + + + + + + Works of Mr. William Shakespeare + + Charles + Gildon + + 2 + + 17 + E. Curl and E. Sanders + 1714 + + + + + + Venus and Adonis, Tarquin and Lucrece, and Mr. Shakespeare's Miscellany Poems + + Sewell + + + A. Bettesworth + 1725 + + + + + + Poems, containing I. Venus and Adonis... IV. Sonnets + + William + Shakespeare + + + T. + Ewing + + + Dublin + 1771 + + + + + + Works of W. Shakespeare + + H.N. + Hudson + + + Boston + Munroe + 1856 + + + + + + Shakespeare's Complete Sonnets + + C.M. + Walsh + + + 1908 + + + + + + Shakespeare's Sonnets + + Samuel + Butler + + + Fifield + 1899 + + + \end{filecontents} \begin{filecontents}[overwrite]{\jobname.bib} @@ -155,6 +252,17 @@ along with this program. If not, see location = {Cambridge, MA. -- London} } +@Book{McDonald1916, + editor = {MacDonald Alden, Raymond}, + title = {The Sonnets of Shakespeare}, + date = 1916, + titleaddon = {From the Quarto of 1609 with Variorum Readings and + Commentary}, + publisher = {Houghton Mifflin Co.}, + options = {useauthor=false, useeditor=true}, + location = {Boston} +} + @Book{ReynoldsWilson1991, author = {Reynolds, L. D. and Wilson, N. G}, title = {Scribes and Scholars}, @@ -378,7 +486,22 @@ along with this program. If not, see origDate=s. XV] \DeclareSource{sDrak}{\emph{Drakenborch}} % Homer, Odyssey -\DeclareScholar{Zen}{Zen.}[rawname=Zenodotus] +\DeclareScholar{hZen}{Zen.}[rawname=Zenodotus] +% Shakespeare's Sonnets: +\NewDocumentEnvironment{ekdcenter}{}{\par\centering}{\nobreak\par} +\NewDocumentCommand{\ekdlettrine}{mm}{% + \adjustbox{valign=t,raise=-0.75ex}{\Huge #1}\textsc{#2}% +} +\TeXtoTEIPat{\ekdlettrine {#1}{#2}}{#1#2} +\DeclareSource{shGildon1710}{G} +\DeclareSource{shGildon1714}{G\textsuperscript{2}} +\DeclareSource{shSewell1725}{S} +\DeclareSource{shEwing1771}{E} +\DeclareSource{shHudson1856}{Hu\textsuperscript{2}} +\DeclareSource{shWalsh1908}{Wa} +\DeclareSource{shButler1899}{But} +\DeclareScholar{shGod}{Godwin}[rawname=Godwin] +\DeclareScholar{shStee}{Stee}[rawname=Godwin, note=Notes in Malone] \end{filecontents} \documentclass{ltxdoc} %\usepackage[letterpaper,margin=25mm,left=50mm,nohead]{geometry} @@ -387,6 +510,7 @@ along with this program. If not, see \doxitem{Option}{option}{options} \usepackage{microtype} \usepackage[no-math]{fontspec} +\defaultfontfeatures{Renderer=Harfbuzz} \usepackage[latin.classic,greek.ancient,american]{babel} \babelfont{rm}{Old Standard} \babelfont{sf}{NewComputerModern Sans} @@ -397,6 +521,9 @@ along with this program. If not, see ]{Old Standard} \babelfont[greek]{sf}[Script=Greek]{NewComputerModern Sans} \babelfont[greek]{tt}[Script=Greek]{NewComputerModern Mono} +\newfontfamily{\junicode}{Junicode}[ + Ligatures=TeX, + RawFeature={+hist}] \babeltags{ancientgreek = greek} \def\sg#1{\textancientgreek{#1}} \usepackage[Old Standard]{mathfont} @@ -2286,7 +2413,7 @@ friend \lem[resp=egomute, type=emendation, nosep]{\supplied{τῶν πυρετῶν}} \note[post=\ekdsep]{addidi (\arb{^gamI`a 'l-.hummayAti} \getsiglum{Gal})} - \rdg[nordg, source=Gal]{\arb{^gamI`a 'l-.hummayAti}} + \rdg[nordg, source=Gal]{\arb{al-.hummayAti}} \rdg[wit=codd, source=edd, alt=om.]{} }, \end{ekdosis} @@ -2323,7 +2450,7 @@ friend % \lem[resp=egomute, type=emendation, nosep]{\supplied{τῶν πυρετῶν}} % \note[post=\ekdsep]{addidi (\arb{^gamI`a 'l-.hummayAti} % \getsiglum{Gal})} -% \rdg[nordg, source=Gal]{\arb{^gamI`a 'l-.hummayAti}} +% \rdg[nordg, source=Gal]{\arb{al-.hummayAti}} % \rdg[wit=hcodd, source=hedd, alt=om.]{} % }, % \end{specimen} @@ -2365,7 +2492,7 @@ friend Gal.) ^gamI`a 'l-.hummayAti + subtype="arabtex">al-.hummayAti ,

@@ -2495,6 +2622,7 @@ friend % % \fi % +% \begingroup % \needspace{7\baselineskip} % \resetlinenumber % \FormatDiv{2}{}{.} @@ -2528,6 +2656,7 @@ friend % and is admitted to no deliberation. % \end{translation} % \end{alignment} +% \endgroup % % \begin{remarks} % \item As can be seen from the apparatus entry related to l.~4 above, @@ -2955,6 +3084,10 @@ texts=latin[xml:lang="la"]+\textcolor{red}{;}+ % criticus. For example, |lemmastyle=|\cs{bfseries} will print all % instances of lemma text in bold while % |lemmastyle=|\cs{color}|{blue}| will print them in blue. +% \DescribeOption{readingstyle} |readingstyle|$=$\meta{command} +% \hfill\tcboxverb{Default: not set}\\ +% \newfeature[v1.2] |readingstyle| operates in the same way as +% |lemmastyle| but applies to variant readings.\\ % \DescribeOption{initialrule} |initialrule|$=$\meta{command} % \label{ref:initialrule}\hfill\bgroup\footnotesize % \tcboxverb{Default: \rule{0.4\columnwidth}{0.4pt} (initially not set)}% @@ -3543,7 +3676,7 @@ argument of the % πλάγχθη, ἐπεὶ Τροίης ἱερὸν πτολίεθρον ἔπερσεν· \\ % πολλῶν δ' ἀνθρώπων ἴδεν ἄστεα καὶ % \app{\lem{νόον} -% \rdg[resp=Zen]{νόμον} +% \rdg[resp=hZen]{νόμον} % \note{Cf. Schol.}} ἔγνω, \\ % πολλὰ δ' ὅ γ' ἐν πόντῳ πάθεν ἄλγεα ὃν κατὰ θυμόν, \\ % ἀρνύμενος ἥν τε ψυχὴν καὶ νόστον ἑταίρων. \\ @@ -3560,6 +3693,92 @@ argument of the % \end{alignment} % \endgroup % +% \begingroup +% \junicode +% \SetHooks{ +% refnumstyle=\normalfont, +% postrefnum=.~, +% lemmastyle=\bfseries, +% readingstyle=\itshape +% } +% \renewcommand\thelinenumber{} +% \settowidth{\versewidth}{Feed'st thy lights flame with selfe +% substantiall fewell,} +% \FormatDiv{1}{\begin{ekdcenter}}{\end{ekdcenter}} +% \needspace{7\baselineskip} +% \resetlinenumber +% \begin{alignment}[flush, +% tcols=1, +% texts=shakespeare[xml:lang="en"], +% apparatus=shakespeare] +% \setverselinenums{1}{0} +% \setlength{\vrightskip}{-0.75in} +% \begin{shakespeare} +% \ekddiv{type=sonnets, n=1, head=1} +% \begin{ekdverse}[type=sonnet, width=\versewidth] +% \begin{ekdstanza}[type=quatrain] +% \ekdlettrine{F}{r}om fairest creatures we desire +% increase,\\[-1.875ex] +% \vin That thereby beauties \emph{Rose} +% \app{ +% \lem{might} +% \rdg[source={shGildon1710, shSewell1725, shEwing1771}]{may} +% } neuer die,\\ +% But as the riper should by time +% \app{ +% \lem{decease} +% \rdg[source=shHudson1856]{decrease} +% },\\ +% His tender heire might beare his memory:\\ +% \end{ekdstanza} +% \begin{ekdstanza}[type=quatrain] +% But thou contracted to thine owne bright eyes,\\ +% Feed'st thy +% \app{ +% \lem{lights} +% \rdg[source={shButler1899, shWalsh1908}]{life's} +% } flame with +% \app{ +% \lem{selfe substantiall} +% \rdg[source=shGildon1714, +% alt={\textnormal{Hyphened by}}]{selfe-substantiall} +% \note{etc.}} fewell,\\ +% Making a famine where aboundance lies,\\ +% Thy selfe thy foe,to thy sweet selfe too cruell:\\ +% \end{ekdstanza} +% \begin{ekdstanza}[type=quatrain] +% Thou that art now the worlds fresh ornament,\\ +% And +% \app{ +% \lem{only} +% \rdg[resp=shGod, type=conjecture]{early} +% \note{conj.} +% } herauld to the gaudy spring,\\ +% Within thine owne bud buriest thy content,\\ +% And tender +% \app{ +% \lem{chorle} +% \rdg[source=shGildon1710]{churl} +% \note{etc.} +% } makst wast in niggarding:\\ +% \end{ekdstanza} +% \begin{ekdstanza}[type=couplet] +% \vin Pitty the world,or else this glutton be,\\ +% \vin To eate the worlds due,\app{ +% \lem{by the} +% \rdg[resp=shStee, postwit=conj., type=conjecture]{be thy} +% \rdg[resp=shGod, postwit=conj., type=conjecture]{by thy} +% } graue +% \app{ +% \lem{and} +% \rdg[resp=shGod, postwit=conj., type=conjecture]{as} +% } thee.\\! +% \end{ekdstanza} +% \end{ekdverse} +% \end{shakespeare} +% \end{alignment} +% \endgroup +% % \section{Lineation Settings} % \label{sec:lineation} % \danger \pkg{ekdosis} uses \pkg{lineno} internally for line @@ -4228,7 +4447,8 @@ subtype="arabtex">'inna 'abI kAna mina % % PDF output:--- % \medskip -% +% +% \begingroup % \needspace{7\baselineskip} % \resetlinenumber % \FormatDiv{1}{\begin{center}\Large}{\end{center}} @@ -4263,7 +4483,8 @@ subtype="arabtex">'inna 'abI kAna mina % θερινοὶ ἐν Κραννῶνι· [...] % \end{hippocrates} % \end{alignment} -% +% \endgroup +% % \texttt{TEI xml} output:--- % % \iffalse @@ -6256,13 +6477,15 @@ Sample text with a \textcolor{red}{word} in red. store refnumstyle = \ekd@refnumstyle, store postrefnum = \ekd@postrefnum, store lemmastyle = \ekd@lemmastyle, + store readingstyle = \ekd@readingstyle, code initialrule = \def\ekd@initial@rule{#1\NLS}, default initialrule = \rule{0.4\columnwidth}{0.4pt}, noval noinitialrule = \undef\ekd@initial@rule, initial appfontsize = \footnotesize, initial refnumstyle = \bfseries, initial postrefnum = ~, - initial lemmastyle = {} + initial lemmastyle = {}, + initial readingstyle = {} } \NewDocumentCommand{\SetHooks}{m}{\ekvset{ekd@hooks}{#1}} % \end{macrocode} @@ -7064,7 +7287,7 @@ Sample text with a \textcolor{red}{word} in red. \pdf@strcmp{\getrefnumber{#1}}{\getrefnumber{#2}} = 0 - % + % \ifekd@mapps% \ifbool{subsq@unit@\ekdan@type}{% \ifnum% @@ -7073,42 +7296,43 @@ Sample text with a \textcolor{red}{word} in red. = 0 \else - \LRnum{\getrefnumber{#1}}% issue the no + \LRnum{\getrefnumber{#1}}\unexpanded\expandafter{\ekd@postrefnum}% issue the no \fi% }% - {\LRnum{\getrefnumber{#1}}}% issue the no + {\LRnum{\getrefnumber{#1}}\unexpanded\expandafter{\ekd@postrefnum}}% issue the no \else \ifsubsq@unit% - % + % \ifnum% \pdf@strcmp{\getrefnumber{#1}}{% \getrefnumber{\luadirect{tex.sprint(ekdosis.getprevnotelab())}}} = 0 \else - \LRnum{\getrefnumber{#1}}% issue the no + \LRnum{\getrefnumber{#1}}\unexpanded\expandafter{\ekd@postrefnum}% issue the no \fi - % + % \else - \LRnum{\getrefnumber{#1}}% issue the no + \LRnum{\getrefnumber{#1}}\unexpanded\expandafter{\ekd@postrefnum}% issue the no \fi \fi - % + % \else \ifekd@elidednumbers \luadirect{tex.sprint(ekdosis.numrange(\luastring{\getrefnumber{#1}}, \luastring{\getrefnumber{#2}}))}% + \unexpanded\expandafter{\ekd@postrefnum}% issue the nos \else \LRnum{\getrefnumber{#1}}--% - \LRnum{\getrefnumber{#2}}% issue the nos + \LRnum{\getrefnumber{#2}}\unexpanded\expandafter{\ekd@postrefnum}% issue the nos \fi \fi% \else \LRnum{\getrefnumber{#1}}--% \LRnum{\getpagerefnumber{#2}}.% - \LRnum{\getrefnumber{#2}}% issue pg and ln nos + \LRnum{\getrefnumber{#2}}\unexpanded\expandafter{\ekd@postrefnum}% issue pg and ln nos \fi% - }\unexpanded\expandafter{\ekd@postrefnum}% + }% } % \end{macrocode} % \cs{current@ref} is pretty much the same as \cs{current@reg@arg}, @@ -7129,7 +7353,7 @@ Sample text with a \textcolor{red}{word} in red. {\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-e}} = 0 - % + % \ifekd@mapps% \ifbool{subsq@unit@\ekdan@type}{% \ifnum% @@ -7138,42 +7362,49 @@ Sample text with a \textcolor{red}{word} in red. = 0 \else - \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}% issue the no + \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}% + \unexpanded\expandafter{\ekd@postrefnum}% issue the no \fi% - }{\LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}}% issue the no + }{\LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}% + \unexpanded\expandafter{\ekd@postrefnum}}% issue the no \else \ifsubsq@unit% - % + % \ifnum% \pdf@strcmp{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}% {\getrefnumber{\luadirect{tex.sprint(ekdosis.getprevlnlab())}-b}} = 0 \else - \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}% issue the no + \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}% + \unexpanded\expandafter{\ekd@postrefnum}% issue the no \fi - % + % \else - \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}% issue the no + \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}% + \unexpanded\expandafter{\ekd@postrefnum}% issue the no \fi \fi - % + % \else \ifekd@elidednumbers \luadirect{tex.sprint(ekdosis.numrange( \luastring{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}, - \luastring{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-e}}))}% issue the nos + \luastring{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-e}}))}% + \unexpanded\expandafter{\ekd@postrefnum}% issue the nos \else \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}--% - \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-e}}% issue the nos + \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-e}}% + \unexpanded\expandafter{\ekd@postrefnum}% issue the nos \fi \fi% \else \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-b}}--% \LRnum{\getpagerefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-e}}.% - \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-e}}% issue pg and ln nos + \LRnum{\getrefnumber{\luadirect{tex.sprint(ekdosis.getlnlab())}-e}}% + \unexpanded\expandafter{\ekd@postrefnum}% issue pg and ln nos \fi% - }\unexpanded\expandafter{\ekd@postrefnum}% + }% } % \end{macrocode} % Define keys to be used by the optional arguments of \cs{lem} and @@ -7381,13 +7612,15 @@ Sample text with a \textcolor{red}{word} in red. \ifdefined\ekdlr@alt% \ifdefined\ekdlr@post% \space\unexpanded\expandafter{\ekdlr@post}\space\else\fi - {\textdir TRT\unexpanded\expandafter{\ekdlr@alt}}% + {\textdir TRT\unexpanded\expandafter{\ekd@readingstyle}% + \unexpanded\expandafter{\ekdlr@alt}}% \ifdefined\ekdlr@pre% \space\unexpanded\expandafter{\ekdlr@pre}\space\else\fi \else \ifdefined\ekdlr@post% \space\unexpanded\expandafter{\ekdlr@post}\space\else\fi - {\textdir TRT\unexpanded{#2}}% + {\textdir TRT\unexpanded\expandafter{\ekd@readingstyle}% + \unexpanded{#2}}% \ifdefined\ekdlr@pre% \space\unexpanded\expandafter{\ekdlr@pre}\space\else\fi \fi @@ -7406,17 +7639,20 @@ Sample text with a \textcolor{red}{word} in red. \ifdefined\ekdlr@pre% \space\unexpanded\expandafter{\ekdlr@pre}\space\else\fi \ltx@ifpackageloaded{babel}% - {{\noexpand\selectlanguage{\app@lang}% + {{\unexpanded\expandafter{\ekd@readingstyle}% + \noexpand\selectlanguage{\app@lang}% \unexpanded\expandafter{\ekdlr@alt}}}% - {\unexpanded\expandafter{\ekdlr@alt}}% + {\unexpanded\expandafter{\ekd@readingstyle}% + \unexpanded\expandafter{\ekdlr@alt}}% \ifdefined\ekdlr@post% \space\unexpanded\expandafter{\ekdlr@post}\space\else\fi \else \ifdefined\ekdlr@pre% \space\unexpanded\expandafter{\ekdlr@pre}\space\else\fi \ltx@ifpackageloaded{babel}% - {{\noexpand\selectlanguage{\app@lang}\unexpanded{#2}}}{% - {\unexpanded{#2}}}% + {{\unexpanded\expandafter{\ekd@readingstyle}% + \noexpand\selectlanguage{\app@lang}\unexpanded{#2}}}{% + {\unexpanded\expandafter{\ekd@readingstyle}\unexpanded{#2}}}% \ifdefined\ekdlr@post% \space\unexpanded\expandafter{\ekdlr@post}\space\else\fi \fi @@ -8488,7 +8724,8 @@ local texpatttotags = { {a="\\%=%=%s?", b="–"}, {a="\\%-%-%s?", b="–"}, {a="\\%=%/%s?", b="‐"}, - {a="\\%-%/%s?", b="‐"} + {a="\\%-%/%s?", b="‐"}, + {a="\\vin%s+", b=""} } local envtotags = { -- cgit v1.2.3