diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrkpar.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/koma-script/scrkpar.dtx | 591 |
1 files changed, 591 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrkpar.dtx b/Master/texmf-dist/source/latex/koma-script/scrkpar.dtx new file mode 100644 index 00000000000..856ef1cd9a0 --- /dev/null +++ b/Master/texmf-dist/source/latex/koma-script/scrkpar.dtx @@ -0,0 +1,591 @@ +% \CheckSum{530} +% \iffalse meta-comment +% ====================================================================== +% scrkpar.dtx +% Copyright (c) Markus Kohm, 2002-2006 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3b of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3b or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrkpar.dtx +% Copyright (c) Markus Kohm, 2002-2006 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3b, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3b ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% \fi +% +% \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 \~} +% +% \iffalse +%%% From File: scrkpar.dtx +%<*driver> +% \fi +\ProvidesFile{scrkpar.dtx}[2006/04/14 v2.95 KOMA-Script (paragraphs)] +% \iffalse +\documentclass[halfparskip-]{scrdoc} +\usepackage[english,ngerman]{babel} +\usepackage[latin1]{inputenc} +\CodelineIndex +\RecordChanges +\GetFileInfo{scrkpar.dtx} +\title{\KOMAScript{} \partname\ \texttt{\filename}% + \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}} +\date{\filedate} +\author{Markus Kohm} + +\begin{document} + \maketitle + \tableofcontents + \DocInput{\filename} +\end{document} +%</driver> +% \fi +% +% \selectlanguage{ngerman} +% +% \changes{v2.95}{2002/06/25}{% +% erste Version aus der Aufteilung von \texttt{scrclass.dtx}} +% +% \section{Absatzformatierung und -umbruch} +% +% In diesen Bereich gehört alles, was die Absatzformatierung selbst +% betrifft. Dazu kommen dann noch einige Kleinigkeiten aus dem +% Seitenumbruch. +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% +% \iffalse +%<*option> +% \fi +% +% \subsection{Optionen für das Absatzlayout} +% +% Ab Version 2.8i können wir auch mit Absatzlayouts umgehen, die einen +% Absatzabstand statt einem Absatzeinzug verlangen. Gesteuert wird +% dies über Optionen und Schalter. +% +% \begin{macro}{\setparsizes} +% \changes{v2.95}{2004/11/05}{neues Macro} +% Über dieses Makro wird die Änderung der Absatzparameter |\parskip|, +% |\parindent|, |\parfillskip| gesetzt. Das erste Argument ist der Einzug, das +% zweite der Abstand und das dritte die Füllung. Aktiviert werden die +% Änderungen wie bei |\fontsize| über |\selectfont|. Obwohl in der +% Voreinstellung absolut gearbeitet wird, wird hier intern +% |\par@updaterelative| verwendet. +% \begin{macrocode} +\newcommand*{\setparsizes}[3]{% + \edef\f@parindent{\the\parindent}% + \edef\f@parskip{\the\parskip}% + \edef\f@parfillskip{\the\parfillskip}% + \def\scr@parindent{#1}% + \def\scr@parskip{#2}% + \def\scr@parfillskip{#3}% + \def\par@update{\let\par@update\default@par@update\par@updaterelative}% +} +% \end{macrocode} +% \begin{macro}{\f@parindent} +% \changes{v2.95}{2004/11/05}{neu (intern)} +% Eingestellter Absatzeinzug. +% \begin{macro}{\f@parskip} +% \changes{v2.8i}{2001/07/22}{neu (intern)} +% \changes{v2.95}{2004/11/05}{Bedeutung geändert} +% Eingestellter Absatzabstand. +% \begin{macro}{\f@parfillskip} +% \changes{v2.8i}{2001/07/22}{neu (intern)} +% \changes{v2.95}{2004/11/05}{Bedeutung geändert} +% Eingestellte Absatzfüllung. +% +% Diese drei Werte werden automatisch bei der Font-Initialisierung eingestellt +% und sind vorher ungültig! +% \begin{macrocode} +\newcommand*{\f@parindent}{\the\parindent} +\newcommand*{\f@parskip}{\the\parskip} +\newcommand*{\f@parfillskip}{\the\parfillskip} +\AtEndOfClass{% + \edef\f@parindent{\the\parindent}% + \edef\f@parskip{\the\parskip}% + \edef\f@parfillskip{\the\parfillskip}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\par@update} +% \changes{v2.95}{2004/11/05}{neues internes Macro} +% Dieses Makro wird später in |\selectfont| die Änderung vornehmen. +% \begin{macro}{\default@par@update} +% \changes{v2.95}{2004/11/05}{neues internes Macro} +% In der Voreinstellung findet keine Änderung statt. Dies wird jedoch durch +% die Auswahl einer entsprechenden Option geändert. +% \begin{macrocode} +\newcommand*{\par@update}{} +\let\par@update\relax +\newcommand*{\default@par@update}{} +\let\default@par@update\relax +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{option}{parskip} +% \changes{v2.8i}{2001/07/22}{neue Option} +% \changes{v2.95}{2006/03/11}{primäre \textsf{keyval}-Option} +% \begin{option}{parskip-} +% \changes{v2.8l}{2001/08/16}{neue Option} +% \changes{v2.95}{2006/03/11}{obsolet} +% \begin{option}{parskip+} +% \changes{v2.8i}{2001/07/22}{neue Option} +% \changes{v2.95}{2006/03/11}{obsolet} +% \begin{option}{parskip*} +% \changes{v2.8i}{2001/07/22}{neue Option} +% \changes{v2.95}{2006/03/11}{obsolet} +% \begin{option}{halfparskip} +% \changes{v2.8i}{2001/07/22}{neue Option} +% \changes{v2.95}{2006/03/11}{obsolet} +% \begin{option}{halfparskip-} +% \changes{v2.8l}{2001/08/16}{neue Option} +% \changes{v2.95}{2006/03/11}{obsolet} +% \begin{option}{halfparskip+} +% \changes{v2.8i}{2001/07/22}{neue Option} +% \changes{v2.95}{2006/03/11}{obsolet} +% \begin{option}{halfparskip*} +% \changes{v2.8i}{2001/07/22}{neue Option} +% \changes{v2.95}{2006/03/11}{obsolet} +% \begin{option}{parindent} +% \changes{v2.8i}{2001/07/22}{neue Option} +% \changes{v2.95}{2006/03/11}{obsolet} +% Diese neun Optionen steuern die Umschaltung zwischen den Modi. Dabei +% schalten alle \texttt{parskip}-Optionen einen Absatzabstand ein, +% wohingegen die \texttt{parindent}-Option den Absatzeinzug +% einschaltet. Die \texttt{+}-Variante sorgt außerdem dafür, dass +% die letzte Zeile eines Absatzes maximal zu zwei Dritteln gefüllt +% wird. Entsprechend sorgt die \texttt{*}-Variante für eine maximale +% Füllung von drei Vierteln. Die normale Variante sorgt lediglich +% für einen freien Raum von 1\,em. Die \texttt{-}-Variante sorgt für +% überhaupt nichts. +% \begin{macro}{\scr@parindent} +% \changes{v2.95}{2004/11/05}{neu (intern)} +% Der einzustellende Absatzeinzug. +% \begin{macro}{\scr@parskip} +% \changes{v2.8i}{2001/07/22}{neu (intern)} +% \changes{v2.95}{2004/11/05}{Bedeutung geändert} +% Der einzustellende Absatzabstand. +% \begin{macro}{\scr@parfillskip} +% \changes{v2.8i}{2001/07/22}{neu (intern)} +% \changes{v2.95}{2004/11/05}{Bedeutung geändert} +% Die einzustellende Absatzfüllung. +% \begin{macrocode} +\newcommand*{\scr@parindent}{1em} +\newcommand*{\scr@parskip}{\z@} +\newcommand*{\scr@parfillskip}{\z@ \@plus 1fil} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% Neu bei \KOMAScript-3 ist, dass die Optionen wie bei \textsf{scrlttr2} über +% eine eingzige \textsf{keyval} gesetzt werden können. +% \begin{macrocode} +\KOMA@key{parskip}[true]{% + \begingroup + \KOMA@set@ncmdkey{parskip}{@tempa}{% + {false}{0},{off}{0},{no}{0},% + {full-}{1},% + {half-}{2},% + {full}{3},{true}{3},{on}{3},{yes}{3},% + {half}{4},% + {full+}{5},% + {half+}{6},% + {full*}{7},% + {half*}{8},% + {relative}{9},% + {absolute}{10},% + }{#1}% + \ifcase\number\@tempa% 0 + \endgroup + \setparsizes{1em}{\z@ \@plus \p@}{\z@ \@plus 1fil}% + \or% 1 + \endgroup + \setparsizes{\z@}{\baselineskip \@plus .1\baselineskip}{% + \z@ \@plus 1fil}% + \or% 2 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + \z@ \@plus 1fil}% + \or%3 + \endgroup + \setparsizes{\z@}{\baselineskip \@plus .1\baselineskip}{% + 1em \@plus 1fil}% + \or%4 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + 1em \@plus 1fil}% + \or%5 + \endgroup + \setparsizes{\z@}{\baselineskip \@plus .1\baselineskip}{% + .3333\linewidth\@plus 1fil}% + \or%6 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + .3333\linewidth \@plus 1fil}% + \or%7 + \endgroup + \setparsizes{\z@}{\baselineskip \@plus .1\baselineskip}{% + .25\linewidth \@plus 1fil}% + \or%8 + \endgroup + \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{% + .25\linewidth \@plus 1fil}% + \or%9 + \endgroup + \ifx\par@updaterelative\undefined + \expandafter\AtEndOfClass + \else + \expandafter\@firstofone + \fi + {% + \ifx\par@update\default@par@update + \let\par@update\par@updaterelative + \fi + \let\default@par@update=\par@updaterelative + }% + \or%10 + \endgroup + \ifx\par@updaterelative\undefined + \expandafter\AtEndOfClass + \else + \expandafter\@firstofone + \fi + {% + \ifx\par@update\default@par@update + \let\par@update\relax + \fi + \let\default@par@update=\relax + }% + \else% sonst + \endgroup + \fi +} +\KOMA@DeclareObsoleteOption[\PackageInfo]{parskip-}{parskip=full-} +\KOMA@DeclareObsoleteOption[\PackageInfo]{parskip+}{parskip=full+} +\KOMA@DeclareObsoleteOption[\PackageInfo]{parskip*}{parskip=full*} +\KOMA@DeclareObsoleteOption[\PackageInfo]{halfparskip}{parskip=half} +\KOMA@DeclareObsoleteOption[\PackageInfo]{halfparskip-}{parskip=half-} +\KOMA@DeclareObsoleteOption[\PackageInfo]{halfparskip+}{parskip=half+} +\KOMA@DeclareObsoleteOption[\PackageInfo]{halfparskip*}{parskip=half*} +\KOMA@DeclareObsoleteOption[\PackageInfo]{parindent}{parskip=false} +% \end{macrocode} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% +% Hierfür\marginline{Geplant!} sollte eine keyval-Option mit Werten definiert +% werden. Dazu dann neue Werte für absolutes oder relatives Verhalten. +% +% \iffalse +%</option> +%<*body> +% \fi +% +% +% \subsection{Abatzformatierung} +% +% \changes{v2.8i}{2001/07/22}{\cs{baselinestretch} wird nicht +% umdefiniert} +% \begin{Length}{lineskip} +% \begin{Length}{normallineskip} +% Minimaler Zeilenabstand: +% \begin{macrocode} +\setlength{\lineskip}{\p@} +\setlength{\normallineskip}{\p@} +% \end{macrocode} +% \end{Length} +% \end{Length} +% +% \begin{Length}{columnsep} +% \begin{Length}{columnseprule} +% Spaltenabstand und Spaltentrennlinie (nicht bei Briefen): +% \begin{macrocode} +%<*!letter> +\setlength{\columnsep}{10\p@} +\setlength{\columnseprule}{\z@} +%</!letter> +% \end{macrocode} +% \end{Length} +% \end{Length} +% +% \begin{macro}{\selectfont} +% \changes{v2.95}{2004/11/05}{neue Änderung} +% Spätestens ab Version~3.0 soll die Möglichkeit bestehen, |\parskip|, +% |\parindent| und |\parfillskip| mit der Schriftgröße automatisch +% anzupassen. Dazu muss |\selectfont| entsprechend erweitert werden. +% \begin{macro}{\scr@selectfont} +% \changes{v2.95}{2006/04/14}{neue Erweiterung} +% \begin{macro}{\scr@new@selectfont} +% \changes{v2.95}{2006/04/14}{neue Erweiterung} +% Damit das auch bei Verwendung des \textsf{everysel}-Pakets funktioniert, +% wird hier zusätzliche Vorsorge getroffen. +% \begin{macrocode} +\newcommand*{\scr@selectfont}{}\let\scr@selectfont\selectfont +\BeforePackage{everysel}{% + \ifx\selectfont\scr@new@selectfont\else + \ClassWarningNoLine{\KOMAClassName}{discard change of \string\selectfont}% + \fi + \let\selectfont\scr@selectfont +} +\AfterPackage{everysel}{% + \g@addto@macro\selectfont{\par@update}% + \let\scr@new@selectfont\selectfont +} +\g@addto@macro\selectfont{\par@update} +\newcommand*{\scr@new@selectfont}{}\let\scr@new@selectfont\selectfont +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\par@updaterelative} +% \changes{v2.95}{2004/11/05}{neues internes Macro} +% Die eigentliche Änderung verbirgt sich in |\par@updaterelative|. Ggf. wird +% |\par@update| zu |\par@updaterelative|. +% \begin{macrocode} +\newcommand*{\par@updaterelative}{% +% \end{macrocode} +% Die neuen Werte werden nur gesetzt, wenn die bisherigen Werten den +% erwarteten Werten entsprechen. Sonst lassen wir lieber die Finger davon, +% weil wir dann davon ausgehen, dass der Anwender die so setzen wollte. +% \begin{macrocode} + \begingroup + \edef\@tempa{\the\parindent}\ifx\@tempa\f@parindent + \aftergroup\parindent@update +%<*trace> + \else + \ClassInfo{\KOMAClassName}{\string\parindent\space not changed}% +%</trace> + \fi + \edef\@tempa{\the\parskip}\ifx\@tempa\f@parskip + \aftergroup\parskip@update +%<*trace> + \else + \ClassInfo{\KOMAClassName}{\string\parskip\space not changed}% +%</trace> + \fi + \edef\@tempa{\the\parfillskip}\ifx\@tempa\f@parfillskip + \aftergroup\parfillskip@update +%<*trace> + \else + \ClassInfo{\KOMAClassName}{\string\parfillskip\space not changed}% +%</trace> + \fi + \endgroup +} +% \end{macrocode} +% \begin{macro}{\parindent@update} +% \changes{v2.95}{2004/11/05}{neues internes Macro} +% \begin{macro}{\parskip@update} +% \changes{v2.95}{2004/11/05}{neues internes Macro} +% \begin{macro}{\parfillskip@update} +% \changes{v2.95}{2004/11/05}{neues internes Macro} +% Ein paar Hilfsmakros. +% \begin{macrocode} +\newcommand*{\parindent@update}{% + \scr@defaultunits\parindent\scr@parindent + \begingroup + \let\@tempb\endgroup + \edef\@tempa{\the\parindent}\ifx\@tempa\f@parindent\else + \def\@tempb{\endgroup\edef\f@parindent{\the\parindent}}% +%<trace> \ClassInfo{\KOMAClassName}{\string\parindent=\the\parindent}% + \fi + \@tempb +} +\newcommand*{\parskip@update}{% + \scr@defaultunits\parskip\scr@parskip + \begingroup + \let\@tempb\endgroup + \edef\@tempa{\the\parskip}\ifx\@tempa\f@parskip\else + \def\@tempb{\endgroup\edef\f@parskip{\the\parskip}}% +%<trace> \ClassInfo{\KOMAClassName}{\string\parskip=\the\parskip}% + \fi + \@tempb +} +\newcommand*{\parfillskip@update}{% + \scr@defaultunits\parfillskip\scr@parfillskip + \begingroup + \let\@tempb\endgroup + \edef\@tempa{\the\parfillskip}\ifx\@tempa\f@parfillskip\else + \def\@tempb{\endgroup\edef\f@parfillskip{\the\parfillskip}}% +%<trace> \ClassInfo{\KOMAClassName}{\string\parfillskip=\the\parfillskip}% + \fi + \@tempb +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\scr@defaultunits} +% \changes{v2.95}{2004/11/05}{neues internes Macro} +% \begin{macro}{\scr@@defaultunits} +% \changes{v2.95}{2004/11/05}{neues internes Macro} +% \begin{macro}{\scr@@@defaultunits} +% \changes{v2.95}{2004/11/05}{neues internes Macro} +% Damit |\par@updaterelative| überhaupt funktionieren kann, wird +% |\scr@defaultunits| benötigt. Dieses Makro arbeitet prinzipiell wie +% |\@defaultunits| bekommt aber Dimension bzw. Skip als erstes und den Wert +% als zweites Argument. Als Besonderheit dürften im Wert auch andere +% Dimensions bzw. Skips vor und nach \texttt{plus} und \texttt{minus} +% verwendet werden. Es sind also auch Angaben der Art "`\texttt{12 plus 1 +% minus 2}"' sowie +% "`\texttt{\string\baselineskip\string\@plus.1\string\baselineskip}"' +% gültig. +% \begin{macrocode} +\newcommand*{\scr@defaultunits}[2]{% + \begingroup + \edef\@tempa{#2}% + \expandafter\scr@@defaultunits\expandafter#1\@tempa plusplus\@nnil + \edef\@tempa{\noexpand\endgroup\noexpand\setlength{\noexpand#1}{\the#1}}% + \@tempa +} +\newcommand*{\scr@@defaultunits}{} +\def\scr@@defaultunits#1#2plus#3plus#4\@nnil{% + \ifx\relax#3\relax + \scr@@@defaultunits#1{}#2minusminus\@nnil + \else + \scr@@@defaultunits#1{#2}#3minusminus\@nnil + \fi +} +\newcommand*{\scr@@@defaultunits}{} +\def\scr@@@defaultunits#1#2#3minus#4minus#5\@nnil{% + \ifx\relax#2\relax + \@defaultunits\@tempskipa#3pt\relax\@nnil + \setlength{#1}{\@tempskipa}% + \else + \@defaultunits\@tempskipa\z@\@plus#3pt\relax\@nnil + \setlength{#1}{\@tempskipa}% + \@defaultunits\@tempskipa#2pt\relax\@nnil + \addtolength{#1}{\@tempskipa}% + \fi + \ifx\relax#4\relax\else + \@defaultunits\@tempskipa\z@\@minus #4pt\relax\@nnil + \addtolength{#1}{\@tempskipa}% + \fi +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% Absatzabstand und Absatzeinzug: +% \begin{macro}{\@listi} +% \begin{macro}{\@listI} +% \begin{macro}{\@listii} +% \begin{macro}{\@listiii} +% \begin{macro}{\@list@extra} +% \changes{v2.8q}{2001/11/06}{neu (intern)} +% \begin{macro}{\add@extra@listi} +% \changes{v2.9h}{2002/09/03}{neu (intern)} +% \begin{macro}{\footnotesize} +% \changes{v2.9h}{2002/09/03}{etwas robuster} +% \begin{macro}{\small} +% \changes{v2.9h}{2002/09/03}{etwas robuster} +% Ab Version 2.8i wird hier optionsabhängig gearbeitet. Dabei müssen +% auch die Befehle bei der Umschaltung der Schriftgröße für \cs{small} +% und \cs{footnotesize} geändert werden. +% \begin{macrocode} +\g@addto@macro{\@listi}{\@list@extra} +\let\@listI=\@listi +\g@addto@macro{\@listii}{\@list@extra} +\g@addto@macro{\@listiii}{\@list@extra} +\newcommand*{\add@extra@listi}[1]{% + \expandafter\let\csname #1@listi\endcsname=\@listi + \def\@listi{\csname #1@listi\endcsname\@list@extra}% +} +\g@addto@macro{\footnotesize}{\protect\add@extra@listi{ftns}} +\g@addto@macro{\small}{\protect\add@extra@listi{sml}} +\newcommand*{\@list@extra}{% + \ifdim\parskip>\z@\topsep\z@\parskip\parskip\itemsep\z@\fi +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \subsection{Umbruchsteuerung} +% +% Für die Umbruchsteuerung sind einige Penalties zuständig. Diese sind +% im \LaTeX-Kern definiert. Leider sind \cs{@lowpenalty}, +% \cs{@medpenalty} und \cs{@highpenalty} aber nicht mit +% Voreinstellungen versehen, besitzen einheitlich die Voreinstellung +% 0. Hier werden deshalb die Werte aus den Standardklassen übernommen: +% \begin{macrocode} +\@lowpenalty = 51 +\@medpenalty =151 +\@highpenalty =301 +% \end{macrocode} +% +% +% \iffalse +%</body> +% \fi +% +% \Finale +% +\endinput +% +% end of file `scrkpar.dtx' +%%% Local Variables: +%%% mode: doctex +%%% TeX-master: t +%%% End: |