diff options
author | Karl Berry <karl@freefriends.org> | 2018-04-02 21:16:13 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-04-02 21:16:13 +0000 |
commit | 1610548529befd1cb7d72da00a3a889261436642 (patch) | |
tree | 04d20de3c80be1f24b619689213ebb794979c0ee /Master/texmf-dist/source/latex/koma-script/scrkernel-floats.dtx | |
parent | 635bc4f06033428fe01440c71f242ec9b68fe092 (diff) |
koma-script (2apr18)
git-svn-id: svn://tug.org/texlive/trunk@47249 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrkernel-floats.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/koma-script/scrkernel-floats.dtx | 441 |
1 files changed, 322 insertions, 119 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrkernel-floats.dtx b/Master/texmf-dist/source/latex/koma-script/scrkernel-floats.dtx index 27db5a73a76..ab752b1b0cc 100644 --- a/Master/texmf-dist/source/latex/koma-script/scrkernel-floats.dtx +++ b/Master/texmf-dist/source/latex/koma-script/scrkernel-floats.dtx @@ -1,4 +1,4 @@ -% \CheckSum{1515} +% \CheckSum{1692} % \iffalse meta-comment % ====================================================================== % scrkernel-floats.dtx @@ -55,7 +55,7 @@ % Right brace \} Tilde \~} % % \iffalse -%%% From File: $Id: scrkernel-floats.dtx 2640 2017-05-08 09:36:55Z kohm $ +%%% From File: $Id: scrkernel-floats.dtx 2701 2017-11-15 14:02:01Z kohm $ %<option>%%% (run: option) %<body>%%% (run: body) %<*dtx> @@ -63,7 +63,7 @@ \ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi \begingroup \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}} - \filedate$Date: 2017-05-08 11:36:55 +0200 (Mon, 08 May 2017) $ + \filedate$Date: 2017-11-15 15:02:01 +0100 (Wed, 15 Nov 2017) $ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}} \filerevision$Revision: 1962 $ \edef\reserved@a{% @@ -1352,7 +1352,7 @@ % \end{macro}^^A \scr@@makesinglelinecaption % \end{macro}^^A \scr@makesinglelinecaption % \begin{macro}{\scr@makemultilinecaption} -% \changes{v3.21}{2016/05/31}{neu (intern)} +% \changes{v3.21}{2016/05/31}{neu (intern)}^^A % \begin{macrocode} \newcommand{\scr@makemultilinecaption}[3]{% {% @@ -1361,8 +1361,33 @@ \cap@left \vbox{\hsize\cap@width\linewidth\hsize % \end{macrocode} +% \changes{v3.25}{2017/11/15}{caption Ausrichtung hinzugefügt}^^A +% Bevor wir irgend etwas anderes machen, führen wir an der Stelle die +% Ausrichtung für die gesamte \emph{caption} einschließlich Label aus. Dabei +% hat eine vorhandene spezielle Ausrichtung für den Gleitungebungstyp Vorrang +% vor der allgemeinen Ausrichtung für alle Gleitumgebungen: +% \begin{macrocode} + \scr@ifundefinedorrelax{@captype}{% + \ClassWarning{\KOMAClassName}{% + `\string\caption' outside float.\MessageBreak + Seems you are using `\string\caption' outside a + float.\MessageBreak + Maybe you are using a package that uses + `\string\@makecaption'\MessageBreak + without setting `\string\@captype' before.\MessageBreak + Because I cannot detect the caption type, I'm using\MessageBreak + the empty one.% + }% + \let\@captype\@empty + }{}% + \scr@ifundefinedorrelax{ragged\@captype caption}{\raggedcaption}{% + \@nameuse{ragged\@captype caption}% + }% +% \end{macrocode} % Wenn der Schalter \cs{ifdofullc@p} gesetzt ist, wird der Text bezüglich des % Labels vollständig hängend gesetzt: +% \changes{v3.25}{2017/11/15}{Verwendung von \cs{scr@endstrut} statt +% \cs{unskip}\cs{strut}}^^A % \begin{macrocode} \ifdofullc@p \@hangfrom{% @@ -1375,7 +1400,7 @@ }% }% }% - {\usekomafont{caption}{#3\unskip\strut\par}}% + {\usekomafont{caption}{#3\scr@endstrut\par}}% % \end{macrocode} % Anderenfalls soll entweder nach dem Label direkt ein Umbruch erfolgen und % ein Einzug nur der ersten Zeile zu setzen: @@ -1389,7 +1414,7 @@ }% }% \noindent{\usekomafont{caption}{% - \hspace*{-\cap@indent}#3\unskip\strut\par + \hspace*{-\cap@indent}#3\scr@endstrut\par }}% % \end{macrocode} % Oder es soll nach dem Label ein Umbruch erfolgen und danach alle Zeilen mit @@ -1404,7 +1429,7 @@ }% }% \noindent\@hangfrom{\hspace*{\cap@indent}}% - {\usekomafont{caption}{#3\unskip\strut\par}}% + {\usekomafont{caption}{#3\scr@endstrut\par}}% % \end{macrocode} % Oder es soll gar kein Umbruch erfolgen aber trotzdem alles mit einem % gewissen Einzug gesetzt werden: @@ -1416,7 +1441,7 @@ \scr@smashdp{% #1{\usekomafont{captionlabel}{#2\captionformat}}% }% - {\usekomafont{caption}{#3\unskip\strut}\par}% + {\usekomafont{caption}{#3\scr@endstrut}\par}% }% \fi \fi @@ -1426,7 +1451,7 @@ % \begin{macrocode} %<*neverusethis> % #1{{\usekomafont{captionlabel}{#2\captionformat}}}% -% \ignorespaces #3\unskip\strut\par +% \ignorespaces #3\scr@endstrut\par %</neverusethis> % \end{macrocode} % Die allerdings durch die Form mit Einzug 0 abgedeckt wird. @@ -1438,6 +1463,175 @@ }\kern-\dp\strutbox } % \end{macrocode} +% \begin{macro}{\setcaptionalignment} +% \changes{v3.25}{2017/11/15}{neu}^^A +% Da es etwas lästig und fehleranfällig ist, die ganzen \cs{raggedcaption} +% und \cs{ragged\dots caption} von Hand zu definieren, gibt es dafür einen +% Befehl. Das erste, optionale Argument ist dabei die Gleitungebung für die +% die Definition erfolgen soll. Ist das Argument nicht leer, wird bei +% definiertem \cs{@captype} dieses als Gleitumgebung angenommen. Ist das +% Argument leer wird stattdessen die allgemeine Ausrichtung festgelegt. Das +% zweite Argument ist ein einzelner Buchstaben, der für die Ausrichtung steht. +% \begin{macrocode} +\newcommand*\setcaptionalignment{% + \kernel@ifnextchar [%] + {\@setcaptionalignment} + {% + \scr@ifundefinedorrelax{@captype}{\@setcaptionalignment}{% + \edef\reserved@a{\noexpand\@setcaptionalignment[{\@captype}]}\reserved@a + }% + }% +}% +\newcommand*\@setcaptionalignment[2][]{% +% \end{macrocode} +% Wenn das optionale Argument nicht leer ist, sollte es eine bereits +% definierte Gleitumgebung sein. Anderenfalls wird vorsichtshalber zumindest +% eine Warnung ausgegeben. Die Ausrichtung wird aber trotzde, definiert. +% \begin{macrocode} + \IfArgIsEmpty{#1}{}{% + \expandafter\ifnum + \scr@ifundefinedorrelax{#1}{0}{\scr@ifundefinedorrelax{end#1}{0}{1}}=0 + \ClassWarning{\KOMAClassName}{% + float type `#1' defined not yet,\MessageBreak + but setting ragged mode for captions of\MessageBreak + float type `#1'% + }% + \fi + }% +% \end{macrocode} +% Danach gehen wir die Buchstaben durch. Erlaubt sind: +% \begin{description} +% \item[\texttt{j}] -- Blocksatz (\cs{ragged\dots caption} wird \cs{relax}. +% \item[\texttt{l}] -- Blocksatz (\cs{ragged\dots caption} wird +% \cs{raggedright}. +% \item[\texttt{r}] -- Blocksatz (\cs{ragged\dots caption} wird +% \cs{raggedleft}. +% \item[\texttt{c}] -- Blocksatz (\cs{ragged\dots caption} wird +% \cs{centering}. +% \end{description} +% Ist das Paket \textsf{ragged2e} geladen, werden stattdessen die Befehle +% \cs{LaTeXraggedright}, \cs{LaTeXraggedleft} und \cs{LaTeXcentering} +% verwendet. Außerdem führen dann die entsprechenden Großbuchstaben zu +% \cs{justifying}, \cs{RaggedRight}, \cs{RaggedLeft} und +% \cs{Centering}. Anderenfalls werden die Großbuchstaben wie die +% Kleinbuchstaben behandelt und geben zusätzlich eine Warnung aus. +% \begin{macrocode} + \def\reserved@a{#2}% + \ifstr{\reserved@a}{j}{% + \expandafter\let\csname ragged#1caption\endcsname\@empty + }{% + \ifstr{\reserved@a}{l}{% + \scr@ifundefinedorrelax{LaTeXraggedright}{% + \expandafter\let\csname ragged#1caption\endcsname\raggedright + }{% + \expandafter\let\csname ragged#1caption\endcsname\LaTeXraggedright + }% + }{% + \ifstr{\reserved@a}{r}{% + \scr@ifundefinedorrelax{LaTeXraggedleft}{% + \expandafter\let\csname ragged#1caption\endcsname\raggedleft + }{% + \expandafter\let\csname ragged#1caption\endcsname\LaTeXraggedleft + }% + }{% + \ifstr{\reserved@a}{c}{% + \scr@ifundefinedorrelax{LaTeXcentering}{% + \expandafter\let\csname ragged#1caption\endcsname\centering + }{% + \expandafter\let\csname ragged#1caption\endcsname\LaTeXcentering + }% + }{% + \ifstr{\reserved@a}{J}{% + \scr@ifundefinedorrelax{justifying}{% + \scr@caption@raggede@warning{J}{\justifying}% + \expandafter\let\csname ragged#1caption\endcsname\@empty + }{% + \expandafter\let\csname ragged#1caption\endcsname\justifying + }% + }{% + \ifstr{\reserved@a}{L}{% + \scr@ifundefinedorrelax{RaggedRight}{% + \scr@caption@raggede@warning{L}{\RaggedRight}% + \expandafter\let\csname ragged#1caption\endcsname\raggedright + }{% + \expandafter\let\csname ragged#1caption\endcsname\RaggedRight + }% + }{% + \ifstr{\reserved@a}{R}{% + \scr@ifundefinedorrelax{RaggedLeft}{% + \scr@caption@raggede@warning{R}{\RaggedLeft}% + \expandafter\let\csname ragged#1caption\endcsname\raggedleft + }{% + \expandafter\let\csname ragged#1caption\endcsname\RaggedLeft + }% + }{% + \ifstr{\reserved@a}{C}{% + \scr@ifundefinedorrelax{Centering}{% + \scr@caption@raggede@warning{C}{\Centering}% + \expandafter\let\csname ragged#1caption\endcsname\centering + }{% + \expandafter\let\csname ragged#1caption\endcsname\Centering + }% + }{% + \ifstr{\reserved@a}{}{% + \expandafter\let\csname ragged#1caption\endcsname\relax + }{% + \ClassError{\KOMAClassName}{unknown alignment char `#2'}{% + \string\setcaptionalignment\space supports + only:\MessageBreak + \space\space c - centered captions,\MessageBreak + \space\space j - justified captions,\MessageBreak + \space\space l - left align captions,\MessageBreak + \space\space r - right aligned captions,\MessageBreak + \space\space C - centered captions with + `ragged2e',\MessageBreak + \space\space J - justified captions with + `ragged2e',\MessageBreak + \space\space L - left align captions with + `ragged2e',\MessageBreak + \space\space R - right aligned captions with + `ragged2e',\MessageBreak + or an empty argument to remove special + alignment.\MessageBreak + If you'd continue, I'd not change the alignment.% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% +} +% \end{macrocode} +% \begin{macro}{\scr@caption@raggede@warning} +% \changes{v3.25}{2017/11/15}{neu (intern)}^^A +% Das ist die oben erwähnte Warnung. +% \begin{macrocode} +\newcommand*{\scr@caption@raggede@warning}[2]{% + \begingroup + \lowercase{\def\reserved@a{#1}}% + \ClassWarning{\KOMAClassName}{% + `\string#2' undefined!\MessageBreak + To avoid replacing caption alignment `#1' by `\reserved@a'\MessageBreak + you should load package `ragged2e' before using\MessageBreak + `\string\setcaptionalignment'% + }% + \endgroup +} +% \end{macrocode} +% \begin{macro}{\raggedcaption} +% \changes{v3.25}{2017/11/15}{neu}^^A +% Und natürlich wird eine Standardausrichtung benötigt. Ich bevorzuge hier die +% leere Ausrichtung, weil \LaTeX{} \cs{relax} nicht als definiert erkennt. +% \begin{macrocode} +\newcommand*\raggedcaption{} +% \end{macrocode} +% \end{macro} +% \end{macro}^^A \scr@caption@raggede@warning +% \end{macro}^^A \setcaptionalignment % \end{macro}^^A \scr@makemultilinecaption % \end{macro}^^A \@@makecaption % \end{macro}^^A \@makecaption @@ -1496,6 +1690,12 @@ }% \LT@mcol\LT@cols c{% \hbox to\z@{\hss\parbox[t]\linewidth{% +% \end{macrocode} +% \changes{v3.25}{2017/11/15}{\cs{@captype} auf \texttt{table} gesetzt}^^A +% Damit \cs{raggedtablecaption} ggf. verwendet wird, wird hier \cs{@captype} +% explizit auf \texttt{table} gesetzt. +% \begin{macrocode} + \def\@captype{table}% \@@makecaption{#1}{#2}{#3}% \endgraf \if@captionabove @@ -1673,89 +1873,87 @@ % \begin{environment}{figure} % \changes{v2.2c}{1995/05/25}{Abbildungsausgabe auf CJK umgestellt}^^A % \changes{v2.8h}{2001/07/19}{\cs{caption} wird explizit zu -% \cs{captionbelow}}^^A +% \cs{captionbelow}}^^A +% \changes{v3.25}{2017/10/10}{Reimplementierung mit \textsf{tocbasic}}^^A % Zunächst werden \texttt{figure}s, also Abbildungen behandelt. % \begin{Counter}{figure} -% \begin{macro}{\thefigure} -% \changes{v2.97e}{2007/11/23}{Kapitelnummer nur im Hauptteil}^^A -% \begin{macro}{\figureformat} -% \changes{v2.3c}{1995/08/06}{neu}^^A -% Dafür wird ein neuer Zähler benötigt, der bei der Buch- und der -% Bericht-Klasse mit \cs{chapter} zurückgesetzt wird und auch den -% Kapitelzähler mit enthält. +% \changes{v3.25}{2017/10/10}{Der Zähler wird implizit von +% \cs{DeclareNewTOC} definiert.}^^A +% \end{Counter} +% Der ganze Rest kann mit \cs{DeclareNewTOC} erledigt werden. % \begin{macrocode} -%<book|report>\newcounter{figure}[chapter] -%<article>\newcounter{figure} -\renewcommand*\thefigure{% -%<*book> - \expandafter\ifnum\scr@v@is@gt{2.97d}\relax - \if@mainmatter\thechapter.\fi - \else -%</book> -%<book|report> \thechapter.% -%<book> \fi - \@arabic\c@figure -} -\newcommand*{\figureformat}{% - \figurename~\thefigure% -%<report|book> \autodot% -} +\DeclareNewTOC[% + type=figure, + float, +%<book|report> counterwithin=chapter, % \end{macrocode} -% \end{macro} -% \end{macro} -% \end{Counter} % \begin{macro}{\fps@figure} % Die Standardplatzierung für Abbildungen ist \emph{t}op, % \emph{b}ottom, \emph{p}age. % \begin{macrocode} -\newcommand*{\fps@figure}{tbp} -% \end{macrocode} + floatpos=tbp, % \end{macro} % \begin{macro}{\ftype@figure} % Um die verschiedenen \emph{float}-Typen unterscheiden zu können, -% benätigen sie eine Nummer. Abbildungen bekommen hier willkürlich +% benötigen sie eine Nummer. Abbildungen bekommen hier willkürlich % die Nummer 1. % \begin{macrocode} -\newcommand*{\ftype@figure}{1} + floattype=1, % \end{macrocode} % \end{macro} +% \changes{v3.11c}{2013/03/01}{fix: one \cs{caption} change removed}^^A +% \changes{v3.20}{2016/04/07}{Interne Umdefinierung von \cs{caption}}^^A +% \begin{macrocode} + tocentryindent=1.5em, + tocentrynumwidth=2.3em, + atbegin=\def\caption{% + \if@figurecaptionabove\expandafter\captionabove + \else\expandafter\captionbelow\fi + } +% \end{macrocode} % \begin{macro}{\ext@figure} % Die Extension der Datei für das Abbildungsverzeichnis. % \begin{macrocode} -\newcommand*{\ext@figure}{lof} +]{lof} % \end{macrocode} % \end{macro} -% \begin{macro}{\fnum@figure} -% Die Ausgabe der Abbildungsnummer. +% \begin{macro}{\thefigure} +% \changes{v2.97e}{2007/11/23}{Kapitelnummer nur im Hauptteil}^^A % \begin{macrocode} -\newcommand*{\fnum@figure}{\figureformat} +%<*book|report> +\renewcommand*\thefigure{% +%<*book> + \expandafter\ifnum\scr@v@is@gt{2.97d}\relax + \if@mainmatter\thechapter.\fi + \else +%</book> + \thechapter.% +%<book> \fi + \@arabic\c@figure +} +%</book|report> % \end{macrocode} % \end{macro} -% Jetzt aber zurück zur Umgebung. Wie üblich gibt es eine Version mit -% und eine Version ihne Stern. Zur unterschiedlichen Bedeutung bei -% zweispaltigem Satz siehe \texttt{classes.dtx} und \texttt{source2e}. -% \changes{v3.11c}{2013/03/01}{fix: one \cs{caption} change removed}^^A -% \changes{v3.20}{2016/04/07}{Interne Umdefinierung von \cs{caption}}^^A +% \begin{macro}{\fnum@figure} +% \begin{macro}{\figureformat} +% \changes{v2.3c}{1995/08/06}{neu}^^A +% Die Ausgabe der Abbildungsnummer wird implizit von \cs{DeclareNewTOC} als +% \iffalse +%<*ignore> +% \fi % \begin{macrocode} -\newenvironment{figure}{% - \def\caption{% - \if@figurecaptionabove\expandafter\captionabove - \else\expandafter\captionbelow\fi - }% - \@float{figure}% -}{% - \end@float -} -\newenvironment{figure*}{% - \def\caption{% - \if@figurecaptionabove\expandafter\captionabove - \else\expandafter\captionbelow\fi - }% - \@dblfloat{figure}% -}{% - \end@dblfloat +\newcommand*{\fnum@figure}{\figureformat} +\newcommand*{\figureformat}{% + \figurename~\thefigure + \csname autodot\endcsname } % \end{macrocode} +% \iffalse +%</ignore> +% \fi +% definiert. +% \end{macro} +% \end{macro} % \end{environment} % % @@ -1765,81 +1963,86 @@ % \changes{v2.2c}{1995/05/25}{Tabellenausgabe auf CJK umgestellt}^^A % \changes{v2.8h}{2001/07/19}{bei Tabellen kann der Default für % \cs{caption} von Unter- auf Überschriften geändert werden} +% \changes{v3.25}{2017/10/10}{Reimplementierung mit \textsf{tocbasic}}^^A % Auch verschiebbare Tabellen sind möglich. Das Prinzip ist das % gleiche wie bei den Abbildungen. % \begin{Counter}{table} -% \begin{macro}{\thetable} -% \changes{v2.97e}{2007/11/23}{Kapitelnummer nur im Hauptteil}^^A -% \begin{macro}{\tableformat} -% \changes{v2.3c}{1995/08/06}{neu}^^A +% \changes{v3.25}{2017/10/10}{Der Zähler wird implizit von +% \cs{DeclareNewTOC} definiert.}^^A +% \end{Counter} +% Der ganze Rest kann mit \cs{DeclareNewTOC} erledigt werden. % \begin{macrocode} -%<article>\newcounter{table} -%<book|report>\newcounter{table}[chapter] -\renewcommand*\thetable{% -%<*book> - \expandafter\ifnum\scr@v@is@gt{2.97d}\relax - \if@mainmatter\thechapter.\fi - \else -%</book> -%<book|report> \thechapter.% -%<book> \fi - \@arabic\c@table -} -\newcommand*{\tableformat}{% - \tablename~\thetable% -%<report|book> \autodot% -} +\DeclareNewTOC[% + type=table, + float, +%<book|report> counterwithin=chapter, % \end{macrocode} -% \end{macro} -% \end{macro} -% \end{Counter} % \begin{macro}{\fps@table} +% Die Standardplatzierung für Tabellen ist \emph{t}op, +% \emph{b}ottom, \emph{p}age. % \begin{macrocode} -\newcommand*{\fps@table}{tbp} -% \end{macrocode} + floatpos=tbp, % \end{macro} % \begin{macro}{\ftype@table} -% Allerdings wird für Tabellen willkürlich Nummer 2 verwendet. +% Um die verschiedenen \emph{float}-Typen unterscheiden zu können, +% benötigen sie eine Nummer. Tabellen bekommen hier willkürlich +% die Nummer 2. % \begin{macrocode} -\newcommand*{\ftype@table}{2} + floattype=2, % \end{macrocode} % \end{macro} +% \changes{v3.20}{2016/04/07}{Interne Umdefinierung von \cs{caption}}^^A +% \begin{macrocode} + tocentryindent=1.5em, + tocentrynumwidth=2.3em, + atbegin=\def\caption{% + \if@tablecaptionabove\expandafter\captionabove + \else\expandafter\captionbelow\fi + } +% \end{macrocode} % \begin{macro}{\ext@table} -% Natürlich haben sie auch eine andere Extension. +% Die Extension der Datei für das Abbildungsverzeichnis. % \begin{macrocode} -\newcommand*{\ext@table}{lot} +]{lot} % \end{macrocode} % \end{macro} -% \begin{macro}{\fnum@table} -% Die Ausgabe der Nummer kann ebenfalls abweichen. +% \begin{macro}{\thetable} +% \changes{v2.97e}{2007/11/23}{Kapitelnummer nur im Hauptteil}^^A % \begin{macrocode} -\newcommand*{\fnum@table}{\tableformat} +%<*book|report> +%<book|report>\renewcommand*\thetable{% +%<*book> + \expandafter\ifnum\scr@v@is@gt{2.97d}\relax + \if@mainmatter\thechapter.\fi + \else +%</book> +%<book|report> \thechapter.% +%<book> \fi + \@arabic\c@table +} +%</book|report> % \end{macrocode} % \end{macro} -% \changes{v3.20}{2016/04/07}{Interne Umdefinierung von \cs{caption}}^^A -% Ob es \cs{caption} in der Voreinstellung eine Tabellenüberschrift -% oder eine Tabellenunterschrift erzeugt, hängt hier von den Optionen -% ab. +% \begin{macro}{\fnum@table} +% \begin{macro}{\tableformat} +% \changes{v2.3c}{1995/08/06}{neu}^^A +% Die Ausgabe der Abbildungsnummer wird implizit von \cs{DeclareNewTOC} als +% \iffalse +%<*ignore> +% \fi % \begin{macrocode} -\newenvironment{table}{% - \def\caption{% - \if@tablecaptionabove\expandafter\captionabove - \else\expandafter\captionbelow\fi - }% - \@float{table}% -}{% - \end@float -} -\newenvironment{table*}{% - \def\caption{% - \if@tablecaptionabove\expandafter\captionabove - \else\expandafter\captionbelow\fi - }% - \@dblfloat{table}% -}{% - \end@dblfloat +\newcommand*{\fnum@table}{\tableformat} +\newcommand*{\tableformat}{% + \tablename~\thetable + \csname autodot\endcsname } % \end{macrocode} +% \iffalse +%</ignore> +% \fi +% definiert. +% \end{macro} +% \end{macro} % \end{environment} % % \iffalse |