%\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 "maintained". % % \fi % \iffalse %<*driver> \documentclass{ltxdoc} \usepackage{polyglossia,csquotes} \setmainlanguage{english} \usepackage{eledmac,eledform,tikz,tikz-qtree} \usepackage{hyperref} \EnableCrossrefs \CodelineIndex \RecordChanges \begin{document} \DocInput{eledform.dtx} \end{document} % % \fi % \CheckSum{82} % \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} % \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 % \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 in the critical notes: % \begin{quote} % lorem] AB omit ; C loram ; D lorim % \end{quote} % There is some limits with 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 don't make mistake about manuscript. % \end{itemize} % \subsubsection{With formalism} % To describe the same thing, we propose this formalism : % \begin{verbatim} %\var{lorem}{A,B}{ %{{C}{loram}}, %{{D}{lorim}} %} % \end{verbatim} % With \emph{eledform}, this will produce the same thing that the non-formalised form, % but without described inconveniences. % You could see 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 must use \cs{Manuscripts}\marg{list} % to provide to \LaTeX\space the list of manuscripts used in the apparatus. % \LaTeX\ prints a warning message in the log file if you describe a variant % inside a manuscript which does'nt exist. % It also prints an error in the PDF. % The list of manuscripts is a comma separated list: % \begin{verbatim} % \manuscripts{A,B,C,D} % \end{verbatim} % \subsubsection{Declare variants} % \DescribeMacro{\varseries} % % 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 \marg{manuscripts}\marg{variant}, 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{\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 omit a lemma, \emph{eledform} print \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 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}[2012/10/01 v1.0 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} % 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} % 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{Unknew man. #1, p.\the\page@num ; l.\the\line@num}\underline{unknew man. #1}}% } % \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}% }% \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}% }% \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{macrocode} \new@eledform@custom{omittext}{\emph{omit}} \new@eledform@custom{manvarseparator}{~} \new@eledform@custom{varseparator}{\space} % \end{macrocode} % \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