%\iffalse meta-comment % % Copyright (C) 2012 by Maïeul Rouquette % % This file may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either % version 1.3 of this license or (at your option) any later % version. The latest version of this license is in: % % http://www.latex-project.org/lppl.txt % % and version 1.3 or later is part of all distributions of % LaTeX version 2003/06/01 or later. % This work has the LPPL maintenance status "unmaintained". % % \fi % \iffalse %<*driver> \documentclass{ltxdoc} \usepackage{polyglossia,csquotes} \setmainlanguage{english} \usepackage[noreledmac]{eledmac} \usepackage{eledform,tikz,tikz-qtree} \usepackage{hyperref} \EnableCrossrefs \CodelineIndex \RecordChanges \begin{document} \DocInput{eledform.dtx} \end{document} % % \fi % \CheckSum{106} % \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 % Lower-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 % Digits \0\1\2\3\4\5\6\7\8\9 % Exclamation \! Double quote \" Hash (number) \# % Dollar \$ Percent \% Ampersand \& % Acute accent \' Left paren \( Right paren \) % Asterisk \* Plus \+ Comma \, % Minus \- Point \. Solidus \/ % Colon \: Semicolon \; Less than \< % Equals \= Greater than \> Question mark \? % Commercial at \@ Left bracket \[ Backslash \\ % Right bracket \] Circumflex \^ Underscore \_ % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % % \changes{v1.0}{2012/10/01}{First public release.} % \changes{v1.1}{2012/10/08}{News options to change the order of the elements.} % \changes{v1.1a}{2015/13/08}{Package unmaintened.} % \GetFileInfo{eledform.sty} %\DoNotIndex{\csgdef,\if,\fi,\else,\listgadd} % %\title{The eledform extension for eledmac} % \author{Maïeul Rouquette \\ maieul at maieul dot net} % \date{\fileversion\space\filedate} % \maketitle % \textbf{This package is unmaintened. % Maïeul Rouquette has no more time to maintain it. % } % \begin{abstract} % The \emph{eledmac} package provides tools to make critical editions of texts. % But it doesn't provide any formalism to note the textual variants: each user has to make his own formalism. % This package tries to provide a formalism % which distinguishes between the \emph{formal} notation of textual variants and their typographical notation\footnote{The original idea of this package is described at \url{http://geekographie.maieul.net/Formaliser-les-variantes}. You can suggest new features or report bugs at \url{https://github.com/maieul/eledform/issues}.}. % \end{abstract} % \tableofcontents % \section{Use} % \subsection{One Example} % \subsubsection{Without formalism} % Suppose this case : % \begin{enumerate} % \item One text, with fives manuscripts: P, A, B, C, D. % P is the manuscript which is used as reference. % Variants in A, B, C, D are shown in the apparatus. % \item The pseudo-word \enquote{lorem} has these variants: % \begin{description} % \item[A and B]the word is omitted. % \item[C]the word is replaced by \enquote{loram}. % \item[D]the word is replaced by \enquote{lorim}. % \end{description} % \end{enumerate} % Without formalism, you could write: % \begin{verbatim} % \edtext{lorem}{\Afootnote{AB \emph{omit}; C loram; D lorim}} % \end{verbatim} % Which produces this critical note: % \begin{quote} % lorem] AB omit; C loram; D lorim % \end{quote} % There are some limits for this method: % \begin{itemize} % \item If we want to change display, we must changes all notes. % \item We can't produce statistics. % \item Difficulty to export in other format than \LaTeX. % \item No method to check if we're making mistakes regarding to the manuscripts. % \end{itemize} % \subsubsection{With formalism} % To describe the same situation, we propose this formalism : % \begin{verbatim} %\var{lorem}{A,B}{ %{{C}{loram}}, %{{D}{lorim}} %} % \end{verbatim} % With \emph{eledform}, this will produce the same result as the non-formalised form, % but without the described inconveniences. % You can see an example in the file \href{example.tex}{example.tex}, which produces \href{example.pdf}{example.pdf}. % \subsection{References} % \subsubsection{Declare the manuscripts} % \DescribeMacro{\manuscripts} % You have to use \cs{Manuscripts}\marg{list} % to provide the list of manuscripts used in the apparatus. % \LaTeX\ prints a warning message in the log file if you're referring to a % manuscript that is not declared before. % It also prints an error in the resulting file. % The list of manuscripts is a comma separated list: % \begin{verbatim} % \manuscripts{A,B,C,D} % \end{verbatim} % \subsubsection{Declare variants} % \DescribeMacro{\var} % The main macro is \cs{var}\oarg{short}\marg{lemma}\marg{del}\marg{variants}\oarg{other}. % This macro takes five arguments, two are optional. % \begin{description} % \item[\meta{short} (optional)]an abbreviated version of the lemma for the notes. % \item[\meta{lemma}]the lemma which has variants. % \item[\meta{del}]a comma separated list of manuscripts where the lemma is ommited. % \item[\meta{variants}]a comma separated list of variants. Each variant has the form \verb+{+\marg{manuscripts}\marg{variant}\verb+}+, where: % \begin{description} % \item[\meta{manuscripts}]a comma separated list of manuscripts where the variant is. % \item[\meta{variant}]the variant itself. % \end{description} % \item[\meta{other}(optional)]other code linked to the lemma, for example a call to an critical footnote. % \end{description} % \subsubsection{Customize} % \DescribeMacro{\manposition} % By default (since v1.1), the manuscripts are printed after the variant. % With \cs{manposition}\marg{position}, where position is any text except \verb+last+, you can change it. % % \DescribeMacro{\omitposition} % By default, the omission are printed at the begining of the variants. % With \cs{omitposition}\marg{position}, where position is any text except \verb+first+, you can change it. % % \DescribeMacro{\varseries} % By default, the notes for textual variants are printed in the A series of footnotes. % With \cs{varseries}\marg{letter}, you can change it. % % \DescribeMacro{\omittext} % When a manuscript omits a lemma, \emph{eledform} prints \verb|\emph{omit}|. % You can change it with \cs{omittext}\marg{text}. % % \DescribeMacro{\manvarseparator} % By default, a non breakable space is printed between the manuscript letter and the variant. % You can change it with \cs{manvarseparator}\marg{separator}. % % \DescribeMacro{\varseparator} % By default, a breakable space is printed between each variant of a lemma. % You can change it with \cs{varseparator}\marg{separator}. %\StopEventually{\PrintChanges} % \section{Implementation} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{eledform}[2015/08/13 v1.1a formalism for eledmac] \RequirePackage{eledmac} % \end{macrocode} % \subsection{Define manuscripts} % \begin{macro}{\manuscripts@} % The \cs{manuscripts@} macro is an etoolbox list. % \begin{macrocode} \def\manuscripts@{} % \end{macrocode} % \end{macro} % \begin{macro}{\manuscripts} % The \cs{manuscripts} macro only fills the \cs{manuscripts} macro. % \begin{macrocode} \newcommand{\manuscript}[1]{% \renewcommand{\do}[1]{\listgadd{\manuscripts@}{##1}}% \docsvlist{#1}% } % \end{macrocode} % \end{macro} % \subsection{Print the critical notes} % \begin{macro}{\var} % The \cs{var} macro is the only public macro, which calls all private macros. % \begin{macrocode} \newcommandx*{\var}[5][1,5,usedefault]{% % \end{macrocode} % First, call the \cs{edtext} macro. % \begin{macrocode} \edtext{#2}{% % \end{macrocode} % If the \cs{var} macro is called with the optional first argument, % we put it into the \cs{lemma} macro. % \begin{macrocode} \ifstrempty{#1}{}{\lemma{#1}}% % \end{macrocode} % The \cs{varnote@} macro is an Xfootnote macro defined by user, with the \cs{varnote} macro (cf.~\pageref{varnote}). % \begin{macrocode} \varnote@{% % \end{macrocode} % In the case where the manuscripts with omission must be printed in first position. % \begin{macrocode} \ifdefstring{\omitposition@}{first}{ % \end{macrocode} % If the third argument is not empty, we call the \cs{del@} macro, which print the manuscript where the lemma is omitted %  \begin{macrocode} \ifstrempty{#3}{}% {\del@{#3}% % \end{macrocode} % If the third and fourth argument are both not empty, we print the separator between variants. % \begin{macrocode} \ifstrempty{#4}% {}% {\varseparator@}% }% % \end{macrocode} % And so, we print all the variants which are not an omission. % \begin{macrocode} \var@{#4}% % \end{macrocode} % The same thing, but if the manuscripts with omission must be printed in last position. % \begin{macrocode} }% {% \ifstrempty{#4}% {}% {\var@{#4}% \ifstrempty{#3}% {}% {\varseparator@}% }% \ifstrempty{#3}{}{\del@{#3}}% }% }% % \end{macrocode} % Eventually, we add the critical notes which are not for textual criticism. % \begin{macrocode} #5% }% } % \end{macrocode} % \end{macro} % \begin{macro}{\print@manuscript} % The \cs{print@manuscripts} command only prints the manuscripts where a variant exists. % \begin{macrocode} \newcommand{\print@manuscript}[1]{% \ifinlist{#1}{\manuscripts@}% {#1}% {\eledmac@warning{Manuscript #1 not declared, p.\the\page@num ; l.\the\line@num}\underline{Manuscript #1 not declared!}}% } % \end{macrocode} % \end{macro} % \begin{macro}{\del@} % The \cs{del@} macro prints the manuscripts where the lemma is omitted, % and after that, the text to indicate this omission. % \begin{macrocode} \newcommand{\del@}[1]{% \renewcommand{\do}[1]{% \print@manuscript{##1}% }% \ifdefstring{\manposition@}{last}% {\omittext@\manvarseparator@\docsvlist{#1}}% {\docsvlist{#1}\manvarseparator@\omittext@}% } % \end{macrocode} % \end{macro} % \begin{macro}{\var@} % The \cs{var@} macro loops on the non omission variants. % Except for the first variant, it prints the variant separator. % \begin{macrocode} \newcommand{\var@}[1]{% \newif\iffirst% \firsttrue% \renewcommand{\do}[1]{\iffirst\firstfalse\else\varseparator@\fi{\var@@##1}}% \docsvlist{#1}% } % \end{macrocode} % \end{macro} % \begin{macro}{\var@@} % The \cs{var@@} macro prints manuscripts for a singular variant % and this variant after that. % \begin{macrocode} \newcommand{\var@@}[2]{% \renewcommand{\do}[1]{% \print@manuscript{##1}% }% \ifdefstring{\manposition@}{last}% {#2\manvarseparator@\docsvlist{#1}}% {\docsvlist{#1}\manvarseparator@#2}% } % \end{macrocode} % \end{macro} % \subsection{Customization} % \subsubsection{The footnote series} % \begin{macro}{\varnote@}\label{varnote} % The \cs{varnote@} macro is only a reference to a critical footnote macro of eledmac. % The default is \cs{Afootnote}. % \begin{macrocode} \let\varnote@\Afootnote % \end{macrocode} % \end{macro} % \begin{macro}{\varseries} % The \cs{varseries} macro redefines this reference. % \begin{macrocode} \newcommand{\varseries}[1]{\letcs{\varnote@}{#1footnote}} % \end{macrocode} % \end{macro} % \subsubsection{Display options} % \begin{macro}{\new@eledform@custom} % The \cs{new@eledform@custom} macro has two actions : % \begin{enumerate} % \item Define the default value of an option (\cs{option@}). % \item Create the command which modifies this option (\cs{option}). % \end{enumerate} % \begin{macrocode} \newcommand{\new@eledform@custom}[2]{% \csgdef{#1@}{#2}% \expandafter\newcommand\csname#1\endcsname[1]{\csgdef{#1@}{##1}}% } % \end{macrocode} % \end{macro} % And so, we can call \cs{new@eledform@custom} to define options for user. % \begin{macro}{\omittext} % \begin{macro}{\manvarseparator} % \begin{macro}{\varseparator} % \begin{macro}{\manposition} % \begin{macro}{\omitposition} % \begin{macrocode} \new@eledform@custom{omitposition}{first} \new@eledform@custom{manposition}{last} \new@eledform@custom{omittext}{\emph{omit}} \new@eledform@custom{manvarseparator}{~} \new@eledform@custom{varseparator}{\space} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \subsection{Stemma of the code} % The next figure is a stemma of the code. % % \hspace{-3cm}\noindent\input{include/stemma} % \newpage % \addcontentsline{toc}{section}{Changes} % \PrintChanges % \addcontentsline{toc}{section}{Index} % \PrintIndex % \Finale \endinput