From f69c8d8dfd2e817ad0b0362281142de38fa7ce1f Mon Sep 17 00:00:00 2001 From: Manuel Pégourié-Gonnard Date: Mon, 8 Oct 2012 09:33:26 +0000 Subject: new latex package: eledform git-svn-id: svn://tug.org/texlive/trunk@27922 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/source/latex/eledform/eledform.dtx | 313 +++++++++++++++++++++ .../texmf-dist/source/latex/eledform/eledform.ins | 55 ++++ 2 files changed, 368 insertions(+) create mode 100644 Master/texmf-dist/source/latex/eledform/eledform.dtx create mode 100644 Master/texmf-dist/source/latex/eledform/eledform.ins (limited to 'Master/texmf-dist/source') diff --git a/Master/texmf-dist/source/latex/eledform/eledform.dtx b/Master/texmf-dist/source/latex/eledform/eledform.dtx new file mode 100644 index 00000000000..40fbe558304 --- /dev/null +++ b/Master/texmf-dist/source/latex/eledform/eledform.dtx @@ -0,0 +1,313 @@ +%\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 \ No newline at end of file diff --git a/Master/texmf-dist/source/latex/eledform/eledform.ins b/Master/texmf-dist/source/latex/eledform/eledform.ins new file mode 100644 index 00000000000..fdf702a8af4 --- /dev/null +++ b/Master/texmf-dist/source/latex/eledform/eledform.ins @@ -0,0 +1,55 @@ +%% 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". +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this work when run through +%% LaTeX. +%% +%% +%% --------------- start of docstrip commands ------------------ +%% +\input docstrip.tex +\keepsilent + +\preamble +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". +\endpreamble + +\generate{\file{eledform.sty}{\from{eledform.dtx}{package}}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file(s) into a directory searched by LaTeX. See the FAQ on} +\Msg{* CTAN at /help/uk-tex-faq for more on this.} +\Msg{*} +\Msg{* \space\space eledform.sty} +\Msg{*} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} + +\endbatchfile \ No newline at end of file -- cgit v1.2.3