From 7e18665e4aef9a8a3a8e42eac34504a9914b15cf Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Fri, 3 Jan 2020 03:00:55 +0000 Subject: CTAN sync 202001030300 --- macros/latex/contrib/chess-problem-diagrams/README | 2 +- .../contrib/chess-problem-diagrams/diagram.dtx | 177 +- .../contrib/chess-problem-diagrams/diagram.pdf | Bin 350236 -> 357255 bytes macros/latex/contrib/covington/README | 5 +- macros/latex/contrib/covington/covington.pdf | Bin 563118 -> 477545 bytes macros/latex/contrib/covington/covington.sty | 12 +- macros/latex/contrib/covington/covington.tex | 12 +- macros/latex/contrib/epigraph/README | 78 - macros/latex/contrib/epigraph/README.md | 89 + macros/latex/contrib/epigraph/epigraph.dtx | 100 +- macros/latex/contrib/epigraph/epigraph.pdf | Bin 183661 -> 314219 bytes macros/latex/contrib/geometry-de/README | 53 - macros/latex/contrib/geometry-de/README-DE | 53 - macros/latex/contrib/geometry-de/geometry-de.dtx | 3844 ------------------- macros/latex/contrib/geometry-de/geometry-de.pdf | Bin 470378 -> 0 bytes macros/latex/contrib/geometry-de/geometry.ins | 81 - macros/latex/contrib/geometry/README.md | 16 +- macros/latex/contrib/geometry/changes.txt | 4 + macros/latex/contrib/geometry/geometry-de.dtx | 3865 ++++++++++++++++++++ macros/latex/contrib/geometry/geometry-de.pdf | Bin 0 -> 465858 bytes macros/latex/contrib/geometry/geometry-samples.tex | 73 - macros/latex/contrib/geometry/geometry.dtx | 20 +- macros/latex/contrib/geometry/geometry.pdf | Bin 442423 -> 440535 bytes .../latex/contrib/nicematrix/nicematrix-french.pdf | Bin 315137 -> 315057 bytes .../latex/contrib/nicematrix/nicematrix-french.tex | 11 +- macros/latex/contrib/nicematrix/nicematrix.dtx | 226 +- macros/latex/contrib/nicematrix/nicematrix.pdf | Bin 682462 -> 686625 bytes macros/latex/contrib/schwalbe-chess/README | 2 +- macros/latex/contrib/schwalbe-chess/schwalbe.dtx | 137 +- macros/latex/contrib/schwalbe-chess/schwalbe.pdf | Bin 213351 -> 221555 bytes macros/latex/contrib/verifica/README | 84 + macros/latex/contrib/verifica/example1.pdf | Bin 0 -> 154728 bytes macros/latex/contrib/verifica/example1.tex | 106 + macros/latex/contrib/verifica/example2.pdf | Bin 0 -> 104460 bytes macros/latex/contrib/verifica/example2.tex | 105 + macros/latex/contrib/verifica/example3.pdf | Bin 0 -> 82544 bytes macros/latex/contrib/verifica/example3.tex | 89 + macros/latex/contrib/verifica/example4.pdf | Bin 0 -> 125337 bytes macros/latex/contrib/verifica/example4.tex | 97 + macros/latex/contrib/verifica/example5.pdf | Bin 0 -> 86408 bytes macros/latex/contrib/verifica/example5.tex | 96 + .../latex/contrib/verifica/verifica-template.tex | 29 + macros/latex/contrib/verifica/verifica.dtx | 2477 +++++++++++++ macros/latex/contrib/verifica/verifica.ins | 61 + macros/latex/contrib/verifica/verifica.pdf | Bin 0 -> 830306 bytes 45 files changed, 7625 insertions(+), 4379 deletions(-) delete mode 100644 macros/latex/contrib/epigraph/README create mode 100644 macros/latex/contrib/epigraph/README.md delete mode 100644 macros/latex/contrib/geometry-de/README delete mode 100644 macros/latex/contrib/geometry-de/README-DE delete mode 100644 macros/latex/contrib/geometry-de/geometry-de.dtx delete mode 100644 macros/latex/contrib/geometry-de/geometry-de.pdf delete mode 100644 macros/latex/contrib/geometry-de/geometry.ins create mode 100644 macros/latex/contrib/geometry/geometry-de.dtx create mode 100644 macros/latex/contrib/geometry/geometry-de.pdf delete mode 100644 macros/latex/contrib/geometry/geometry-samples.tex create mode 100644 macros/latex/contrib/verifica/README create mode 100644 macros/latex/contrib/verifica/example1.pdf create mode 100644 macros/latex/contrib/verifica/example1.tex create mode 100644 macros/latex/contrib/verifica/example2.pdf create mode 100644 macros/latex/contrib/verifica/example2.tex create mode 100644 macros/latex/contrib/verifica/example3.pdf create mode 100644 macros/latex/contrib/verifica/example3.tex create mode 100644 macros/latex/contrib/verifica/example4.pdf create mode 100644 macros/latex/contrib/verifica/example4.tex create mode 100644 macros/latex/contrib/verifica/example5.pdf create mode 100644 macros/latex/contrib/verifica/example5.tex create mode 100644 macros/latex/contrib/verifica/verifica-template.tex create mode 100644 macros/latex/contrib/verifica/verifica.dtx create mode 100644 macros/latex/contrib/verifica/verifica.ins create mode 100644 macros/latex/contrib/verifica/verifica.pdf (limited to 'macros/latex/contrib') diff --git a/macros/latex/contrib/chess-problem-diagrams/README b/macros/latex/contrib/chess-problem-diagrams/README index a9573ef1dc..6e9503a16e 100644 --- a/macros/latex/contrib/chess-problem-diagrams/README +++ b/macros/latex/contrib/chess-problem-diagrams/README @@ -1,5 +1,5 @@ diagram --- A package for typesetting chessproblems -Version v1.12 / Stefan Hoening 2015 +Version v1.15 / Stefan Hoening 1994-2019 CONTENTS diff --git a/macros/latex/contrib/chess-problem-diagrams/diagram.dtx b/macros/latex/contrib/chess-problem-diagrams/diagram.dtx index 8213e7b453..249d14058b 100644 --- a/macros/latex/contrib/chess-problem-diagrams/diagram.dtx +++ b/macros/latex/contrib/chess-problem-diagrams/diagram.dtx @@ -13,9 +13,9 @@ %% %% % \fi -% \def\fileversion{v1.12} -% \def\docdate{2016/01/06} -% \CheckSum{4288} +% \def\fileversion{v1.15} +% \def\docdate{2019/12/28} +% \CheckSum{4545} % \changes{v0.1}{15 Februar 2004}{First Version} % \changes{v0.2}{23 Februar 2004}{Added the documentation for the % {\itshape information collecting} macros which may be used @@ -72,6 +72,10 @@ % \changes{v1.11.1}{16 March 2015}{Fixed issue 03f/b31:om: diagram.sty: label and ref don't respect diagnum prefix or diagnumbering setting.} % \changes{v1.12}{06 January 2016}{Implemented issue: 03f/fc0:om: diagram.dtx: change def x to newcommand.\\ % Changed name of internal commands ds@left, ds@right, ds@upsidedown due to a naming collising with options from eurosym.sty.} +% \changes{v1.13}{04 April 2019}{Implemented issue: 03f/99b:om: diagram.dtx: added new command fen to allow entering forsyth-edwards-notation} +% \changes{v1.14}{02 September 2019}{Fixed issue with stereo- and space-diagrams.} +% \changes{v1.15}{28 December 2019}{Fixed frame issue with stereo- and space-diagrams.\\ +% Added hook commands for begin/end diagram.} % % \DoNotIndex{\@arabic,\def,\@idxitem,\@ifnextchar,\@ifstar, % \@ne,\@ptsize,\ ,\advance,\AtEndOfPackage,\begin,\begingroup, @@ -100,7 +104,7 @@ % \begin{abstract} % It have been more than ten years now, since we last published a documented % version of the {\ttfamily diagram.sty}, which is mainly intended to -% be used for typesetting chess problems. Since 1994 I (Stefan H"oning) made a +% be used for typesetting chess problems. Since 1994 I (Stefan H\"oning) made a % couple of enhancements to the sourcecode of the style, without publishing and % putting this into the documentation. We also needed to upgrade to \LaTeXe. % The major change is the documentation language, which is english now. @@ -147,7 +151,7 @@ % \setboolean{legend}{true} % \author{Brand, Thomas} % \source{Problemkiste} \year{1992} -% \pieces[3+2]{wKa4, wLb5, wSh3, sKb7, sBh4} +% \fen{8/1k6/8/1B6/K6p/7N/8/8} % \stip{h\#5} % \sol{1.Ka8 Sg1, 2.h3 Ka5, 3.h2 Kb6, 4.h\x g1L+ Kc7, 5.La7 Lc6\#} % \end{diagram} @@ -256,6 +260,17 @@ % displayed as a black filled circle. So {\ttfamily sCf4} will % produce the symbol of an imitator. This is shown in % diagram~\ref{bigdia}. +% \item \DescribeMacro{\fen} +% As an alternative notation it is possible to enter the position in +% \textit{Forsyth-Edwards-Notation}. This is possible for 8\,$\times$\,8 boards +% only. +% +% As an example: The position in diagram~\ref{BSP2} was created via\newline +% |\fen{8/1k6/8/1B6/K6p/7N/8/8}|. +% +% +% As with the |\pieces| command, you may provide the number of white and +% black pieces as an optional parameter. % \item \DescribeMacro{\stipulation} \DescribeMacro{\stip} % is used to specify the stipulation of the problem, e.\,g.\ % |\stipulation{\#2}| may be used to specify a \explained{mate in @@ -970,7 +985,7 @@ % Specifies the preamble of our style file. % \begin{macrocode} %<*style> -\ProvidesPackage{diagram}[2016/01/06] +\ProvidesPackage{diagram}[2019/12/28] % \end{macrocode} % % \begin{macro}{\DefaultDiagramSize} @@ -1071,6 +1086,9 @@ \newcounter{cpd@blackPieces} \newcounter{cpd@neutralPieces} +\newcounter{cpd@row} +\newcounter{cpd@line} + \newcommand{\cpd@stepcounterWhite}{\stepcounter{cpd@whitePieces}} \newcommand{\cpd@stepcounterBlack}{\stepcounter{cpd@blackPieces}} \newcommand{\cpd@stepcounterNeutral}{\stepcounter{cpd@neutralPieces}} @@ -1148,6 +1166,7 @@ \newtoks\fieldframe@tk\fieldframe@tk={\relax} \newtoks\gridlines@tk\gridlines@tk={\relax} \newtoks\pieces@tk\pieces@tk={\relax} +\newtoks\fen@tk\fen@tk={\relax} \newtoks\fieldtext@tk\fieldtext@tk={\relax} \newtoks\text@tk\text@tk={\relax} \newtoks\stipulation@tk\stipulation@tk={\relax} @@ -1184,6 +1203,7 @@ \newif\if@judgement\@judgementfalse \newif\if@comment\@commentfalse \newif\if@pieces\@piecesfalse +\newboolean{@cpd@fen}\setboolean{@cpd@fen}{false}% \newif\if@fieldtext\@fieldtextfalse \newif\if@nofields\@nofieldsfalse \newif\if@gridlines\@gridlinesfalse @@ -1248,6 +1268,16 @@ \newif\ifds@label % \end{macrocode} % +% \begin{macro}{\cpd@begindiagram@hook} +% \begin{macro}{\cpd@enddiagram@hook} +% We define hooks to be executed in |\begin{diagram}| and |\end{diagram}|. +% \begin{macrocode} +\newcommand{\cpd@begindiagram@hook}{} +\newcommand{\cpd@enddiagram@hook}{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% % \begin{macro}{\diagram} % \begin{macro}{\@diagram} % Defines the code executed in |\begin{diagram}|. In case no @@ -1258,12 +1288,16 @@ \@ifnextchar [{\@diagram}{\@diagram[\@ight x\@ight]}% } -\def\@diagram[#1x#2]{% - \lines@max=#1% - \rows@max=#2% +\def\@cpd@initsize#1#2{% \setcounter{cpd@linesmax}{#1}% \setcounter{cpd@rowsmax}{#2}% \setcounter{cpd@maxsquare}{\value{cpd@rowsmax}*\value{cpd@linesmax}}% +} + +\def\@diagram[#1x#2]{% + \lines@max=#1% + \rows@max=#2% + \@cpd@initsize{#1}{#2}% \pl@ne=\z@% \current@plane=\z@% \let\put@sqs=\put@sqs@normal% @@ -1278,13 +1312,16 @@ % \begin{macrocode} \def\stereodiagram{% \begingroup% + \inner@frame=0.6pt% \@stereotrue% + \@cpd@initsize{8}{8}% \let\put@sqs=\put@sqs@stereo% \let\read@plane=\read@plane@stereo% \@start@diagram% } \def\spacediagram{% \begingroup% + \inner@frame=0.6pt% \@spacetrue% \@ifnextchar [{\@spacediagram}{\@spacediagram[5x5x5]}% } @@ -1293,6 +1330,7 @@ \lines@max=#1% \rows@max=#2% \planes@max=#3% + \@cpd@initsize{#1}{#2}% \let\put@sqs=\put@sqs@space% \let\read@plane=\read@plane@space% \@start@diagram% @@ -1304,6 +1342,7 @@ \let\month=\ds@month% \let\year=\ds@year% \let\label=\ds@label% + \cpd@begindiagram@hook% \ignorespaces% } @@ -1470,6 +1509,7 @@ }% }}% End of \dia@box \do@dia@job% + \cpd@enddiagram@hook% \endgroup% } @@ -1856,6 +1896,16 @@ \pieces@tk={#1}\@piecestrue% \ignorespaces% } +\newcommand{\fen}[2][]{% + \ifthenelse{\equal{#1}{}}% + {}% Do nothing + {% + \setboolean{cpd@checkPieceCounts}{true}% + \@parseWhiteAndBlackCount#1+\e@list + }% + \fen@tk={#2}\setboolean{@cpd@fen}{true}% + \ignorespaces% +} \def\fieldtext#1{% \fieldtext@tk={#1}\@fieldtexttrue% \ignorespaces% @@ -2749,6 +2799,18 @@ \fi% \l@@k% } +\def\cpd@fen@setpiece{% + \ifnum\pl@ne=\current@plane% + \cpd@stepcounterPieces% + \set@current@square@index{\value{cpd@line}}{\value{cpd@row}}% + \get@current@square@value% + \ifthenelse{\value{cpd@current@square@value}=\m@ne} + {\set@current@square@value{\the\help@a}}% + {\ifthenelse{\value{cpd@current@square@value}=144}% + {\set@current@square@value{\the\help@a+18}}% + {\errmessage{Trying to set a piece to an occupied square}}}% + \fi% +} \def\set@nofield, {% \ifnum\pl@ne=\current@plane% \set@current@square@index\lin@\r@w% @@ -2782,6 +2844,95 @@ \fi% \nextpr@c% } +\def\@cpd@handle@fen#1{% + \ifx#1/\relax% + \ifthenelse{\value{cpd@line}=8}% + {% + \setcounter{cpd@line}{0}% + \addtocounter{cpd@row}{\m@ne}% + }% + {% + \errmessage{FEN: there is now row to end here}% + }% + \else\ifx#1K\relax% + \let\cpd@stepcounterPieces\cpd@stepcounterWhite% + \help@a=5% + \cpd@fen@setpiece% + \addtocounter{cpd@line}{\@ne}% + \else\ifx#1Q\relax% + \let\cpd@stepcounterPieces\cpd@stepcounterWhite% + \help@a=4% + \cpd@fen@setpiece% + \addtocounter{cpd@line}{\@ne}% + \else\ifx#1R\relax% + \let\cpd@stepcounterPieces\cpd@stepcounterWhite% + \help@a=3% + \cpd@fen@setpiece% + \addtocounter{cpd@line}{\@ne}% + \else\ifx#1B\relax% + \let\cpd@stepcounterPieces\cpd@stepcounterWhite% + \help@a=2% + \cpd@fen@setpiece% + \addtocounter{cpd@line}{\@ne}% + \else\ifx#1N\relax% + \let\cpd@stepcounterPieces\cpd@stepcounterWhite% + \help@a=1% + \cpd@fen@setpiece% + \addtocounter{cpd@line}{\@ne}% + \else\ifx#1P\relax% + \let\cpd@stepcounterPieces\cpd@stepcounterWhite% + \help@a=0% + \cpd@fen@setpiece% + \addtocounter{cpd@line}{\@ne}% + \else\ifx#1k\relax% + \let\cpd@stepcounterPieces\cpd@stepcounterBlack% + \help@a=17% + \cpd@fen@setpiece% + \addtocounter{cpd@line}{\@ne}% + \else\ifx#1q\relax% + \let\cpd@stepcounterPieces\cpd@stepcounterBlack% + \help@a=16% + \cpd@fen@setpiece% + \addtocounter{cpd@line}{\@ne}% + \else\ifx#1r\relax% + \let\cpd@stepcounterPieces\cpd@stepcounterBlack% + \help@a=15% + \cpd@fen@setpiece% + \addtocounter{cpd@line}{\@ne}% + \else\ifx#1b\relax% + \let\cpd@stepcounterPieces\cpd@stepcounterBlack% + \help@a=14% + \cpd@fen@setpiece% + \addtocounter{cpd@line}{\@ne}% + \else\ifx#1n\relax% + \let\cpd@stepcounterPieces\cpd@stepcounterBlack% + \help@a=13% + \cpd@fen@setpiece% + \addtocounter{cpd@line}{\@ne}% + \else\ifx#1p\relax% + \let\cpd@stepcounterPieces\cpd@stepcounterBlack% + \help@a=12% + \cpd@fen@setpiece% + \addtocounter{cpd@line}{\@ne}% + \else\ifx1#1\relax% + \addtocounter{cpd@line}{1}% + \else\ifx2#1\relax% + \addtocounter{cpd@line}{2}% + \else\ifx3#1\relax% + \addtocounter{cpd@line}{3}% + \else\ifx4#1\relax% + \addtocounter{cpd@line}{4}% + \else\ifx5#1\relax% + \addtocounter{cpd@line}{5}% + \else\ifx6#1\relax% + \addtocounter{cpd@line}{6}% + \else\ifx7#1\relax% + \addtocounter{cpd@line}{7}% + \else\ifx8#1\relax% + \addtocounter{cpd@line}{8}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +} +\def\@cpd@parse@fen#1{\@cpd@handle@fen#1\l@@klist} \def\p@rsepieces#1, {\getc@lor#1\e@list\l@@klist} \def\p@rsetext#1, {\get@text#1\e@list\l@@klist} \def\set@text{% @@ -3017,6 +3168,14 @@ % Now we should clear the board \clear@board% % Let us now parse the list of pieces + \ifthenelse{\boolean{@cpd@fen}}{% + \ifthenelse{\value{cpd@rowsmax}=8}{}{\errmessage{FEN is only allowed for 8x8 boards.}} + \ifthenelse{\value{cpd@linesmax}=8}{}{\errmessage{FEN is only allowed for 8x8 boards.}} + \setcounter{cpd@row}{7}% + \setcounter{cpd@line}{0}% + \let\@action\@cpd@parse@fen% + \@parseTokenlist\fen@tk\e@list% + }{}% \if@pieces% \let\@action\p@rsepieces% \let\piece@job\l@@k\let\plane@job\set@piece% diff --git a/macros/latex/contrib/chess-problem-diagrams/diagram.pdf b/macros/latex/contrib/chess-problem-diagrams/diagram.pdf index 18407045fd..0fe72da32d 100644 Binary files a/macros/latex/contrib/chess-problem-diagrams/diagram.pdf and b/macros/latex/contrib/chess-problem-diagrams/diagram.pdf differ diff --git a/macros/latex/contrib/covington/README b/macros/latex/contrib/covington/README index 106dddc26d..640a732583 100644 --- a/macros/latex/contrib/covington/README +++ b/macros/latex/contrib/covington/README @@ -3,7 +3,7 @@ The covington package LaTeX macros for Linguistics -Copyright 1991--2019 Michael A. Covington +Copyright 1991--2020 Michael A. Covington Robin Fairbairns Juergen Spitzmueller @@ -31,6 +31,9 @@ The package consists of the following files: == CHANGES == +* Version 2.4 (2020-01-02): + - Fix definition of covexercise if no subsection counter exists. + * Version 2.3 (2019-06-21): - Add preamble option to subexamples environment. - Allow to use covington together with the drs package. diff --git a/macros/latex/contrib/covington/covington.pdf b/macros/latex/contrib/covington/covington.pdf index 059afc1af7..601f8b4b9a 100644 Binary files a/macros/latex/contrib/covington/covington.pdf and b/macros/latex/contrib/covington/covington.pdf differ diff --git a/macros/latex/contrib/covington/covington.sty b/macros/latex/contrib/covington/covington.sty index 3d1b8fc1a3..70edc42fb4 100644 --- a/macros/latex/contrib/covington/covington.sty +++ b/macros/latex/contrib/covington/covington.sty @@ -42,8 +42,8 @@ %%% Metadata %%% -\def\filedate{2019/06/21} -\def\fileversion{2.3} +\def\filedate{2020/01/02} +\def\fileversion{2.4} \def\filename{covington.sty} % Force redefinition of environments? @@ -951,7 +951,7 @@ % % New in 1.1 (2016-07-06): % We provide a covexercise environment and only (re)define -% example if it does not yet exist or if redefinition is +% exercise if it does not yet exist or if redefinition is % forced by the "force" option. This prevents clashes % with packages/classes that roll their own exercise environment. @@ -968,7 +968,11 @@ % large curly brackets. Good for alternatives % within sentences or PS-rules. -\newtheorem{covexercise}{Exercise}[subsection] +\ifcsname c@subsection\endcsname + \newtheorem{covexercise}{Exercise}[subsection] +\else + \newtheorem{covexercise}{Exercise} +\fi % Exercise numbering resets to 0 not only at the start of % a subsection, but also at the start of a section or chapter diff --git a/macros/latex/contrib/covington/covington.tex b/macros/latex/contrib/covington/covington.tex index 21eefc3562..4ae0682007 100644 --- a/macros/latex/contrib/covington/covington.tex +++ b/macros/latex/contrib/covington/covington.tex @@ -94,8 +94,8 @@ % % Titling % -\def\pversion{Version 2.3} -\def\pdate{June 21, 2019} +\def\pversion{Version 2.4} +\def\pdate{January 2, 2020} \title{\textbf{The \cvt\ Package\\Macros for Linguistics}} \author{Michael A. Covington \and J\"urgen Spitzm\"uller\thanks{Current maintainer. @@ -1095,6 +1095,12 @@ it. \section{Release history} +\subsection*{2.4 (2020 January 2)} + +\begin{itemize} + \item Fix definition of covexercise theorem when no subsection counter is defined. +\end{itemize} + \subsection*{2.3 (2019 June 21)} \begin{itemize} @@ -1248,7 +1254,7 @@ it. by morpheme glosses}. Revised version of February 2008. Department of Linguistics, Max Plank Institute for Evolutionary Anthropology. \url{http://www.eva.mpg.de/lingua/resources/glossing-rules.php}. - \bibitem{drs} Dimitradis, Alexis: \emph{drs -- Typeset Discourse Representation Structures (DRS)}. + \bibitem{drs} Dimitriadis, Alexis: \emph{drs -- Typeset Discourse Representation Structures (DRS)}. June 10, 2010. \url{https://ctan.org/pkg/drs}. \bibitem{sdrt} Isambert, Paul: \emph{sdrt -- Macros for Segmented Discourse Representation Theory}. May 13, 2007. \url{https://ctan.org/pkg/sdrt}. diff --git a/macros/latex/contrib/epigraph/README b/macros/latex/contrib/epigraph/README deleted file mode 100644 index fa639ba1c2..0000000000 --- a/macros/latex/contrib/epigraph/README +++ /dev/null @@ -1,78 +0,0 @@ -____________________ -The EPIGRAPH package - - The epigraph package is designed for typesetting epigraphs --- the -pithy quotations often found at the start (or end) of a chapter. Both -single epigraphs and lists of epigraphs are catered for. Various aspects -are easily configurable. - -______________ -Change History - -Version 1.5c (2009/09/02) -- New maintainer (Will Robertson) - -Changes in Version 1.5a (2002/10/22) -- Replaced flushleftright environment by flushepinormal environment - to avoid clash with the ccaption package's \flushleftright - -Changes in Version 1.5 (2000/02/20) -- Generalised \cleartoevenpage command - -Changes in Version 1.4 (2000/01/16) -- Added flushleftright environment - -Changes in Version 1.3 (1999/12/01) -- Added \dropchapter and \undodrop commands - -Changes in Version 1.2 (1999/09/12) -- Added \cleartoevenpage command -- Improved documentation - -Changes in Version 1.1: (1998/11/29) -- Added support for epigraphs above chapter titles. - ------------------------------------------------------------------ - Author: Peter Wilson, Herries Press - Maintainer: Will Robertson (will dot robertson at latex-project dot org) - Copyright 1998--2004 Peter R. Wilson - - This work may be distributed and/or modified under the - conditions of the LaTeX Project Public License, either - version 1.3c of this license or (at your option) any - later version: - - This work has the LPPL maintenance status "maintained". - The Current Maintainer of this work is Will Robertson. - - This work consists of the files: -README (this file) -epigraph.dtx -epigraph.ins -epigraph.pdf (user manual) - and the derived files: -epigraph.sty - -The distribution consists of the files: -README (this file) -epigraph.dtx -epigraph.ins -epigraph.pdf (user manual) - ------------------------------------------------------------------ - -To install the package: -- run: latex epigraph.ins (which will generate epigraph.sty) -- Move epigraph.sty to a location where LaTeX will find it - (typically in a local texmf tree at tex/latex/***) and refresh the - file database. See the FAQ on CTAN at help/uk-tex-faq or - http://www.tug.ac.uk/faq for more information on this. - -To process the user manual: -- run: latex epigraph.dtx -- run: makeindex -s gind.ist epigraph -- run: latex epigraph.dtx -- Print epigraph.dvi for a hardcopy of the package manual - -2004/04/22 -Peter Wilson diff --git a/macros/latex/contrib/epigraph/README.md b/macros/latex/contrib/epigraph/README.md new file mode 100644 index 0000000000..e5a7ff4849 --- /dev/null +++ b/macros/latex/contrib/epigraph/README.md @@ -0,0 +1,89 @@ +# The EPIGRAPH package + +The epigraph package is designed for typesetting epigraphs --- the +pithy quotations often found at the start (or end) of a chapter. Both +single epigraphs and lists of epigraphs are catered for. Various aspects +are easily configurable. + +## Change History + +Version 1.5e (2020/01/02) +- Try to prevent breaks after epigraphs +- Add \epigraphnoindent to automatically suppress indentation + after all \epigraph commands + +Version 1.5d (2011/08/07) +- Load the nextpage package for \cleartoevenpage + (this avoids loading order conflicts) + +Version 1.5c (2009/09/02) +- New maintainer (Will Robertson) + +Changes in Version 1.5a (2002/10/22) +- Replaced flushleftright environment by flushepinormal environment + to avoid clash with the ccaption package's \flushleftright + +Changes in Version 1.5 (2000/02/20) +- Generalised \cleartoevenpage command + +Changes in Version 1.4 (2000/01/16) +- Added flushleftright environment + +Changes in Version 1.3 (1999/12/01) +- Added \dropchapter and \undodrop commands + +Changes in Version 1.2 (1999/09/12) +- Added \cleartoevenpage command +- Improved documentation + +Changes in Version 1.1: (1998/11/29) +- Added support for epigraphs above chapter titles. + +## Copyright + + Author: Peter Wilson, Herries Press + Maintainer: Will Robertson + will dot robertson at latex-project dot org + Copyright 1998--2004 Peter R. Wilson + 2009--2020 Will Robertson + + This work may be distributed and/or modified under the + conditions of the LaTeX Project Public License, either + version 1.3c of this license or (at your option) any + later version: + + This work has the LPPL maintenance status "maintained". + The Current Maintainer of this work is Will Robertson. + +## Manifest + +This work consists of the files: +* README (this file) +* epigraph.dtx +* epigraph.ins +* epigraph.pdf (user manual) +and the derived files: +* epigraph.sty + +The distribution consists of the files: +* README (this file) +* epigraph.dtx +* epigraph.ins +* epigraph.pdf (user manual) + +## Installation + +To install the package: +- run: latex epigraph.ins (which will generate epigraph.sty) +- Move epigraph.sty to a location where LaTeX will find it + (typically in a local texmf tree at tex/latex/***) and refresh the + file database. See the FAQ on CTAN at help/uk-tex-faq or + http://www.tug.ac.uk/faq for more information on this. +- (or `l3build install`) + +To process the user manual: +- run: latex epigraph.dtx +- run: makeindex -s gind.ist epigraph +- run: latex epigraph.dtx +- (or `l3build doc`) + diff --git a/macros/latex/contrib/epigraph/epigraph.dtx b/macros/latex/contrib/epigraph/epigraph.dtx index baec16b14d..046530f5a5 100644 --- a/macros/latex/contrib/epigraph/epigraph.dtx +++ b/macros/latex/contrib/epigraph/epigraph.dtx @@ -3,6 +3,7 @@ % Author: Peter Wilson, Herries Press % Maintainer: Will Robertson (will dot robertson at latex-project dot org) % Copyright 1998--2004 Peter R. Wilson +% Copyright 2011 Will Robertson % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either @@ -27,7 +28,7 @@ % % \fi % -% \CheckSum{242} +% \CheckSum{244} % % \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} % \DoNotIndex{\@centercr,\@cite} @@ -80,12 +81,15 @@ % \changes{v1.5a}{2002/10/22}{Fixed class with ccaption package} % \changes{v1.5b}{2004/04/22}{Updated license and contact details} % \changes{v1.5c}{2009/09/02}{New maintainer (Will Robertson)} +% \changes{v1.5d}{2011/08/07}{Load package `nextpage' for \cs{cleartoevenpage}} % % \def\dtxfile{epigraph.dtx} % \def\fileversion{v1.5} \def\filedate{2000/02/20} % \def\fileversion{v1.5a} \def\filedate{2002/10/22} % \def\fileversion{v1.5b} \def\filedate{2004/04/22} % \def\fileversion{v1.5c} \def\filedate{2009/09/02} +% \def\fileversion{v1.5d} \def\filedate{2011/08/07} +% \def\fileversion{v1.5e} \def\filedate{2020/01/02} % \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package % \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option % \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file @@ -111,7 +115,7 @@ % Maintainer: Will Robertson\\ % \texttt{will dot robertson at latex-project dot org} % } -% \date{\filedate} +% \date{\fileversion\qquad\filedate} % \maketitle % \begin{abstract} % The \Lpack{epigraph} package can be used to typeset a relevant @@ -151,7 +155,7 @@ % The \Lpack{epigraph} package provides commands for typesetting % a single epigraph and environments for typesetting a list of epigraphs. % Epigraphs can be typeset at either the left, the center or the right of -% the typeblock. A few example eipgraphs are exhibited here, and +% the typeblock. A few example epigraphs are exhibited here, and % others can be found in an article by % Christina Thiele~\cite{TTC199}. % @@ -181,7 +185,7 @@ % % \DescribeMacro{\qitem} % Each epigraph in the list is specified by a -% |\qitem{|\meta{text}|}{|\meta{source}|}| command (analagous to the |\item| +% |\qitem{|\meta{text}|}{|\meta{source}|}| command (analogous to the |\item| % command in ordinary list environments). % By default, the \meta{source} is typeset at the bottom right of the % \meta{text}. @@ -194,22 +198,30 @@ % {\textit{Letters on a Regicide Peace}\\ \textsc{Edmund Burke}} % % The commands described in this section apply to both the |\epigraph| -% command and the |epigraphs| environment. But first of all, note that an -% epigraph immediately after a heading will cause the first paragraph -% of the following text to be indented. If you want the initial paragraph -% to have no indentation, then start it with the |\noindent| command. +% command and the |epigraphs| environment. +% +% An epigraph immediately after a heading will cause the first paragraph +% of the following text to be indented. +% If you want the initial paragraph +% to have no indentation, then start it with the |\noindent| command, or +% \DescribeMacro{\epigraphnoindent} +% add |\epigraphnoindent| to your document preamble. +% (|\epigraphnoindentfalse| will reverse the setting.) +% This command only affects the |\epigraph| command; for the |epigraphs| environment +% the |\noindent| approach must still be used. % % \DescribeMacro{\epigraphwidth} -% \DescribeMacro{\textflush} % The epigraphs are typeset in a minipage of width |\epigraphwidth|. The default % value for this can be changed using the |\setlength| command. Typically, -% epigraphs are typset in a measure much less than the width of the textblock. +% epigraphs are typeset in a measure much less than the width of the textblock. +% +% \DescribeMacro{\textflush} % In order to avoid bad line breaks, the \meta{text} is normally typeset -% raggedright. +% ragged right. % The |\textflush| command controls the \meta{text} typesetting style, % and it can be redefined from its default value of -% \texttt{flushleft} (which produces raggedright). The sensible values -% are \texttt{center} for centered text, \texttt{flushright} for raggedleft +% \texttt{flushleft} (which produces ragged right). The sensible values +% are \texttt{center} for centered text, \texttt{flushright} for ragged left % text, and \texttt{flushepinormal} for normal justified text. % % If by any chance you want the \meta{text} to be typeset in some @@ -261,7 +273,7 @@ % \DescribeMacro{\afterepigraphskip} % The two |...skip| commands specify the amount of vertical space inserted % before and after typeset epigraphs. Again, these can be changed by -% |\setlength|. It is desireable that the sum of their values should be an +% |\setlength|. It is desirable that the sum of their values should be an % integer multiple of the |\baselineskip|. % % Note that you can use normal \LaTeX{} commands in the \meta{text} and @@ -288,8 +300,8 @@ % for printing at \meta{distance} below the header on a page. % \meta{text} can be ordinary text or, more likely, can be either an % |\epigraph| command or an |epigraphs| environment. By default, the -% epigraph will be typeset at the righthand margin. -% If the command is immediately preceeded by a |\chapter| or |\chapter*| +% epigraph will be typeset at the right-hand margin. +% If the command is immediately preceded by a |\chapter| or |\chapter*| % command, the epigraph is typeset on the chapter title page. % % The default value for the optional \meta{distance} argument is set so @@ -347,12 +359,13 @@ % of a chapter, where the something belongs to the chapter that is about to % start rather than the chapter that has just ended. In order to do this % in a document that is going to be printed -% doublesided, the chapter must start on an odd numbered page and the -% pre-chapter material put on the immediately preceeding even numbered page. +% double-sided, the chapter must start on an odd numbered page and the +% pre-chapter material put on the immediately preceding even numbered page. % The |\cleartoevenpage| command is like the |\cleardoublepage| except % that the page following the command will be an even numbered page, and the % command takes an optional argument, i.e., |\cleartoevenpage{|[arg|]|, % which is applied to the skipped page (if any). +% This command is provided by the \texttt{nextpage} package. % % Here is an example: % \begin{verbatim} @@ -421,7 +434,7 @@ % The value of the optional argument may need changing to vertically adjust % the position of the epigraph. If there is any |\part| that does not have an % epigraph then an empty |\epigraphhead| command (i.e., |\epigraphhead{}|) -% must be placed immediately befor the |\part| command. +% must be placed immediately before the |\part| command. % % \end{itemize} % @@ -484,7 +497,8 @@ % \begin{macrocode} %<*usc> \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{epigraph}[2009/09/02 v1.5c typesetting epigraphs] +\ProvidesPackage{epigraph}[2020/01/02 v1.5e typesetting epigraphs] +\RequirePackage{nextpage} % \end{macrocode} % % \begin{macro}{\beforeepigraphskip} @@ -515,6 +529,16 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\epigraphnoindent} +% \begin{macro}{\ifepigraphnoindent} +% Whether to add \cs{noindent} (false by default for backwards compatibility). +% \begin{macrocode} +\newif\ifepigraphnoindent +\newcommand\epigraphnoindent{\epigraphnoindenttrue} +% \end{macrocode} +% \end{macro} +% \end{macro} +% % \begin{macro}{\epigraphflush} % \begin{macro}{\textflush} % \begin{macro}{\sourceflush} @@ -596,11 +620,21 @@ % for a single epigraph. This is set in a minipage to prevent breaking % across a page. Position it according to |\epigraphflush|. % \begin{macrocode} -\newcommand{\epigraph}[2]{\vspace{\beforeepigraphskip} - {\epigraphsize\begin{\epigraphflush}\begin{minipage}{\epigraphwidth} - \@epitext{#1}\\ \@episource{#2} - \end{minipage}\end{\epigraphflush} - \vspace{\afterepigraphskip}}} +\newcommand{\epigraph}[2]{% + \vspace{\beforeepigraphskip} + \vbox{% + \epigraphsize + \begin{\epigraphflush} + \begin{minipage}{\epigraphwidth} + \@epitext{#1}\\ + \@episource{#2}% + \end{minipage}% + \end{\epigraphflush}% + }% + \nointerlineskip + \vspace*{\afterepigraphskip}% + \ifepigraphnoindent\@afterheading\fi +} % \end{macrocode} % \end{macro} % @@ -643,25 +677,13 @@ \leftmargin\z@ \rightmargin\z@ \let\makelabel\qitemlabel}}% {\endlist\end{minipage}\end{\epigraphflush} - \vspace{\afterepigraphskip}} + \vspace{\afterepigraphskip}% +} % \end{macrocode} % \end{environment} % % \subsection{Epigraphs before a chapter title} % -% \begin{macro}{\cleartoevenpage} -% Like |\cleardoublepage| except that it skips pages until an even one, and -% its optional argument is applied to the skipped page, if any. -% The code is based on the kernel |\cleardoublepage| in \file{ltoutput.dtx}. -% \changes{v1.2}{1999/09/12}{Added \cs{cleartoevenpage} command} -% \changes{v1.5}{2000/02/20}{Added optional arg to \cs{cleartoevenpage}} -% \begin{macrocode} -\providecommand{\cleartoevenpage}[1][\@empty]{% - \clearpage% - \ifodd\c@page\hbox{}#1\clearpage\fi} -% \end{macrocode} -% \end{macro} -% % \begin{macro}{\@epichapapp} % \begin{macro}{\dropchapter} % \begin{macro}{\undodrop} diff --git a/macros/latex/contrib/epigraph/epigraph.pdf b/macros/latex/contrib/epigraph/epigraph.pdf index 6b8773e03b..7de33cf197 100644 Binary files a/macros/latex/contrib/epigraph/epigraph.pdf and b/macros/latex/contrib/epigraph/epigraph.pdf differ diff --git a/macros/latex/contrib/geometry-de/README b/macros/latex/contrib/geometry-de/README deleted file mode 100644 index 8ca697a7e3..0000000000 --- a/macros/latex/contrib/geometry-de/README +++ /dev/null @@ -1,53 +0,0 @@ -This package, geometry-de.dtx, is a modified version of the geometry package -in version 5.6 2010/09/12 -by Hideo Umeki. - -With the file you can create a documentation in german language but it's possible -to build all other geometry files. - -Files: - * README-DE - this file - * geometry.ins - for installation to get .sty from .dtx - * geometry-de.dtx - including sources and documentation - * geometry-de.pdf - print-ready german documentation - -Use - tex geometry-de.tex -to get the geometry.ins, the geometry-de.drv and the geometry.sty files. - -Use - latex geometry-de.dtx or - latex geometry-de.drv or - pdflatex geometry-de.dtx or - pdflatex geometry-de.drv -to create the german documentation. - -The geometry.sty is the same which is provided by the original .dtx file from -Hideo Ukmeki. - -How to install geometry: -Quoted from Hideo Umeki's README file. Little modifications by Hans-Martin Haase. -"Installation: -[manual installation] - * To get geometry.sty out of geometry.dtx - $ tex geometry-de.dtx - or $ (la)tex geometry.ins - * To build documentation - $ latex geometry-de.dtx - or $ latex geometry-de.drv - * Put the derived files in the proper directories: - - tex/latex/geometry/geometry.sty - - doc/latex/geometry/geometry-de.pdf - - source/latex/geometry/geometry-de.dtx - -[TeXLive] - * Use 'tlmgr' command - $ tlmgr show geometry -- to check the package info - $ sudo tlmgr update geometry -- to update the package - * You can use 'TeX Live Utility' instead of 'tlmgr', if on MacOSX. - -[MikTeX] - * Use the MikTeX Update Wizard to update geometry package." - - -The translation was create by Hans-Martin Haase. \ No newline at end of file diff --git a/macros/latex/contrib/geometry-de/README-DE b/macros/latex/contrib/geometry-de/README-DE deleted file mode 100644 index 855c355eb6..0000000000 --- a/macros/latex/contrib/geometry-de/README-DE +++ /dev/null @@ -1,53 +0,0 @@ -Dieses Paket, geometry-de.dtx, ist eine geänderte Version des geometry Pakets -in Version 5.6 2010/09/12 -von Hideo Umeki. - -Mit der Datei können Sie eine deutsche Dokumentation erzeugen, es ist aber -auch möglich alle anderen geometry Dateien zu kompilieren. - -Dateien: - * README-DE - diese Datei - * geometry.ins - für die Installation, um die .sty Datei aus der .dtx zu erzeugen - * geometry-de.dtx - beinhaltet den Quelltext und die Dokumentation - * geometry-de.pdf - druckfertige deutsche Dokumentation - -Benutzen sie - tex geometry-de.tex -um die geometry.ins, die geometry-de.drv und die geometry.sty Dateien zu kompilieren. - -Benutzen sie - latex geometry-de.dtx oder - latex geometry-de.drv oder - pdflatex geometry-de.dtx oder - pdflatex geometry-de.drv -um die deutsche Dokumentation zu erzeugen. - -Die geometry.sty ist die gleiche, wie sie von der originalen .dtx Datei von -Hideo Ukmeki angeboten wird. - -Wie man geometry installiert: -Partielle Übersetzung der README Datei von Hideo Umeki -Installation: -[manuelle Installation] - * Um geometry.sty aus geometry.dtx zu bekommen - $ tex geometry-de.dtx - oder $ (la)tex geometry.ins - * Um die Dokumentation zu erzeugen - $ latex geometry-de.dtx - oder $ latex geometry-de.drv - * Platzieren sie die abgeleiteten Dateien in den folgenden Verzeichnissen: - - tex/latex/geometry/geometry.sty - - doc/latex/geometry/geometry-de.pdf - - source/latex/geometry/geometry-de.dtx - -[TeXLive] - * Benutzen sie das 'tlmgr' Kommando - $ tlmgr show geometry -- um die Paketinformationen zu prüfen - $ sudo tlmgr update geometry -- um das Paket zu aktualisieren - * Sie können das 'TeX Live Utility' anstelle von 'tlmgr' benutzen, wenn sie mit MacOSX arbeiten. - -[MikTeX] - * Benutzen sie den MikTeX Update Wizard, um das geometry Paket zu aktualisieren. - - -Die Übersetzung wurde von Hans-Martin Haase angefertigt. \ No newline at end of file diff --git a/macros/latex/contrib/geometry-de/geometry-de.dtx b/macros/latex/contrib/geometry-de/geometry-de.dtx deleted file mode 100644 index 2a69683ac1..0000000000 --- a/macros/latex/contrib/geometry-de/geometry-de.dtx +++ /dev/null @@ -1,3844 +0,0 @@ -% \iffalse meta-comment -% -% Copyright 1996-2010 by Hideo Umeki -% -% LaTeX Package: Geometry -% ----------------------- -% -% This work may be distributed and/or modified under the conditions of -% the LaTeX Project Public License, either version 1.3c 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.3c or later is part of all distributions of LaTeX -% version 2005/12/01 or later. -% -% This work is "maintained" (as per the LPPL maintenance status) -% by Hideo Umeki. -% -% This work consists of the files geometry.dtx and -% the derived files: geometry.{sty,ins,drv}, geometry-samples.tex. -% -% * Distribution -% CTAN: macros/latex/contrib/geometry/README -% CTAN: macros/latex/contrib/geometry/changes.txt -% CTAN: macros/latex/contrib/geometry/geometry.ins -% CTAN: macros/latex/contrib/geometry/geometry.dtx -% CTAN: macros/latex/contrib/geometry/geometry.pdf -% -% * See README for installation. -% -%<*ignore> -\begingroup - \def\x{LaTeX2e} -\expandafter\endgroup -\ifcase 0\ifx\install y1\fi\expandafter - \ifx\csname processbatchFile\endcsname\relax\else1\fi - \ifx\fmtname\x\else 1\fi\relax -\else\csname fi\endcsname -% -%\NeedsTeXFormat{LaTeX2e} -%\ProvidesPackage{geometry} -% [2010/09/12 v5.6 Page Geometry] -%<*install> -\input docstrip.tex -\Msg{************************************************************************} -\Msg{* Installation} -\Msg{* Package: geometry 2010/09/12 v5.6 Page Geometry} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse -\preamble - -Copyright (C) 1996-2010 -by Hideo Umeki - -This work may be distributed and/or modified under the conditions of -the LaTeX Project Public License, either version 1.3c 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.3c or later is part of all distributions of LaTeX -version 2005/12/01 or later. - -This work is "maintained" (as per the LPPL maintenance status) -by Hideo Umeki. - -This work consists of the files geometry.dtx and -the derived files: geometry.{sty,ins,drv}, geometry-samples.tex. - -\endpreamble - -\generate{% - \file{geometry.ins}{\from{geometry-de.dtx}{install}}% - \file{geometry-de.drv}{\from{geometry-de.dtx}{driver}}% - \usedir{tex/latex/geometry}% - \file{geometry.sty}{\from{geometry-de.dtx}{package}}% - \file{geometry.cfg}{\from{geometry-de.dtx}{config}}% - \file{geometry-samples-de.tex}{\from{geometry-de.dtx}{samples}}% -} - -\obeyspaces -\Msg{************************************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* file into a directory searched by LaTeX:} -\Msg{*} -\Msg{* \space\space geometry.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `geometry.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} -\endbatchfile -% -%<*ignore> -\fi -% -%<*driver> -\ProvidesFile{geometry.drv} -\documentclass{ltxdoc} -\usepackage[colorlinks, linkcolor=blue]{hyperref} -\usepackage{graphicx} -\usepackage[T1]{fontenc} -\usepackage[utf8]{inputenc} -\usepackage[ngerman]{babel} -\usepackage[a4paper, hmargin=2.5cm, vmargin=1cm, includeheadfoot]{geometry} -\usepackage{charter} -\DeclareRobustCommand\XeTeX{% - X\lower.5ex\hbox{\kern-.07em\reflectbox{E}}% - \kern-.15em\TeX} -\DeclareRobustCommand\XeLaTeX{% - X\lower.5ex\hbox{\kern-.07em\reflectbox{E}}% - \kern-.15em\LaTeX} -\begin{document} - \DocInput{geometry-de.dtx} -\end{document} -% -% \fi -% -% \CheckSum{2680} -% -% \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 \~} -% -% \GetFileInfo{geometry.sty} -% -% \title{Das \textsf{geometry} Paket} -% \date{\filedate\ \fileversion} -% \author{Hideo Umeki\\\texttt{latexgeometry@gmail.com}\\\begin{small}Die Übersetzung wurde angefertigt von Hans-Martin Haase -% (\texttt{hmhaase@pclinuxosusers.de})\end{small}} -% -% \MakeShortVerb{|} -% -% \def\OpenB{{\ttfamily\char`\{}} -% \def\Comma{{\ttfamily\char`,}} -% \def\CloseB{{\ttfamily\char`\}}} -% \def\Gm{\textsf{geometry}} -% \newcommand\argii[2]{\OpenB\meta{#1}\Comma\meta{#2}\CloseB} -% \newcommand\argiii[3]{\OpenB\meta{#1}\Comma\meta{#2}\Comma\meta{#3}\CloseB} -% \newcommand\vargii[2]{\OpenB#1\Comma#2\CloseB} -% \newcommand\vargiii[3]{\OpenB#1\Comma#2\Comma#3\CloseB} -% \newcommand\OR{\ \strut\vrule width .4pt\ } -% \newcommand\gpart[1]{\textsf{\textsl{\color[rgb]{.0,.45,.7}#1}}}% -% \newcommand\glen[1]{\textsf{#1}} -% \newenvironment{key}[2]{\expandafter\macro\expandafter{`#2'}}{\endmacro} -% \newenvironment{Options}% -% {\begin{list}{}{% -% \renewcommand{\makelabel}[1]{\texttt{##1}\hfil}% -% \setlength{\itemsep}{-.5\parsep} -% \settowidth{\labelwidth}{\texttt{xxxxxxxxxxx\space}}% -% \setlength{\leftmargin}{\labelwidth}% -% \addtolength{\leftmargin}{\labelsep}}% -% \raggedright} -% {\end{list}} -% \newenvironment{Spec}% -% {\begin{list}{}{% -% \renewcommand{\makelabel}[1]{\fbox{##1}\hfil}% -% \setlength{\itemsep}{-.5\parsep} -% \settowidth{\labelwidth}{\texttt{S(x,x)}}% -% \setlength{\leftmargin}{\labelwidth}% -% \addtolength{\leftmargin}{\labelsep}% -% \addtolength{\leftmargin}{2em}% -% \setlength{\rightmargin}{2em}}% -% \raggedright} -% {\end{list}} -% \def\Ss(#1,#2){\textsf{S(#1,#2)}}% -% \def\Sp(#1,#2,#3){\mbox{|(#1,#2,#3)|}}% -% \def\onlypre{\llap{$^{\dagger\:}$}}% -% -% \maketitle -% -% \begin{abstract} -% Dieses Paket bietet einen flexiblen und einfachen Weg die Seitenmaße zu verändern. -% Sie können das Seitenlayout mit intuitiven Parametern verändern. Ein Beispiel, -% wenn Sie den Abstand von jedem Rand der Seite auf 2\,cm setzen möchten, -% können Sie einfach |\usepackage[margin=2cm]{geometry}| eingeben. -% Das Seitenlayout kann in der Mitte des Dokuments verändert werden, mit dem Befehl -% |\newgeometry|. -% \end{abstract} -% -% \section{Vorwort zu Version 5} -% -% \begin{itemize} -% \item \textbf{Das Seitenlayout in der Mitte des Dokuments ändern.}\par -% Die neuen Befehle \cs{newgeometry\{$\cdots$\}} und -% \cs{restoregeometry} erlauben es dem Benutzer, die Seitenmaße in der Mitte -% des Dokuments zu verändern. \cs{newgeometry} stimmt fast mit -% \cs{geometry} überein, ausgenommen das \cs{newgeometry} alle Optionen, -% die in der Präambel spezifiziert sind, deaktiviert und überspringt die Optionen, die sich auf die Seitengröße beziehen: -% |landscape|, |portrait| und die Seitengrößenoptionen (solche wie -% |papersize|, |paper=a4paper| und andere). -% \item \textbf{Eine neue Reihe von Optionen, um den Layoutbereich zu spezifizieren.}\par -% Die Optionen, die für den Bereich angegeben wurden, in dem die Seitenmaße -% berechnet werden, sind hinzugefügt wurden: \textsf{layout}, \textsf{layoutsize}, -% \textsf{layoutwidth}, \textsf{layoutheight} und weitere. -% Diese Möglichkeiten sind hilfreich, falls das angegebene Layout auf eine andere -% Papiergröße angewendet soll. Wenn beispielsweise |a4paper| -% und |layout=a5paper| verwendet wird, dann benutzt das \Gm\ Paket das `A5' statt `A4' Layout, um -% die Ränder für die Papiergröße zu berechen. -% \item \textbf{Eine neue Treiberoption |xetex|.}\par -% Die neue Treiberoption |xetex| wurde hinzugefügt. Die Routine für die automatische Treiberdetektion -% ist überarbeitet worden, sodass ein Fehler mit einer nicht definierten -% Kontrollsequenz vermieden werden konnte. Beachte, dass `geometry.cfg' in \TeX{} Live, welches -% die Autodetektionsroutine deaktiviert und |pdftex| benutzt, nicht mehr -% nötig ist und es keine Probleme gibt, obwohl dies dennoch existiert. -% Um |xetex| einzustellen, ist es dringend empfohlen \XeLaTeX{} zu verwenden. -% \item \textbf{Neue Papiergröße für JIS B-Serien und ISO C-Serien.}\par -% Die Papiergrößenvoreinstellungen |b0j| bis |b6j| für JIS (Japanese Industrial Standards) B-Serien und -% |c0paper| bis |c6paper| für ISO C-Serien -% (v5.4$\sim$) wurden hinzugefügt. -% \item \textbf{Veränderung des Standards für nicht angegebenen Rand.}\par -% In der Vorversion wurde dann, wenn man nur einen Rand angab, z.\,B. -% |bottom=1cm|, von \Gm\ der andere Rand mit -% diesem Randverhältnis (1:1 standardmäßig für die vertikalen Maße) gesetzt -% und man bekam in diesem Fall |top=1cm|. -% Die Version 5 stellt die Textkörpergröße auf den |scale| -% ($=0.7$) ein und bestimmt den nicht angegebenen Rand. (Siehe Kapitel~\ref{sec:rules}) -% \item \textbf{Die Optionen |showframe| und |showcrop| arbeiten auf jeder Seite.}\par -% Mit der |showframe| Option werden die Seitenränder auf jeder Seite angezeigt. -% Des Weiteren druckt die neue |showcrop| Option Schittmarken auf jede Ecke des -% Layoutbereichs auf jeder Seite. Bedenken sie, dass die Marken unsichtbar sein werden, -% solange die Layoutgröße nicht schmaler wie die Papiergröße gemacht wird. -% Version 5.4 führt einen neuen |\shipout| Überladeprozess ein, der das -% \textsf{atbegshi} Paket benutzt, so wird das \textsf{atbegshi} Paket -% benötigt, wenn die showframe oder showcrop Option angegeben wird. -% \item \textbf{Laden von geometry.cfg vor der Verarbeitung der Klassenoptionen.}\par -% In der Vorgängerversion wurde \textsf{geometry.cfg} nach dem -% Verarbeiten der Dokumentklassenoptionen geladen. Jetzt, da die Konfigurationsdatei vor der Abarbeitung der -% Klassenoptionen geladen wird, können sie das Verhalten, -% wie es in \textsf{geometry.cfg} angegeben ist, durch das Hinzufügen von -% Optionen in der |\documentclass| oder genauso gut in |\usepackage| und |\geometry| verändern. -% \item \textbf{Beseitigte Optionen: |compat2| und |twosideshift|.} -% Die Version 5 ist nicht länger mit den Vorgängerversionen kompatibel. -% |compat2| und |twisideshift| wurden zur Vereinfachung entfernt. -% \end{itemize} -% -% \section{Einführung} -% -% Die Maße für das Seitenlayout in \LaTeX\ einzustellen ist nicht so einfach. -% Sie müssen dafür verschiedene ursprüngliche \LaTeX -Maße anpassen, um einen Textbereich -% dort zu platzieren, wo sie ihn angezeigt haben möchten. -% Wenn sie einen Textbereich ihres Dokuments zentrieren wollen, -% dann müssen sie beispielsweise die systemeigenen Maße wie folgt angeben: -% \begin{quote} -% |\usepackage{calc}|\\ -% |\setlength\textwidth{7in}|\\ -% |\setlength\textheight{10in}|\\ -% |\setlength\oddsidemargin{(\paperwidth-\textwidth)/2 - 1in}|\\ -% |\setlength\topmargin{(\paperheight-\textheight|\\ -% | -\headheight-\headsep-\footskip)/2 - 1in}|. -% \end{quote} -% Ohne das Paket \texttt{calc} würde das obere Beispiel noch -% schwierigere Einstellungen benötigen. Das Paket \Gm\ bietet einen einfachen -% Weg, die Parameter des Seitenlayouts zu konfigurieren. In diesem Fall müssen sie nur -% dies einstellen: -% \begin{quote} -% |\usepackage[text={7in,10in},centering]{geometry}|. -% \end{quote} -% Neben dem Zentrierungsproblem, ist das Einstellen der Ränder von jeder Kante des Blattes aus -% ebenso problematisch. Aber \Gm\ erledigt dies ebenso einfach. -% Wenn sie jeden Rand auf 1.5\,in setzen wollen, dann können sie -% \begin{quote} -% |\usepackage[margin=1.5in]{geometry}| -% \end{quote} -% eingeben. -% Weil das geometry Paket eine Autovervollständigung besitzt, -% werden nicht angegebene Maße automatisch festgelegt. -% Das \Gm\ Paket wird auch nützlich sein, wenn sie das Seitenlayout beispielsweise nach -% den folgenden strikten Instruktionen einstellen müssen: -% \begin{quote}\slshape -% Die vollständig erlaubte Breite des Textbereiches ist $6.5$, bei einer Höhe von $8.75$ -% Inches (englische Zoll). Der obere Rand auf jeder Seite soll $1.2$ Inches von -% der oberen Kante der Seite aus betragen. Der linke Rand sollte $0.9$ Inch von der linken Kante entfernt sein. -% Die Fußzeile mit der Seitenzahl sollte am unteren Ende des Textbereiches sein. -% \end{quote} -% In diesem Fall können sie bei der Benutzung von \Gm\ -% \begin{quote} -% |\usepackage[total={6.5in,8.75in},|\\ -% | top=1.2in, left=0.9in, includefoot]{geometry}|. -% \end{quote} -% eingeben. -% -% Die Konfiguration eines Textbereiches in einem Schriftstück mit dem Textsatzprogramm hat einige -% Ähnlichkeiten mit dem Platzieren eines Fensters auf dem Hintergrund beim Fenstermanager des Betriebssystems. -% Der Name `geometry' kommt von der |geometry|-Option, die genutzt wird, um die Größe und Lokalisierung eines Fensters -% beim X-Window-System anzugeben. -% -% \section{Seitengeometrie} -% -% Abbildung~\ref{fig:layout} zeigt die Seitenlayoutsmaße , die -% im \Gm\ Paket definiert sind. -% Das Seitenlayout beinhaltet einen \gpart{total body} (druckbaren Bereich) und \gpart{margins} (Ränder). -% Der \gpart{total body} besteht aus einem \gpart{body} (Textbereich) mit einem optionalen -% \gpart{header} (Kopf), \gpart{footer} (Fuß) und Randbemerkungen (\gpart{marginpar}). -% Es gibt vier Ränder: \gpart{left} (links), \gpart{right} (rechts), \gpart{top} (oben) und -% \gpart{bottom} (unten). Für zweiseitige Dokumente, sollten horizontale Ränder \gpart{inner} (innen) und \gpart{outer} -% (außen) genannt werden. -% \begin{quote} -% \begin{tabular}{rcl} -% \gpart{paper}&:&\gpart{total body} und -% \gpart{margins}\\ -% \gpart{total body}&:&\gpart{body} (Textbereich)\quad -% (optionaler \gpart{head}, \gpart{foot} und \gpart{marginpar})\\ -% \gpart{margins}&:&\gpart{left} (\gpart{inner}), -% \gpart{right} (\gpart{outer}), \gpart{top} und \gpart{bottom} -% \end{tabular} -% \end{quote} -% Jeder Rand wird von der korrespondierenden Kante des Blattes gemessen. -% Zum Beispiel, linker Rand (innerer Rand) meint eine horizontale Entfernung -% zwischen der linken (inneren) Kante des Blattes und der des \emph{total body} (druckbaren Bereichs). -% Deshalb sind der linke und obere Rand in \Gm\ anders als das natürliche Maß -% \cs{leftmargin} und \cs{topmargin} definiert. -% Die Größe eines Body (Textbereichs) kann durch \cs{textwidth} (Textbreite) und -% \cs{textheight} (Texthöhe) angepasst werden. -% Die Maße für die Seite, den druckbaren Bereich und die Ränder stehen in folgenden Beziehungen. -% \begin{eqnarray} -% \label{eq:paperwidth} -% |paperwidth (Seitenbreite)| &=& |left (links)|+|width (Breite)|+|right (rechts)| \\ -% |paperheight (Seitenhöhe)| &=& |top (oben)|+|height (Höhe)|+|bottom (unten)| -% \label{eq:paperheight} -% \end{eqnarray} -% -% \begin{figure}[h] -% \centering\small -% {\unitlength=.65pt -% \begin{picture}(450,250)(0,-10) -% \put(20,0){\framebox(170,230){}} -% \put(20,235){\makebox(170,230)[br]{\gpart{Seite}}} -% \begingroup\thicklines -% \put(40,30){\framebox(120,170){}}\endgroup -% \put(40,30){\makebox(120,165)[tr]{\gpart{druckbarer Bereich}~}} -% \put(45,30){\makebox(0,170)[l]{|Höhe|}} -% \put(40,35){\makebox(120,0)[bc]{|Breite|}} -% \put(50,-20){\makebox(120,0)[bc]{|Seitenbreite|}} -% \put(10,45){\makebox(0,170)[r]{|Seitenhöhe|}} -% \put(90,200){\makebox(0,30)[lc]{|oben|}} -% \put(90,0){\makebox(0,30)[lc]{|unten|}} -% \put(10,70){\makebox(0,0)[r]{|links|}} -% \put(10,55){\makebox(0,0)[r]{(|innen|)}} -% \put(200,70){\makebox(0,0)[l]{|rechts|}} -% \put(200,55){\makebox(0,0)[l]{(|außen|)}} -% \put(80,230){\vector(0,-1){30}}\put(80,30){\vector(0,-1){30}} -% \put(80,200){\vector(0,1){30}}\put(80,0){\vector(0,1){30}} -% \put(20,70){\vector(1,0){20}}\put(40,70){\vector(-1,0){20}} -% \put(160,70){\vector(1,0){30}}\put(190,70){\vector(-1,0){30}} -% \multiput(160,30)(5,0){24}{\line(1,0){2}} -% \multiput(160,200)(5,0){24}{\line(1,0){2}} -% \begingroup\thicklines -% \put(280,30){\framebox(120,170){}}\endgroup -% \put(283,133){\makebox(0,12)[l]{|Texthöhe|}} -% \put(295,130){\vector(0,-1){100}}\put(295,150){\vector(0,1){50}} -% \multiput(280,220)(5,0){24}{\line(1,0){3}} -% \put(280,208){\makebox(120,20)[bc]{\gpart{Kopf}}} -% \multiput(280,207)(5,0){24}{\line(1,0){3}} -% \put(420,225){\makebox(0,0)[l]{|Kopfhöhe|}} -% \put(418,225){\line(-2,-1){20}} -% \put(420,213){\makebox(0,0)[l]{|Kopftrennung|}} -% \put(418,213){\line(-2,-1){20}} -% \put(420,12){\makebox(0,0)[l]{|Fußbereich|}} -% \put(418,12){\line(-2,1){20}} -% \put(280,40){\makebox(120,140)[c]{\gpart{Textkörper}}} -% \put(305,45){\vector(-1,0){25}}\put(375,45){\vector(1,0){25}} -% \put(80,230){\vector(0,-1){30}}\put(80,30){\vector(0,-1){30}} -% \put(280,48){\makebox(120,0)[c]{|Textbreite|}} -% \put(280,15){\makebox(120,10)[c]{\gpart{Fuß}}} -% \multiput(280,14)(5,0){24}{\line(1,0){2}} -% \put(410,30){\dashbox{3}(30,170){}} -% \put(415,30){\makebox(30,170)[l]{\gpart{Randnotiz}}} -% \put(425,45){\vector(-1,0){15}}\put(425,45){\vector(1,0){15}} -% \put(450,70){\makebox(0,0)[l]{|Randnotiztrennung|}} -% \put(448,70){\line(-3,-1){43}} -% \put(450,45){\makebox(0,0)[l]{|Randnotizbreite|}} -% \end{picture}} -% \caption[Namen der Maße für \Gm]{% -% \begin{minipage}[t]{.8\textwidth}\raggedright\small -% Namen von Maßen, die im \Gm\ Paket genutzt werden: -% |width| $=$ |textwidth (Textbreite)| und |height| $=$ |textheight (Texthöhe)| sind Standard. -% |left (links)|, |right (rechts)|, |top (oben)| und |bottom (unten)| sind Ränder. -% Wenn die Ränder auf der Rückseite durch die |twoside (Zweiseitigkeit)| Option getauscht werden, -% dann werden die Ränder, die mit |left| und |right| angegeben wurden, für die inneren und äußeren Ränder genutzt. -% |inner (innen)| und |outer (außen)| sind Pseudonyme für |left| und |right|. -% \end{minipage}} -% \label{fig:layout} -% \end{figure} -% -% \begin{figure}[h] -% \centering\small -% {\unitlength=.65pt -% \begin{picture}(490,280)(0,-10) -% \put(60,250){\makebox(120,0)[bl]{\textbf{(a)}~\textit{Standard}}}% -% \put(20,0){\framebox(170,230){}} -% \put(20,230){\makebox(170,15)[r]{\gpart{Seite}}} -% \begingroup\thicklines -% \put(40,30){\framebox(120,165){}}\endgroup -% \put(70,165){\vector(0,1){30}} -% \put(55,145){\makebox(0,20)[lc]{|Texthöhe|}} -% \put(70,145){\vector(0,-1){115}} -% \multiput(40,203)(5,0){24}{\line(1,0){3}} -% \multiput(40,213)(5,0){24}{\line(1,0){3}} -% \multiput(40,10)(5,0){24}{\line(1,0){3}} -% \put(40,203){\makebox(120,20)[bc]{\gpart{Kopf}}} -% \put(40,40){\makebox(120,140)[c]{\gpart{Textkörper}}} -% \put(40,11){\makebox(120,10)[c]{\gpart{Fuß}}} -% \put(150,230){\vector(0,-1){35}}\put(150,30){\vector(0,-1){30}} -% \put(150,195){\vector(0,1){35}}\put(150,0){\vector(0,1){30}} -% \put(160,197){\makebox(0,30)[lc]{|oben|}} -% \put(160,0){\makebox(0,30)[lc]{|unten|}} -% \multiput(160,30)(5,0){24}{\line(1,0){2}} -% \multiput(160,195)(5,0){24}{\line(1,0){2}} -% \put(255,250){\makebox(120,0)[bl] -% {\textbf{(b)}~|includehead| und |includefoot|}}% -% \put(260,0){\framebox(170,230){}} -% \put(260,230){\makebox(170,15)[r]{\gpart{Seite}}} -% \begingroup\thicklines -% \put(280,30){\framebox(120,165){}}\endgroup -% \put(310,152){\vector(0,1){25}} -% \put(295,130){\makebox(0,20)[lc]{|Texthöhe|}} -% \put(310,130){\vector(0,-1){80}} -% \multiput(280,184)(5,0){24}{\line(1,0){3}} -% \multiput(280,177)(5,0){24}{\line(1,0){3}} -% \multiput(280,50)(5,0){24}{\line(1,0){3}} -% \put(280,184){\makebox(120,10)[c]{\gpart{Kopf}}} -% \put(280,40){\makebox(120,140)[c]{\gpart{Textkörper}}} -% \put(400,140){\line(1,1){45}} -% \put(437,187){\makebox(50,10)[l]{\gpart{druckbarer Bereich}}} -% \put(280,31){\makebox(120,10)[c]{\gpart{Fuß}}} -% \put(370,230){\vector(0,-1){35}}\put(370,30){\vector(0,-1){30}} -% \put(370,195){\vector(0,1){35}}\put(370,0){\vector(0,1){30}} -% \put(380,197){\makebox(0,30)[lc]{|oben|}} -% \put(380,0){\makebox(0,30)[lc]{|unten|}} -% \end{picture}} -% \caption[Ein Effekt von \texttt{includehead} und \texttt{includefoot}.]{% -% \begin{minipage}[t]{.8\textwidth}\raggedright\small -% |includehead| und |includefoot| schließen den Kopf und den Fuß mit -% in den \gpart{total body} (druckbaren Bereich) ein. \textbf{(a)} |height| $=$ |textheight| (Standard). -% \textbf{(b)} |height| $=$ |textheight| $+$ |headheight| $+$ |headsep| $+$ -% |footskip|, wenn |includehead| und |includefoot| aktiv. Wenn der obere und untere Rand angegeben ist -% führt |includehead| und |includefoot| dazu, dass die |Texthöhe| verringert wird. -% \end{minipage}} -% \label{fig:includes} -% \end{figure} -% -% Die |Breite| und |Höhe| des druckbaren Bereichs wird definiert: -% \begin{eqnarray} -% \label{eq:width} -% |width| &:=& |textwidth| \quad( +\> |marginparsep|* + |marginparwidth|** )\\ -% |height| &:=& |textheight| \quad(+\> |headheight|*** + |headsep|**** + |footskip|***** ) -% \label{eq:height} -% \end{eqnarray} -% * Randnotiztrennung -% ** Randnotizbreite -% *** Kopfhöhe -% **** Kopftrennung -% ***** Fußbereich\\ -% In Gleichung (\ref{eq:width}) ist standardmäßig |width:=textwidth|, -% während |marginparsep| und |marginparwidth| nur in der |width (Breite)| enthalten sind, -% wenn die |includemp| Option auf |true| gesetzt ist. -% In Gleichung (\ref{eq:height}) ist standardmäßig |height:=textheight|. -% Falls |includehead| auf |true| gesetzt ist, dann werden |headheight| und |headsep| -% als Teil der Höhe (|height|) betrachtet. -% Auf dem selben Weg, nimmt |includefoot| |footskip| in |height| auf. -% Abbildung~\ref{fig:includes} zeigt, wie diese Optionen -% in der vertikalen Richtung arbeiten. -% -% Folglich besteht das Seitenlayout aus drei Teilen (Längen) in jeder -% Richtung: ein Textkörper und zwei Ränder. Wenn zwei der Ränder explizit angegeben sind, -% dann sind die anderen offensichtlich und müssen nicht angegeben werden. -% Abbildung~\ref{fig:Labc} zeigt ein einfaches Modell der Seitenmaße. -% Falls eine Länge |L| gegeben ist und eingeteilt ist in den Textkörper |b|, die Ränder |a| und |c|, dann ist offensichtlich, -% dass -% \begin{equation} -% |L|=|a|+|b|+|c| \label{eq:Labc} -% \end{equation} -% Die Spezifikation mit zwei von drei (|a|, |b| und |c|) festgelegten, ist explizit lösbar. -% Wenn zwei oder mehr der übrigen nicht angegeben sind, kann -% Gleichung~(\ref{eq:Labc}) nicht ohne eine andere Beziehung zwischen ihnen gelöst werden. -% Falls alle Werte angegeben sind, dann muss überprüft werden, ob diese Gleichung ~(\ref{eq:Labc}) genügen, -% da es zu viele Angaben sind oder es ist `überspezifiziert'. -% -% \begin{figure}[h] -% \centering -% {\unitlength=0.8pt -% \begin{picture}(300,60)(0,-5) -% \begingroup\linethickness{5pt} -% \put(0,5){\textcolor{green}{\line(1,0){60}}} -% \put(60,5){\textcolor{black}{\line(1,0){160}}} -% \put(220,5){\textcolor{green}{\line(1,0){80}}} -% \endgroup -% \put(0,15){\makebox(60,10)[b]{|a|}} -% \put(60,0){\line(0,1){20}} -% \put(60,15){\makebox(160,10)[b]{|b|}} -% \put(220,0){\line(0,1){20}} -% \put(220,15){\makebox(80,10)[b]{|c|}} -% \put(0,0){\line(0,1){50}} -% \put(150,35){\vector(-1,0){150}} -% \put(0,40){\makebox(300,10){|L|}} -% \put(150,35){\vector(1,0){150}} -% \put(300,0){\line(0,1){50}} -% \end{picture}} -% \caption{Ein einfaches Modell der Seitenmaße.} -% \label{fig:Labc} -% \end{figure} -% -% Das \Gm\ Paket besitzt einen Autovervollständigungsmechanismus, der vor dem -% Ärger der Angabe von Seitenlayoutmaßen schützt. Zum Beispiel -% können sie das Folgende -% \begin{quote} -% |\usepackage[width=14cm, left=3cm]{geometry}| -% \end{quote} -% auf A4-Papier einstellen. In diesem Fall müssen sie den rechten Rand nicht angeben. -% Die Details der Autovervollständigung werden in Kapitel~\ref{sec:rules} beschrieben. -% -% -% -% -% -% \section{Benutzerschnittstelle} -% -% \subsection{Befehle} -% -% Das \Gm\ Paket unterstützt die folgenden Befehle: -% \begin{itemize}\setlength{\itemsep}{-.5\parsep} -% \item |\geometry{|\meta{Optionen}|}| -% \item |\newgeometry{|\meta{Optionen}|}| und |\restoregeometry| -% \item |\savegeometry{|\meta{Name}|}| und |\loadgeometry{|\meta{Name}|}| -% \end{itemize} -% -% |\geometry{|\meta{Optionen}|}| -% verändert das Seitenlayout entsprechend den angegebenen Optionen im Argument. -% Dieser Befehl, wenn überhaupt, sollte nur in der Präambel platziert werden -% (vor |\begin{document}|). -% -% Das \Gm\ Paket kann als Teil einer Klasse oder eines weiteren Pakets, das sie im Dokument benutzen, -% genutzt werden. Der Befehl \cs{geometry} kann einige der Einstellungen in der Präambel -% überschreiben. Eine mehrfache Nutzung von \cs{geometry} -% ist erlaubt und wird dann mit den verbundenen Optionen ausgeführt. -% Wenn \Gm\ noch nicht geladen ist, können sie nur -% |\usepackage[|\meta{Optionen}|]{geometry}| anstelle von \cs{geometry} nutzen. -% -% \medskip -% |\newgeometry{|\meta{Optionen}|}| -% verändert das Seitenlayout innerhalb des Dokuments. \cs{newgeometry} ist fast -% gleich mit \cs{geometry}, ausgenommen, dass \cs{newgeometry} alle Optionen, -% die von \cs{usepackage} und \cs{geometry} in -% der Präambel vorgenommen wurden, deaktiviert. -% \cs{restoregeometry} -% stellt das Seitenlayout, wie es in der Präambel angegeben ist, wieder her. Dieser Befehl -% besitzt keine Argumente. Lesen sie Kapitel~\ref{sec:midchange} für Details. -% -% \medskip -% |\savegeometry{|\meta{Name}|}| -% speichert die Seitenmaße als \meta{Name}, wo sie -% diesen Befehl nutzen.\\ -% |\loadgeometry{|\meta{Name}|}| -% lädt die Seitenmaße, die als \meta{Name} gespeichert wurden. Lesen sie -% Kapitel~\ref{sec:midchange} für Details. -% -% \subsection{Optionales Argument} -% -% Das \Gm\ Paket übernimmt die \textsf{keyval} Schnittstelle -% `\meta{Schlüssel}=\meta{Wert}' für das optionale Argument von -% \cs{usepackage}, \cs{geometry} und \cs{newgeometry}. -% -% Das Argument beinhaltet eine Liste von kommaseparierten \textsf{keyval} -% Optionen und besitzt folgende Grundregeln: -% \begin{itemize}\setlength{\itemsep}{-.5\parsep} -% \item Mehrfache Zeilen sind erlaubt, während es leere nicht sind. -% \item Jedes Leerzeichen zwischen den Wörtern wird ignoriert. -% \item Die Reihenfolge der Optionen ist grundlegend unabhängig. -% (Es gibt einige Ausnahmen. Lesen sie Kapitel~\ref{sec:optionorder} für Details.) -% \end{itemize} -% Zum Beispiel ist -% \begin{quote} -% |\usepackage[ a5paper , hmargin = { 3cm,|\\ -% | .8in } , height|\\ -% | = 10in ]{geometry}| -% \end{quote} -% äquivalent zu -% \begin{quote} -% |\usepackage[height=10in,a5paper,hmargin={3cm,0.8in}]{geometry}| -% \end{quote} -% Einigen Optionen ist es erlaubt, Unterlisten zu haben, z.\,B. |{3cm,0.8in}|. -% Beachten sie, dass die Reihenfolge der Werte in der Liste bedeutsam ist. -% Die obere Einstellung ist ebenso äquivalent zu Folgendem: -% \begin{quote} -% |\usepackage{geometry}|\\ -% |\geometry{height=10in,a5paper,hmargin={3cm,0.8in}}| -% \end{quote} -% oder -% \begin{quote} -% |\usepackage[a5paper]{geometry}|\\ -% |\geometry{hmargin={3cm,0.8in},height=8in}|\\ -% |\geometry{height=10in}|. -% \end{quote} -% Folglich hängt die mehrfache Nutzung von \cs{geometry} die Optionen aneinander. -% -% \Gm\ unterstützt das Paket -% \textsl{calc}\footnote{CTAN:~\texttt{macros/latex/required/tools}}. -% Zum Beispiel, -% \begin{quote} -% |\usepackage{calc}|\\ -% |\usepackage[textheight=20\baselineskip+10pt]{geometry}| -% \end{quote} -% -% \subsection{Optionstypen} -% \Gm\ Optionen sind in vier Typen eingeteilt: -% -% \begin{enumerate}\itemsep=0pt -% \item \textbf{Wahrheitswerttyp} -% -% Er nimmt einen Wahrheitswert an (|true (wahr)| oder |false (falsch)|). Falls kein Wert angegeben ist, -% wird standardmäßig |true (wahr)| eingesetzt. -% \begin{quote} -% \meta{Schlüssel}|=true|\OR|false|.\\ -% \meta{Schlüssel} ohne Wert ist äquivalent zu -% \meta{Schlüssel}|=true|. -% \end{quote} -% \textit{Beispiele:}~ |verbose=true|, |includehead|, -% |twoside=false|.\\ -% Der Papiername ist eine Ausnahme. Der bevorzugte Papiername sollte ohne Wert -% angegeben werden. Welcher Wert auch immer gegeben ist er wird ignoriert. Zum -% Beispiel ist |a4paper=XXX| äquivalent zu |a4paper|. -% -% \item \textbf{Typ mit einzelnem Wert} -% -% Man benötigt einen zwingenden Wert. -% \begin{quote} -% \meta{Schlüssel}|=|\meta{Wert}. -% \end{quote} -% \textit{Beispiele:}~ |width=7in|, |left=1.25in|, -% |footskip=1cm|, |height=.86\paperheight|. -% -% \item \textbf{Typ mit zwei Werten} -% -% Man benötigt ein Paar von kommagetrennten Werten in geschweiften Klammern. Die zwei Werte können -% zu einem gekürzt werden, wenn beide identisch sind. -% \begin{quote} -% \meta{Schlüssel}|=|\argii{Wert1}{Wert2}.\\ -% \meta{Schlüssel}|=|\meta{Wert} ist äquivalent zu -% \meta{Schlüssel}|=|\argii{Wert}{Wert}. -% \end{quote} -% \textit{Beispiele:}~ |hmargin={1.5in,1in}|, |scale=0.8|, -% |body={7in,10in}|. -% -% \item \textbf{Typ mit drei Werten} -% -% Man benötigt drei zwingende Werte, kommagetrennte Werte in geschweiften Klammern. -% \begin{quote} -% \meta{Schlüssel}|=|\argiii{Wert1}{Wert2}{Wert3} -% \end{quote} -% Jeder Wert muss ein Maß sein oder Null. Falls sie einen leeren Wert angeben -% oder `|*|', dies bedeutet Null, dann wird der übergebene Wert dem Autovervollständigungsmechanismus zugeführt. -% Sie müssen mindestens ein Maß angeben, typischerweise aber zwei. -% Sie können für alle Werte Null einsetzen, -% aber das macht keinen Sinn. -% \textit{Beispiele:}\\ -% \hspace*{2em} |hdivide={2cm,*,1cm}|, |vdivide={3cm,19cm, }|, -% |divide={1in,*,1in}|. -% \end{enumerate} -% -% \section{Details zu Optionen} -% -% Dieses Kapitel beschreibt alle Optionen, die in \Gm{} verfügbar sind. -% Optionen mit einem Dolch $^\dagger$ sind nicht vorhanden -% als Argumente von \cs{newgeometry} (Lesen sie Kapitel~\ref{sec:midchange}). -% -% \subsection{Papiergröße}\label{sec:paper} -% -% Die Optionen unten dienen zum Einstellen der Größe des Papiers/Mediums und der Orientierung. -% \begin{Options} -% \item[\onlypre paper (Papier)\OR papername (Papiername)] ~\\ -% gibt die Papiergröße anhand des Namens an. |paper=|\meta{Papiername}. -% Für besseren Komfort können sie den Papiernamen ohne |paper=| angeben. -% |a4paper| ist beispielsweise äquivalent zu |paper=a4paper|. -% \item[\onlypre \vtop{ -% \hbox{a0paper, a1paper, a2paper, a3paper, a4paper, a5paper, a6paper,} -% \hbox{b0paper, b1paper, b2paper, b3paper, b4paper, b5paper, b6paper,} -% \hbox{c0paper, c1paper, c2paper, c3paper, c4paper, c5paper, c6paper,} -% \hbox{b0j, b1j, b2j, b3j, b4j, b5j, b6j,} -% \hbox{ansiapaper, ansibpaper, ansicpaper, ansidpaper, ansiepaper,} -% \hbox{letterpaper, executivepaper, legalpaper}}]~\\[1ex] -% gibt den Papiernamen an. Der Wert wird ignoriert, sogar wenn einer angegeben wird. -% Beispielsweise hat das Folgende den gleichen Effekt: -% |a5paper|, |a5paper=true|, |a5paper=false| und so weiter. -% |a[0-6]paper|, |b[0-6]paper| und |c[0-6]paper| sind ISO A, B und C -% Serien von Papiergrößen. -% Die JIS (Japanischer Industriestandard) A-Serien ist identisch zu den -% ISO A-Serien, aber die JIS B-Serien sind von den ISO B-Serien verschieden. -% |b[0-6]j| sollte für die JIS B-Serien genutzt werden. -% \item[\onlypre screen] eine spezielle Papiergröße mit (B,H) = (225\,mm,180\,mm). -% Für Präsentationen mit dem PC und einem Beamer kann ``|screen,centering|'', -% in Verbindung mit `slide' in der Dokumentklasse nützlich sein. -% \item[\onlypre paperwidth] Breite des Papiers. |paperwidth=|\meta{Länge}. -% \item[\onlypre paperheight] Höhe des Papiers. |paperheight=|\meta{Länge}. -% \item[\onlypre papersize] Breite und Höhe des Papiers. -% |papersize=|\argii{Breite}{Höhe} oder |papersize=|\meta{Länge}. -% \item[\onlypre landscape] wechselt die Papierorientierung in den Landschaftsmodus. -% \item[\onlypre portrait] wechselt die Papierorientierung in den Portraitsmodus. -% Dies ist das Gleiche wie |landscape=false|. -% \end{Options} -% -% Die Optionen für den Papiernamen (z.\,B., |a4paper|) und die Orientierung -% (|portrait| und |landscape|) können als Dokumentklassenoptionen benutzt werden. -% Zum Beispiel können sie\\ |\documentclass[a4paper,landscape]{article}| eingeben, -% dann werden |a4paper| und |landscape| auch in \Gm\ abgearbeitet. -% Dies ist ebenso im Fall von |twoside (zweiseitig)| und |twocolumn (zweispaltig)| -% (Lesen sie auch Kapitel~\ref{sec:dimension}). -% -% \subsection{Layoutgröße} -% -% Sie können den Layoutbereich mit den Optionen, die in diesem Kapitel beschrieben sind, ungeachtet der Papiergröße, angeben. -% Die Optionen helfen das angegebene Layout auf unterschiedlichen -% Papiergrößen zu drucken. Wenn sie beispielsweise |a4paper| und |layout=a5paper| nutzen, dann -% benutzt das Paket das `A5' Layout, um die Ränder auf dem `A4' Papier zu berechnen. -% Die Layoutgröße wird genauso groß wie die des Papiers. -% Die Optionen für die Layoutgröße sind mittels \cs{newgeometry} erreichbar, -% sodass sie die Layoutgröße in der Mitte des Dokuments verändern können. -% Die Papiergröße selbst kann so nicht geändert werden. -% Abbildung~\ref{fig:layoutandpaper} zeigt, was die Unterschiede zwischen -% |layout| und |paper| sind. -% \begin{Options} -% \item[layout] gibt die Layoutgröße vom Papiernamen an. -% |layout=|\meta{Papiername}. Alle Papiernamen, die in \Gm\ definiert sind, sind wählbar. -% Lesen sie auch Kapitel~\ref{sec:paper} für mehr Details. -% \item[layoutwidth] Breite des Layouts. |layoutwidth=|\meta{Länge}. -% \item[layoutheight] Höhe des Layouts. |layoutheight=|\meta{Länge}. -% \item[layoutsize] Breite und Höhe des Layouts. -% |layoutsize=|\argii{Breite}{Höhe} oder |layoutsize=|\meta{Länge}. -% \item[layouthoffset] gibt den horizontalen Versatz von der linken Kante des Papiers an. -% |layouthoffset=|\meta{Länge}. -% \item[layoutvoffset] gibt den vertikalen Versatz von der oberen Kante des Papiers an. -% |layoutvoffset=|\meta{Länge}. -% \item[layoutoffset] gibt beides, horizontalen und vertikalen Versatz an. -% |layoutoffset=|\argii{hoffset}{voffset} oder |layoutsize=|\meta{Länge}. -% \end{Options} -% \begin{figure}[h] -% \centering\small -% {\unitlength=.6pt -% \begin{picture}(450,250)(0,-10) -% \put(20,0){\makebox(168,12)[r]{\gpart{Papier}}} -% \put(20,0){\framebox(170,230){}} -% \put(21,40){\dashbox{3}(140,189){}} -% \put(21,28){\makebox(140,12)[r]{\gpart{Layout}}} -% \put(40,50){\makebox(100,10){\gpart{Fuß}}} -% \put(40,50){\line(1,0){100}} -% \put(40,65){\framebox(100,125){\gpart{Textbereich}}} -% \put(40,200){\framebox(100,10){\gpart{Kopf}}} -% \put(20,230){\makebox(140,20){|Layoutbreite|}} -% \put(40,240){\vector(-1,0){20}} -% \put(140,240){\vector(1,0){20}} -% \put(10,145){\vector(0,1){85}} -% \put(15,125){\makebox(0,20)[r]{|Layouthöhe|}} -% \put(10,125){\vector(0,-1){85}} -% \put(280,0){\makebox(168,12)[r]{\gpart{Papier}}} -% \put(280,0){\framebox(170,230){}} -% \put(293,35){\dashbox{3}(140,189){}} -% \put(293,23){\makebox(140,12)[r]{\gpart{Layout}}} -% \put(312,45){\makebox(100,10){\gpart{Fuß}}} -% \put(312,45){\line(1,0){100}} -% \put(312,60){\framebox(100,125){\gpart{Textbereich}}} -% \put(312,195){\framebox(100,10){\gpart{Kopf}}} -% \put(235,230){\makebox(80,20)[l]{|layouthoffset|}} -% \put(260,210){\vector(1,0){20}} -% \put(308,210){\vector(-1,0){15}} -% \put(260,210){\line(-1,2){10}} -% \put(355,230){\makebox(100,20){|layoutvoffset|}} -% \put(350,250){\vector(0,-1){20}} -% \put(350,209){\vector(0,1){15}} -% \end{picture}} -% \caption[Layout und Papier]{% -% \begin{minipage}[t]{.7\textwidth}\raggedright\small -% Die Maße sind mit denen der Layoutgröße verwandt. Beachte, dass die Layoutgrößenvorgaben -% zu der Größe des Papiers korrespondieren, sodass sie die meisten layoutbezogenen Optionen -% nicht explizit angeben müssen. -% \end{minipage}} -% \label{fig:layoutandpaper} -% \end{figure} -% -% \subsection{Größe des Textbereichs}\label{sec:body} -% -% Die Optionen, die die Größe des \gpart{druckbaren Bereichs} angeben, werden in diesem Kapitel beschrieben. -% -% \begin{Options} -% \item[hscale] -% Verhältnis der Breite des \gpart{druckbaren Bereichs} zur \cs{paperwidth (Papierbreite)}. -% |hscale=|\meta{h-scale}, z.\,B. |hscale=0.8| ist äquivalent zu -% |width=0.8|\cs{paperwidth (Papierbreite)}. (|0.7| ist der Standard) -% \item[vscale] -% Verhältnis der Höhe des \gpart{druckbaren Bereichs} zur \cs{paperheight (Papierhöhe)}, z.\,B. -% |vscale=|\meta{v-scale}. (|0.7| ist der Standard) |vscale=0.9| ist äquivalent -% zu |height=0.9|\cs{paperheight (Papierhöhe)}. -% \item[scale] Verhältnis des \gpart{druckbaren Bereichs} zum Papier. -% |scale=|\argii{h-scale}{v-scale} oder |scale=|\meta{scale}. -% (|0.7| ist der Standard) -% \item[width\OR totalwidth] ~\\ -% Breite des \gpart{druckbaren Bereichs}. |width=|\meta{Länge} oder -% |totalwidth=|\meta{Länge}. Dieses Maß korrespondiert zur |textwidth (Textbreite)|, -% aber wenn |includemp| auf |true| gesetzt ist, dann ist die |Breite| $\ge$ |Textbreite|, -% weil die |Breite| die Breite der Randnotizen beinhaltet. -% Wenn die |Textbreite| und die |Breite| gleichzeitig angegeben werden, -% dann hat die |Textbreite| eine höhere Priorität als die |Breite|. -% \item[height\OR totalheight] ~\\ -% Höhe des \gpart{druckbaren Bereichs}, wobei Kopf und Fuß standardmäßig ausgeschlossen sind. -% Wenn |includehead| oder |includefoot| gesetzt ist, dann beinhaltet die |height (Höhe)| -% den Kopf oder den Fuß der Seite sowie die |textheight (Texthöhe)|. -% |height=|\meta{Länge} oder |totalheight=|\meta{Länge}. Falls beide, -% |textheight (Texthöhe)| und |height (Höhe)|, angegeben sind, wird die |height (Höhe)| ignoriert werden. -% \item[total] Breite und Höhe des \gpart{druckbaren Bereichs}.\\ -% |total=|\argii{Breite}{Höhe} oder |total=|\meta{Länge}. -% \item[textwidth] gibt die \cs{textwidth (Textbreite)}, die Breite des \gpart{Körpers} -% (der Textbereich) an. |textwidth=|\meta{Länge}. -% \item[textheight] gibt die \cs{textheight (Texthöhe)}, die Höhe des -% \gpart{Körpers} (der Textkörper) an. |textheight=|\meta{Länge}. -% \item[text\OR body] gibt beides, die \cs{textwidth (Textbreite)} und \cs{textheight (Texthöhe)} -% des Körpers der Seite an. |body=|\argii{Breite}{Höhe} oder -% |text=|\meta{Länge}. -% \item[lines] erlaubt dem Benutzer, die \cs{textheight (Texthöhe)} durch die Anzahl -% der Zeilen anzugeben. |lines|=\meta{ganzzahliger Wert}. -% \item[includehead] schließt den Kopf der Seite, die \cs{headheight (Kopfhöhe)} -% und \cs{headsep (Kopftrennung)} in den \gpart{druckbaren Bereich} ein. Diese Option ist in den Voreinstellungen durch -% |false| deaktiviert. Es ist das Gegenteil von |ignorehead|. Betrachten sie auch -% Abbildung~\ref{fig:includes} und Abbildung~\ref{fig:modes}. -% \item[includefoot] schließt den Fuß der Seite, \cs{footskip (Fußbereich)}, -% in den \gpart{druckbaren Bereich} ein. Es ist das Gegenteil von |ignorefoot|. -% Die Voreinstellung ist |false| (deaktiviert). Betrachten sie auch Abbildung~\ref{fig:includes} und -% Abbildung~\ref{fig:modes}. -% \item[includeheadfoot]~\\ -% setzt beides, |includehead| und |includefoot|, auf |true|, dies ist das Gegenteil -% von |ignoreheadfoot|. Betrachten sie auch Abbildung~\ref{fig:includes} und -% Abbildung~\ref{fig:modes}. -% \item[includemp] schließt die Randnotizen, die \cs{marginparwidth (Randnotizbreite)} -% und \cs{marginparsep (Randnotiztrennung)} in den \gpart{Körper} ein, wenn die horizontalen Maße -% berechnet werden. -% \item[includeall] setzt beides, |includeheadfoot| und |includemp| auf -% |true| (aktiv). Betrachten sie auch Abbildung~\ref{fig:modes}. -% \item[ignorehead] missachtet den Kopf der Seite, -% |headheight (Kopfhöhe)| und |headsep (Kopftrennung)|, sind ausschlaggebend für das vertikale Layout, aber diese ändern -% dessen Längen nichts. Es ist äquivalent zu |includehead=false|. Diese Option ist mit -% |true| voreingestellt. Lesen sie auch |includehead|. -% \item[ignorefoot] missachtet den Fuß der Seite, der |footskip (Fußbereich)|, -% ist ausschlaggebend für das vertikale Layout, aber dies ändert die Länge nicht. -% Diese Voreinstellung der Option ist |true|. Lesen sie auch |includefoot|. -% \item[ignoreheadfoot]~\\ setzt beides, |ignorehead| und |ignorefoot| -% auf |true|. Lesen sie auch |includeheadfoot|. -% \item[ignoremp] vernachlässigt die Randnotizen bei der Berechnung der horizontalen -% Ränder (der Standard ist |true|). Wenn die Randnotizen die Seite überfüllen, -% dann wird eine Warnmeldung angezeigt werden, wenn |verbose=true| aktiviert ist. -% Sehen sie auch |includemp| und Abbildung~\ref{fig:modes}. -% \item[ignoreall] setzt beides, |ignoreheadfoot| und |ignoremp| auf |true|. -% Lesen sie auch |includeall|. -% \item[heightrounded]~\\ -% Diese Option rundet die \cs{textheight (Texthöhe)}, um \textit{n}-Mal mehr (\textit{n}: -% ist eine ganze Zahl) \cs{baselineskip} plus \cs{topskip}, um -% ``underfull vbox'' in manchen Fällen zu vermeiden. Zum Beispiel, wenn die \cs{textheight (Texthöhe)} -% 486pt ist, mit \cs{baselineskip} 12pt und \cs{topskip} 10pt, dann -% \begin{quote} -% $(39\times12\textrm{pt}+10\textrm{pt}=)\: 478\textrm{pt} -% < 486\textrm{pt} < -% 490\textrm{pt} \:(=40\times12\textrm{pt}+10\textrm{pt})$, -% \end{quote} -% als Ergebnis wird die \cs{textheight (Texthöhe)} auf 490\,pt aufgerundet. |heightrounded=false| -% ist voreingestellt. -% \end{Options} -% -% Abbildung~\ref{fig:modes} illustriert die verschiedenen Layouttypen mit den verschiedenen Layoutmodi. -% Die Maße für einen Kopf und einen Fuß können durch den -% |nohead|- oder |nofoot|-Modus kontrolliert werden, dies setzt jede Länge auf 0\,pt. -% Auf der anderen Seite verändern Optionen mit dem Präfix |ignore| \textit{nicht} -% die korrespondierenden, ursprünglichen Maße. -% -% -% Die folgenden Optionen können den Körper und die Ränder gleichzeitig angeben, mit -% drei kommagetrennten Werten in geschweiften Klammern. -% -% \begin{figure}[h] -% \centering\small -% {\unitlength=.65pt -% \begin{picture}(460,525)(0,0) -% \put( 20,310){\framebox(120,170){}} -% \put( 20,507){\makebox(120,0)[bl]% -% {\textbf{(a)}~|includeheadfoot|}} -% \put( 20,460){\line(1,0){120}}\put( 20,450){\line(1,0){120}} -% \put( 20,330){\line(1,0){120}} -% \put( 20,485){\makebox(120,0)[br]{\gpart{druckbarer Bereich}}} -% \put( 20,335){\makebox(120,0)[bc]{|Textbreite|}} -% \put(150,470){\makebox(0,0)[l]{|headheight|}} -% \put(150,450){\makebox(0,0)[l]{|headsep|}} -% \put(150,390){\makebox(0,0)[l]{|textheight|}} -% \put(150,320){\makebox(0,0)[l]{|Fußbereich|}} -% \put( 10,460){\makebox(120,20)[bc]{\gpart{Kopf}}} -% \put( 10,320){\makebox(120,140)[c]{\gpart{Körper}}} -% \put( 10,310){\makebox(120,10)[c]{\gpart{Fuß}}} -% \put(250,310){\framebox(120,170){}} -% \put(250,507){\makebox(120,0)[bl]% -% {\textbf{(b)}~|includeall|}} -% \put(250,460){\line(1,0){95}}\put(250,450){\line(1,0){95}} -% \put(250,330){\line(1,0){95}}\put(345,330){\line(0,1){120}} -% \put(350,330){\line(0,1){120}}\put(350,450){\line(1,0){20}} -% \put(350,330){\line(1,0){20}} -% \put(250,485){\makebox(120,0)[br]{\gpart{druckbarer Bereich}}} -% \put(250,460){\makebox(95,20)[bc]{\gpart{Kopf}}} -% \put(250,320){\makebox(95,140)[c]{\gpart{Fuß}}} -% \put(385,390){\makebox(95,0)[cl]% -% {\gpart{\shortstack[l]{Rand-\\notiz}}}} -% \put(250,310){\makebox(95,10)[c]{\gpart{Fuß}}} -% \put(250,335){\makebox(95,0)[bc]{|textwidth|}} -% \multiput(360, 390)(4,0){6}{\line(1,0){2}} -% \multiput(348,333)(0,-4){12}{\line(0,1){2}} -% \multiput(360,333)(0,-4){8}{\line(0,1){2}} -% \put(355,292){\makebox(0,0)[bl]{|marginparwidth|}} -% \put(345,275){\makebox(0,0)[bl]{|marginparsep|}} -% \put( 20, 40){\framebox(120,170){}} -% \put( 20,237){\makebox(120,0)[bl]% -% {\textbf{(c)}~|includefoot|}} -% \put( 20, 60){\line(1,0){120}} -% \put( 20,215){\makebox(120,0)[br]{\gpart{druckbarer Bereich}}} -% \put(150,130){\makebox(0,0)[l]{|textheight|}} -% \put(150, 50){\makebox(0,0)[l]{|footskip|}} -% \put( 20, 50){\makebox(120,160)[c]{\gpart{Körper}}} -% \put( 20, 40){\makebox(120,10)[c]{\gpart{Fuß}}} -% \put( 20, 65){\makebox(120,10)[c]{|textwidth|}} -% \put(250, 40){\framebox(120,170){}} -% \put(250,237){\makebox(120,0)[bl]% -% {\textbf{(d)}~|includefoot,includemp|}} -% \put(250, 60){\line(1,0){95}}\put(350, 60){\line(1,0){20}} -% \put(250,215){\makebox(120,0)[br]{\gpart{druckbarer Bereich}}} -% \put(250, 50){\makebox(95,160)[c]{\gpart{Körper}}} -% \put(385,130){\makebox(95,0)[cl]% -% {\gpart{\shortstack[l]{Rand-\\notiz}}}} -% \put(250, 40){\makebox(95,10)[c]{\gpart{Fuß}}} -% \put(250, 65){\makebox(95,0)[bc]{|textwidth|}} -% \put(345, 60){\line(0,1){150}}\put(350, 60){\line(0,1){150}} -% \multiput(360, 130)(4,0){6}{\line(1,0){2}} -% \multiput(348, 63)(0,-4){12}{\line(0,1){2}} -% \multiput(360, 63)(0,-4){8}{\line(0,1){2}} -% \put(355,22){\makebox(0,0)[bl]{|marginparwidth|}} -% \put(345, 5){\makebox(0,0)[bl]{|marginparsep|}} -% \end{picture}} -% \caption[Musterlayout für den \gpart{druckbaren Bereich} mit verschiedenen -% Layoutmodi]{% -% \begin{minipage}[t]{.8\textwidth}\small -% Musterlayouts für den \gpart{druckbaren Bereich} mit verschiedenen Veränderungen. -% (a) |includeheadfoot|, (b) |includeall|, (c) |includefoot| -% und (d) |includefoot,includemp|. -% Wenn |reversemp| auf |true| gesetzt ist, dann werden die Orte -% für die Randnotizen auf jeder Seite getauscht. -% Die Option |twoside| tauscht beides, die Ränder und die Randnotizen auf der Rückseite. -% Beachten sie, dass die Randnotiz gedruckt wird, falls vorhanden, trotz das -% |ignoremp| oder |includemp=false| und Überlauf der Seite, in einigen Fällen. -% \end{minipage}} -% \label{fig:modes} -% \end{figure} -% -% \begin{Options} -% \item[hdivide] horizontale Aufteilung (links,Breite,rechts). -% |hdivide=|\argiii{linker Rand}{Breite}{rechter Rand}. -% Beachten sie, dass sie nicht alle drei Parameter eingeben sollten. -% Die beste Möglichkeit der Nutzung dieser Option ist die Angabe von zwei der drei Parameter und -% das Freilassen des verbliebenen mit Null(nichts) oder `|*|'. Zum Beispiel, wenn sie -% |hdivide={2cm,15cm, }| einstellen, dann wird der Rand von der rechtsseitigen Kante der Seite -% die Rechnung bestimmen |paperwidth-2cm-15cm|. -% \item[vdivide] vertikale Aufteilung (oben,Höhe,unten). -% |vdivide=|\argiii{oberer Rand}{Höhe}{unterer Rand}. -% \item[divide] |divide=|\vargiii{$A$}{$B$}{$C$} wird interpretiert als -% |hdivide=|\vargiii{$A$}{$B$}{$C$} und |vdivide=|\vargiii{$A$}{$B$}{$C$}. -% \end{Options} -% -% \subsection{Randgröße}\label{sec:margin} -% -% Die Optionen zum Spezifizieren der Größe der Ränder sind unten aufgelistet. -% -% \begin{Options} -% \item[left\OR lmargin\OR inner]~\\ -% linker Rand (für einseitige Dokumente) oder innerer Rand (für zweiseitige Dokumente) des -% \gpart{druckbaren Bereichs}. Mit anderen Worten, es ist die Distanz zwischen der linken (inneren) -% Kante des Papiers und der des \gpart{druckbaren Bereichs}. |left=|\meta{Länge}. -% |inner (innen)| hat keine besondere Bedeutung, nur eine alternative für |left| und |lmargin|. -% \item[right\OR rmargin\OR outer]~\\ -% rechter oder äußerer Rand des \gpart{druckbaren Bereichs}. |right=|\meta{Länge}. -% \item[top\OR tmargin] oberer Rand der Seite. |top=|\meta{Länge}. -% Beachten sie, dass diese Option nichts mit dem ursprünglichen Maß -% \cs{topmargin} zu tun hat. -% \item[bottom\OR bmargin]~\\ -% unterer Rand der Seite. |bottom=|\meta{Länge}. -% \item[hmargin] linker und rechter Rand. -% |hmargin=|\argii{linker Rand}{rechter Rand} oder |hmargin=|\meta{Länge}. -% \item[vmargin] oberer und unterer Rand. -% |vmargin=|\argii{oberer Rand}{unterer Rand} oder |vmargin=|\meta{Länge}. -% \item[margin] |margin=|\vargii{$A$}{$B$} ist äquivalent zu -% |hmargin=|\vargii{$A$}{$B$} und |vmargin=|\vargii{$A$}{$B$}. -% |margin=|$A$ wird automatisch erweitert zu |hmargin=|$A$ und |vmargin=|$A$. -% \item[hmarginratio] -% Verhältnis des horizontalen Rands des |linken| (inneren) zum |rechten| (äußeren). -% Der Wert des \meta{Verhältnisses} sollte mit zwei Werten, die durch einen Doppelpunkt getrennt sind, -% angegeben werden. Jeder Wert sollte eine positive ganze Zahl kleiner 100 sein, -% um einen arithmetischen Überlauf zu verhindern, z.\,B. |2:3| anstatt |1:1.5|. -% Das Standardverhältnis ist |1:1| für einseitige Dokumente, |2:3| für zweiseitige. -% \item[vmarginratio] -% Verhältnis des vertikalen Randes, des |oberen| Randes zum |unteren|. Das Standardverhältnis ist |2:3|. -% \item[marginratio\OR ratio]~\\ -% horizontale und vertikale Randverhältnisse. -% |marginratio=|\argii{horizontales Verhältnis}{vertikales Verhältnis} oder -% |marginratio=|\meta{Verhältnis}. -% \item[hcentering] aktiviert die automatische horizontale Zentrierung und ist -% äquivalent zu |hmarginratio=1:1|. Es ist für die Option oneside auf |true| gesetzt. -% Lesen sie auch |hmarginratio|. -% \item[vcentering] aktiviert die automatische vertikale Zentrierung und ist -% äquivalent zu |vmarginratio=1:1|. Diese Option ist standardmäßig auf |false| gesetzt. -% Lesen sie auch |vmarginratio|. -% \item[centering] aktiviert die automatische Zentrierung und ist äquivalent zu -% |marginratio=1:1|. Lesen sie auch |marginratio|. Der Standard ist |false|. -% \item[twoside] wechselt das Layout in den twoside (zweiseitigen) Modus, wobei der linke und der rechte Rand auf der -% Rückseite vertauscht wird. Die Option setzt einen \cs{@twoside} und \cs{@mparswitch} -% Schalter. Lesen sie auch |asymmetric|. -% \item[asymmetric] führt ein zweiseitiges Layout ein, wobei die Ränder nicht getauscht werden -% auf alternativen Seiten (durch die Einstellung \cs{oddsidemargin} zu -% \cs{evensidemargin} |+| |bindingoffset|) und die Randnotizen -% immer auf der selben Seite bleiben. Diese Option kann als Alternative für die -% twoside Option genutzt werden. Lesen sie auch |twoside|. -% \item[bindingoffset]~\\ entfernt einen angegeben Raum -% von der linken Seite bei oneside oder der inneren Seite bei -% twoside. |bindingoffset=|\meta{Länge}. Dies ist nützlich, wenn die Seiten durch eine -% Pressbindung verbunden sind (glued, stitched, stapled \ldots). -% Betrachten sie auch Abbildung~\ref{fig:bindingoffset}. -% \item[hdivide] Siehe Beschreibung im Kapitel~\ref{sec:body}. -% \item[vdivide] Siehe Beschreibung im Kapitel~\ref{sec:body}. -% \item[divide] Siehe Beschreibung im Kapitel~\ref{sec:body}. -% \end{Options} -% \begin{figure}[h] -% \centering\small -% {\unitlength=.65pt -% \begin{picture}(500,270)(0,0) -% \put(20,0){\framebox(170,230){}} -% \put(20,255){\makebox(80,20)[l]{\textbf{a)}~jede Seite für oneside oder}} -% \put(20,240){\makebox(80,20)[l]{\hspace{3ex}eine einzelne Seite für twoside}} -% \put(110,225){\makebox(80,20)[r]{\gpart{Papier}}} -% \put(55,37){\framebox(110,170)[tc]{\gpart{druckbarer Bereich}}} -% \multiput(38,0)(0,7){33}{\line(0,1){4}} -% \put(38,100){\vector(1,0){17}}\put(55,100){\vector(-1,0){17}} -% \put(60,95){\makebox(80,10)[l]{|left|}} -% \put(60,80){\makebox(80,10)[l]{(|inner|)}} -% \put(165,100){\vector(1,0){25}}\put(190,100){\vector(-1,0){25}} -% \put(195,95){\makebox(80,10)[l]{|right|}} -% \put(195,80){\makebox(80,10)[l]{(|outer|)}} -% \put(20,16){\vector(1,0){18}} -% \put(45,10){\makebox(80,10)[bl]{|bindingoffset|}} -% \put(280,255){\makebox(80,20)[l]{\textbf{b)}~ (Rück-) Seiten für twoside}} -% \put(280,0){\framebox(170,230){}} -% \put(370,225){\makebox(80,20)[r]{\gpart{Papier}}} -% \put(305,37){\framebox(110,170)[tc]{\gpart{druckbarer Bereich}}} -% \multiput(432,0)(0,7){33}{\line(0,1){4}} -% \put(280,100){\vector(1,0){25}}\put(305,100){\vector(-1,0){25}} -% \put(310,95){\makebox(80,10)[l]{|outer|}} -% \put(310,80){\makebox(80,10)[l]{(|right|)}} -% \put(415,100){\vector(1,0){17}}\put(432,100){\vector(-1,0){17}} -% \put(373,95){\makebox(80,10)[l]{|inner|}} -% \put(373,80){\makebox(80,10)[l]{(|left|)}} -% \put(450,16){\vector(-1,0){18}} -% \put(330,10){\makebox(80,10)[bl]{|bindingoffset|}} -% \end{picture}} -% \caption[\texttt{bindingoffset} Option]{% -% \begin{minipage}[t]{.8\textwidth}\raggedright\small -% Die Option |bindingoffset| fügt eine angegebene Länge zum inneren Rand hinzu. -% Beachten sie, dass die |twoside| Option die horizontalen Ränder und die Randnotizen -% zusammen mit |bindingoffset| auf jeder Seite tauscht (siehe -% \textbf{b)}), aber die |asymmetric| Option unterdrücke den Tausch der Ränder und der Randnotizen -% (aber |bindingoffset| wird dennoch getauscht). -% \end{minipage}} -% \label{fig:bindingoffset} -% \end{figure} -% -% \subsection{Ursprüngliche Maße}\label{sec:dimension} -% -% Die unteren Optionen überschreiben die ursprünglichen Maße von \LaTeX\ und die Veränderungen für das Seitenlayout -% (Betrachten sie auch die rechte Seite in Abbildung~\ref{fig:layout}). -% -% \begin{Options} -% \item[headheight\OR head]~\\ -% modifiziert die \cs{headheight}, die Höhe des Kopfes. -% |headheight=|\meta{Länge} oder |head=|\meta{Länge}. -% \item[headsep] modifiziert die \cs{headsep}, die Abtrennung zwischen dem Kopfbereich und dem Text -% (body). |headsep=|\meta{Länge}. -% \item[footskip\OR foot]~\\ modifiziert den \cs{footskip}, die Distanzabtrennung zwischen -% der Grundlinie der letzten Zeile des Textes und der Grundlinie des Fußes. -% |footskip=|\meta{Länge} oder |foot=|\meta{Länge}. -% \item[nohead] entfernt den Platz für den Kopf der Seite, dies ist äquivalent zu -% \cs{headheight}|=0pt| und \cs{headsep}|=0pt|. -% \item[nofoot] entfernt den Platz für den Fuß der Seite, dies ist äquivalent zu -% \cs{footskip}|=0\,pt|. -% \item[noheadfoot] ist äquivalent zu |nohead| und |nofoot|, dies bedeutet, dass -% \cs{headheight}, \cs{headsep} und \cs{footskip} alle auf |0pt| eingestellt werden. -% \item[footnotesep] verändert die Maße \cs{skip}\cs{footins}, die Abtrennung zwischen -% dem unteren Ende des Textkörpers und dem oberen Ende des Fußnotentextes. -% \item[marginparwidth\OR marginpar]~\\ -% modifiziert die \cs{marginparwidth}, die Breite der Randnotizen. -% |marginparwidth=|\meta{Länge}. -% \item[marginparsep] modifiziert die \cs{marginparsep}, die Abtrennung zwischen -% dem Körper und den Randnotizen. |marginparsep=|\meta{Länge}. -% \item[nomarginpar] schrumpft den Platz für die Randnotizen auf 0\,pt, dies -% ist äquivalent zu \cs{marginparwidth}|=0pt| und \cs{marginparsep}|=0pt|. -% \item[columnsep] modifiziert die \cs{columnsep}, die Abtrennung zwischen zwei -% Spalten im |twocolumn| Modus. -% \item[hoffset] modifiziert \cs{hoffset}. |hoffset=|\meta{Länge}. -% \item[voffset] modifiziert \cs{voffset}. |voffset=|\meta{Länge}. -% \item[offset] horizontaler und vertikaler Versatz.\\ -% |offset=|\argii{hoffset}{voffset} oder |offset=|\meta{Länge}. -% \item[twocolumn] aktiviert den |twocolumn| Modus mit \cs{@twocolumntrue}. -% |twocolumn=false| bezeichnet den onecolumn Modus (Modus mit einer Spalte) mit \cs{@twocolumnfalse}. -% Anstatt |twocolumn=false|, können sie |onecolumn| angeben (die Vorgabe ist -% |true|) -% \item[onecolumn] arbeitet als |twocolumn=false|. Auf der anderen Seite ist -% |onecolumn=false| äquivalent zu |twocolumn|. -% \item[twoside] aktiviert beides, \cs{@twosidetrue} und \cs{@mparswitchtrue}. -% Lesen sie auch Kapitel~\ref{sec:margin}. -% \item[textwidth] lässt sie die \cs{textwidth (Textbreite)} direkt einstellen. Lesen sie auch Kapitel~\ref{sec:body}. -% \item[textheight] lässt sie die \cs{textheight (Texthöhe)} direkt einstellen. Lesen sie auch Kapitel~\ref{sec:body}. -% \item[reversemp\OR reversemarginpar]~\\ -% sorgt dafür, dass die Randnotizen am (inneren) linken Rand erscheinen, mit -% \cs{@reversemargintrue}. Die Option verändert nichts am |includemp| Modus. -% Diese Option ist mit |false| voreingestellt. -% \end{Options} -% -% \subsection{Treiber}\label{sec:drivers} -% -% Dieses Paket unterstützt die Treiber |dvips|, |dvipdfm|, |pdftex|, |xetex| und -% |vtex|. Sie können auch |dvipdfm| für \textsf{dvipdfmx} einstellen und -% \textsf{xdvipdfmx}. |pdftex| für \textsf{pdflatex}, und |vtex| für die -% V\TeX{} Umgebung. -% Die Treiberoptionen sind exklusiv. Der Treiber kann durch beides eingestellt werden, -% |driver=|\meta{Treibername} oder die direkte Angabe eines Treibers wie |pdftex|. -% Standardmäßig nimmt \Gm\ den Treiber, der am besten zum benutzten System passt. -% Deshalb müssen sie in den meisten Fällen keinen Treiber angeben. -% Wie auch immer, wenn sie |dvipdfm| benutzen wollen, dann sollten sie dies explizit angeben. -% -% \begin{Options} -% \item[\onlypre driver] gibt den Treibernamen mit |driver=|\meta{Treibername} an. -% |dvips|, |dvipdfm|, |pdftex|, |vtex|, |xetex|, |auto| und |none| sind -% als Treibername einsetzbar. Außer den Namen für |auto| und |none| können -% alle Treiber direkt mit dem Namen, ohne |driver=|, angegeben werden. -% |driver=auto| schaltet die automatische Detektion ein, egal was die vorherigen Einstellungen waren. -% |driver=none| schaltet die automatische Detektion ab und es wird kein Treiber gewählt. Dies -% könnte nützlich sein, wenn sie wollen, dass andere Pakete die Treibereinstellungen herausfinden sollen. -% Ein Beispiel: Wenn sie das \textsf{crop} Paket mit \Gm{} nutzen wollen, -% dann sollten sie |\usepackage[driver=none]{geometry}| aufrufen, bevor -% sie das \textsf{crop} Paket aufrufen. -% \item[\onlypre dvips] schreibt die Papiergröße in die dvi Ausgabe, mit dem \cs{special} -% Makro. Wenn sie \textsl{dvips} als DVI-zu-PS Treiber nutzen, dann -% brauchen sie, wenn sie beispielsweise ein Dokument mit |\geometry{a3paper,landscape}| -% auf A3-Papier mit der landscape Orientierung drucken wollen, die Optionen -% ``|-t a3 -t landscape|'' für \textsl{dvips} nicht. -% \item[\onlypre dvipdfm] arbeitet wie |dvips|, ausgenommen die landscape Korrektur. -% Sie können diese Option einschalten, wenn sie \textsf{dvipdfmx} nutzen und -% \textsf{xdvipdfmx}, um die dvi Ausgabe zu erzeugen. -% \item[\onlypre pdftex] setzt \cs{pdfpagewidth} und \cs{pdfpageheight} -% intern. -% \item[\onlypre xetex] ist dasselbe wie |pdftex|, ausgenommen das Ignorieren von -% |\pdf{h,v}origin|, das in \XeLaTeX{} nicht definiert ist. Diese Option wurde in 5. Version eingeführt. -% Beachten sie, dass die `geometry.cfg' in \TeX{} Live, welche die -% automatische Detektionsroutine deaktiviert und |pdftex| einstellt, nicht länger notwendig ist. -% Trotzdem gibt es keine Probleme, sogar wenn die Datei nicht gelöscht wird. -% Anstatt |xetex|, können sie |dvipdfm| angeben, mit \XeLaTeX{}, -% wenn sie die Besonderheiten von dvipdfm nutzen wollen, die \XeTeX{} unterstützt. -% \item[\onlypre vtex] setzt die Maße \cs{mediawidth} und \cs{mediaheight} -% für V\TeX. Wenn dieser Treiber ausgewählt ist (explizit oder automatisch), -% wird \Gm\ den Ausgabemodus (DVI, PDF oder PS), der in V\TeX gewählt ist, selbstständig herausfinden -% und die richtigen Einstellungen für ihn machen. -% \end{Options} -% Wenn der explizit angegebene Treiber nicht zum benutzten Textsatzprogramm passt, -% dann wird der Standardtreiber |dvips| ausgewählt. -% -% \subsection{Sonstige Optionen} -% -% Die sonstigen nützlichen Optionen werden jetzt beschrieben. -% -% \begin{Options} -% \item[\onlypre verbose] zeigt die Parameterergebnisse im Terminal an. -% |verbose=false| (Standard) schreibt diese nur in die Log-Datei. -% \item[\onlypre reset] setzt die Layoutmaße zurück und nimmt die Einstellungen an, -% die vor dem Laden von \Gm\ vorgegeben waren. Die Optionen, die in -% |geometry.cfg| angegeben sind, werden auch entfernt. -% Beachten sie, dass dies nicht |pass| und |mag| mit |truedimen| zurücksetzen kann. -% |reset=false| hat keine Auswirkungen und kann ein vorheriges -% |reset|(|=true|), falls es dies gibt, nicht aufheben. Zum Beispiel, wenn sie -% \begin{quote} -% |\documentclass[landscape]{article}|\\ -% |\usepackage[twoside,reset,left=2cm]{geometry}| -% \end{quote} -% eingeben, mit |\ExecuteOptions{scale=0.9}| in |geometry.cfg|, -% dann bleiben |landscape| und |left=2cm| wirksam -% und |scale=0.9| und |twoside| sind unwirksam. -% \item[\onlypre mag] setzt den Vergrößerungswert (\cs{mag}) und modifiziert automatisch -% \cs{hoffset} und \cs{voffset} entsprechend der Vergrößerung. -% |mag=|\meta{Wert}. Beachten sie, dass \meta{Wert} ein ganzzahliger Wert sein sollte, -% wobei 1000 die Normalgröße ist. Ein Beispiel: |mag=1414| mit |a4paper| -% bietet eine erweiterte Druckgröße in |a3paper|, welches $1.414$ -% (=$\sqrt{2}$) mal größer als |a4paper| ist. Die Vergrößerung der Schriftart benötigt extra -% Speicherplatz. \textbf{Beachten sie, dass die Einstellung über jeder anderen -% Einstellung mit `true' Maßen stehen sollte, solchen Maßen wie |1.5truein|, |2truecm| -% und so weiter.} Lesen sie auch die |truedimen| Option. -% \item[\onlypre truedimen] verändert alle internen expliziten Maßwerte in -% \textit{true} Maße, z.\,B. wird |1in| zu |1truein|. -% Typischerweise wird diese Option zusammen mit der |mag| Option genutzt. Beachten sie, dass -% dies unwirksam gegenüber extern angegebenen Maßen ist. Ein Beispiel: -% Wenn sie ``\texttt{mag=1440, margin=10pt, truedimen}'' einstellen, dann sind die Ränder nicht -% `true' aber vergrößert. Wenn sie exakte Ränder wollen, dann sollten sie stattdessen wie folgt definieren -% ``\texttt{mag=1440, margin=10truept, truedimen}''. -% \item[\onlypre pass] deaktiviert alle geometry Optionen und Berechnungen, -% ausgenommen |verbose| und |showframe|. Es ist unabhängig von der Reihenfolge und kann -% für das Überprüfen des Seitenlayouts der Dokumentklasse, sonstiger Pakete -% und manuellen Einstellungen ohne \Gm\ genutzt werden. -% \item[\onlypre showframe] zeigt sichtbare Ränder um den Textbereich und die Seite -% und die Linien für den Kopf und den Fuß auf der ersten Seite. -% \item[\onlypre showcrop] druckt Schnittmarken auf jede Ecke des benutzerdefinierten -% Layoutbereichs. -% \end{Options} -% -% \section{Verarbeitungsoptionen}\label{sec:process} -% -% \subsection{Reihenfolge des Ladens}\label{sec:loadorder} -% -% Wenn es eine |geometry.cfg| gibt, irgendwo wo es \TeX{} finden kann, dann lädt \Gm\ diese -% zuerst. Ein Beispiel: In |geometry.cfg| können sie -% |\ExecuteOptions{a4paper}| schreiben, welches A4-Format als das Standardpapier angibt. -% Grundlegend können sie alle Optionen, die in \Gm\ definiert sind, mit -% |\ExecuteOptions{}| nutzen. -% -% Die Reihenfolge des Ladens in der Präambel ihres Dokuments ist wie folgt: -% \begin{enumerate} -% \item |geometry.cfg|, wenn sie existiert. -% \item Optionen, die mit |\documentclass[|\meta{Optionen}|]{...}| angegeben werden. -% \item Optionen, die mit |\usepackage[|\meta{Optionen}|]{geometry}| angegeben werden. -% \item Optionen, die mit |\geometry{|\meta{Optionen}|}| angegeben werden. Die jeweilige Option -% kann mehrfach aufgerufen werden. (Die |reset| Option wird alle Optionen, -% die in |\usepackage{geometry}| oder |\geometry| angegeben wurden, -% zurücksetzen.) -% \end{enumerate} -% -% \subsection{Reihenfolge der Optionen}\label{sec:optionorder} -% -% Die Spezifikation der \Gm\ Optionen ist unabhängig von der Reihenfolge -% und überschreibt die vorherigen gleichartigen Einstellungen. -% Ein Beispiel: -% \begin{center} -% |[left=2cm, right=3cm]| ist äquivalent zu -% |[right=3cm, left=2cm]|. -% \end{center} -% Der mehrfache Aufruf der Optionen überschreibt die jeweiligen vorherigen -% Einstellungen. Auch hier ein Beispiel: -% \begin{center} -% |[verbose=true, verbose=false]| das Ergebnis ist |verbose=false|. -% \end{center} -% |[hmargin={3cm,2cm}, left=1cm]| ist das Gleiche wie |hmargin={1cm,2cm}|, -% wobei der linke (oder innere) Rand durch |left=1cm| überschrieben wird. -% -% |reset| und |mag| sind Ausnahmen. -% Die |reset| Option entfernt alle geometry Optionen (ausgenommen |pass|) -% davor. Wenn sie -% \begin{quote} -% |\documentclass[landscape]{article}|\\ -% |\usepackage[margin=1cm,twoside]{geometry}|\\ -% |\geometry{a5paper, reset, left=2cm}| -% \end{quote} -% einstellen, dann werden |margin=1cm| (Rand), |twoside| und |a5paper| entfernt und -% ist gelegentlich äquivalent zu -% \begin{quote} -% |\documentclass[landscape]{article}|\\ -% |\usepackage[left=2cm]{geometry}| -% \end{quote} -% -% Die |mag| Option sollte vor jeder anderen Einstellungen mit -% `true' Länge, solche wie |left=1.5truecm|, |width=5truein| und so weiter, stehen. -% Die |\mag| Option kann vor dem Aufruf dieses Pakets stehen. -% -% \subsection{Priorität}\label{sec:priority} -% -% Es gibt verschiedene Wege die Maße des \gpart{Körpers} einzustellen: -% |scale|, |total|, |text| und |lines|. Das \Gm\ Paket gibt den konkreteren Spezifikationen -% eine höhere Priorität. Hier ist die Prioritätsregel -% für den \gpart{Textkörper}. -% \[\begin{array}{c} -% \textrm{Priorität:}\qquad\textrm{niedrig}\quad -% \longrightarrow\quad\textrm{hoch}\\[1em] -% \left\{\begin{array}{l}|hscale|\\|vscale|\\|scale| -% \end{array}\right\} < -% \left\{\begin{array}{l}|width|\\|height|\\|total| -% \end{array}\right\} < -% \left\{\begin{array}{l}|textwidth|\\|textheight| -% \\|text|\end{array}\right\} < |lines|. -% \end{array}\] -% Ein Beispiel: -% \begin{quote} -% |\usepackage[hscale=0.8, textwidth=7in, width=18cm]{geometry}| -% \end{quote} -% ist das Gleiche wie |\usepackage[textwidth=7in]{geometry}|. Ein weiteres Beispiel: -% \begin{quote} -% |\usepackage[lines=30, scale=0.8, text=7in]{geometry}| -% \end{quote} -% resultiert in \texttt{[lines=30, textwidth=7in]}. -% -% \subsection{Standards}\label{sec:defaults} -% -% Dieses Kapitel summiert die Standardeinstellungen für die automatische Vervollständigung, -% die später beschrieben wird. -% -% Das Standardverhältnis für den vertikalen Rand ist $2/3$, namentlich, -% \begin{equation} -% |top| : |bottom| = 2 : 3 \qquad\textit{Standard}. -% \end{equation} -% Was den horizontalen Rand betrifft, hängen die Standardwerte davon ab, -% ob das Dokument einseitig oder zweiseitig ist, -% \begin{equation} -% |left|\;(|inner|) : |right|\;(|outer|) -% = \left\{ \begin{array}{ll} -% 1 : 1 \qquad\textit{Standard für oneside},\\ -% 2 : 3 \qquad\textit{Standard für twoside}. -% \end{array}\right. -% \end{equation} -% Offensichtlich ist, dass der Standard für den horizontalen Rand für einseitig (oneside) `centering' ist. -% -% Das \Gm\ Paket besitzt folgende Standardeinstellungen für -% \textit{onesided (einseitige)} Dokumente: -% \begin{itemize}\setlength{\itemsep}{-.5\parsep} -% \item |scale=0.7| (\gpart{Textkörper} ist $0.7 \times \gpart{Papier}$) -% \item |marginratio={1:1, 2:3}| (1:1 für horizontal und 2:3 für vertikale Ränder) -% \item |ignoreall| (der Kopf, der Fuß, die Randnotizen sind ausgeschlossen, -% wenn die Größe des \gpart{Körpers (body)} berechnet wird.) -% \end{itemize} -% Für \textit{twosided (zweiseitige)} Dokumente mit der |twoside| Option, ist die Standardeinstellung -% die gleiche, wie bei \textit{onesided (einseitigen)}, ausgenommen, dass das horizontale Randverhältnis -% auf |2:3| gesetzt wird. -% -% Zusätzliche Optionen überschreiben die vorher angegebenen Maße.\\ -% -% \subsection{Autovervollständigung} \label{sec:rules} -% -% Abbildung~\ref{fig:specrule} zeigt schematisch, wie viele Spezifikationsmuster -% existieren und wie sie die Zweideutigkeiten der Spezifikationen lösen können. -% Jede Achse zeigt die Anzahl der Längen, -% die explizit für den Körper und die Ränder angegeben werden müssen. \Ss($m$,$b$) zeigt die -% Spezifikation mit einer Menge an Zahlen $(\gpart{Rand},\gpart{Körper})=(m,b)$. -% -% Ein Beispiel: Die Spezifikation |width=14cm, left=3cm| ist kategorisiert in -% \Ss(1,1), welches eine ad\-äquate Spezifikation ist. Wenn sie -% |right=4cm| hinzufügen, dann wird es \Ss(2,1) sein und überspezifiziert. -% Wenn nur |width=14cm| gegeben ist, dann ist es in \Ss(0,1) unterspezifiziert. -% -% Das \Gm\ Paket besitzt einen Autovervollständigungsmechanismus, der, wenn -% die Layoutparameter unter- oder überspezifiziert sind, -% die Unstimmigkeiten herausarbeitet und dann die Standards nutzt und andere -% Verhältnisse. Hier sind die Spezifikationen und die Vervollständigungsregeln. -% -% \begin{figure}[h] -% \centering -% {\unitlength=1pt -% \begin{picture}(400,150)(40,0) -% \put(1,49){\makebox(90,49)[r]{\large 0}} -% \put(1,1){\makebox(70,99)[r]{\large \gpart{Textkörper}}} -% \put(1,1){\makebox(90,49)[r]{\large 1}} -% \put(100,100){\makebox(99,20){\large 0}} -% \put(100,50){\framebox(99,49){}} -% \put(100,80){\makebox(99,15){\Ss(0,0)}} -% \put(100,50){\makebox(99,49){benutze |scale|}} -% {\linethickness{1pt}% -% \put(150,35){\line(0,1){30}} -% \put(150,35){\line(-1,3){4}} -% \put(150,35){\line(1,3){4}}} -% \put(100,0){\framebox(99,49){}} -% \put(100,2){\makebox(99,15){\Ss(0,1)}} -% \put(100,0){\makebox(99,49){nutze |marginratio|}} -% \put(200,120){\makebox(99,12){\large \gpart{Rand}}} -% \put(200,100){\makebox(99,20){\large 1}} -% \put(200,50){\framebox(99,49){benutze |scale|}} -% \put(200,55){\makebox(89,10)[r]{\scriptsize\shortstack[l]{wenn |ratio|\\angegeben}}} -% \put(200,2){\makebox(99,15){\Ss(1,1)}} -% {\linethickness{1pt}% -% \put(250,35){\line(0,1){30}} -% \put(250,35){\line(-1,3){4}} -% \put(250,35){\line(1,3){4}}} -% {\linethickness{1pt}% -% \put(225,25){\line(-1,0){35}} -% \put(225,25){\line(-3,-1){12}} -% \put(225,25){\line(-3,1){12}}} -% \put(200,80){\makebox(99,15){\Ss(1,0)}} -% \put(200,0){\framebox(99,49){\textcolor{red}{\textit{lösbar}}}} -% \put(300,100){\makebox(99,20){\large 2}} -% \put(300,80){\makebox(99,15){\Ss(2,0)}} -% \put(300,50){\framebox(99,49){\textcolor{red}{\textit{lösbar}}}} -% \put(300,0){\framebox(99,49){vergesse den |body|}} -% \put(300,2){\makebox(99,15){\Ss(2,1)}} -% {\linethickness{1pt}% -% \multiput(290,65)(5,0){6}{\line(1,0){3}} -% \put(320,65){\line(-3,-1){12}} -% \put(320,65){\line(-3,1){12}}} -% {\linethickness{1pt}% -% \put(350,65){\line(0,-1){30}} -% \put(350,65){\line(-1,-3){4}} -% \put(350,65){\line(1,-3){4}}} -% \end{picture}} -% \caption[Spezifikationen und Komplettierungsregeln]{% -% \begin{minipage}[t]{.7\textwidth}\raggedright\small -% Die Spezifikationen \Ss(0,0) zu \Ss(2,1) und die Komplettierungsregeln -% (Pfeile). Spalten- und Zeilennummern bezeichnen die Anzahl der explizit -% angegebenen Längen für den Rand und den Körper. \Ss($m$,$b$) bezeichnet eine -% Spezifikation mit einer Menge an Zahlen $(\gpart{Rand},\gpart{Körper})=(m,b)$. -% \end{minipage}} -% \label{fig:specrule} -% \end{figure} -% -% \begin{Spec} -% \item[\Ss(0,0)] -% Es ist nichts angegeben. Das \Gm\ Paket gibt für den \gpart{body (Körper)} den -% Standard |scale| ($=0.7$) vor. \\ Ein Beispiel: |width (Breite)| wird auf -% $|0.7|\times|layoutwidth|$ eingestellt. Beachten sie, dass standardmäßig die |layoutwidth| -% und |layoutheight| (Layoutbreite und -höhe) gleich der |\paperwidth| und |\paperheight| (Papierbreite und -höhe) -% sein werden. -% Demnach wird \Ss(0,0) zu \Ss(0,1). Siehe auch \Ss(0,1). -% \bigskip -% -% \item[\Ss(0,1)] -% Nur der \gpart{body} ist angegeben, wie z.\,B. |width=7in|, |lines=20|, -% |body={20cm,24cm}|, |scale=0.9| und so weiter. -% Dann setzt \Gm\ die Ränder mithilfe des Randverhältnisses. -% Falls kein Verhältnis angegeben ist, wird das Standardverhältnis genutzt. -% Das Standardverhältnis für das vertikale Randverhältnis ist wie folgt definiert: -% \begin{equation} -% |top| : |bottom| = 2 : 3 \qquad\textit{Standard}. -% \end{equation} -% Was das horizontale Verhältnis betrifft, hängt das Standardverhältnis davon ab, -% ob das Dokument einseitig oder zweiseitig ist. -% \begin{equation} -% |left|\;(|inner|) : |right|\;(|outer|) -% = \left\{ \begin{array}{ll} -% 1 : 1 \qquad\textit{Der Standard bei einseitig},\\ -% 2 : 3 \qquad\textit{Der Standard bei zweiseitig}. -% \end{array}\right. -% \end{equation} -% Wenn zum Beispiel auf A4-Papier die |height=22cm| angegeben ist, -% dann berechnet \Gm\ den |top (oberen)| Rand wie folgt: -% \begin{equation} -% \begin{array}{ll} -% |top| &= ( |layoutheight| - |height| ) \times 2/5 \\ -% &= (29.7-22)\times2/5 = 3.08\textrm{(cm)} -% \end{array} -% \end{equation} -% Demnach sind der |top (obere)| Rand und die |height (Höhe)| des Körpers bestimmt wurden, die -% Spezifikation für die Vertikale wird also zu \Ss(1,1) und -% alle Parameter können gelöst werden. -% \bigskip -% -% \item[\Ss(1,0)] -% Nur ein Rand ist angegeben, wie |bottom=2cm|, |left=1in|, -% |top=3cm| und so weiter. -% -% \begin{itemize} -% \item \textbf{Wenn das Randverhältnis \textit{nicht} angegeben ist}, dann nimmt \Gm\ -% den Standard für |scale| ($=0.7$) für den \gpart{body} an. -% Wenn beispielsweise |top=2.4cm| angegeben ist, dann setzt \Gm\ -% \begin{center} -% $|height|= |0.7|\times|layoutheight|$ -% ~~($=|0.7\paperheight|$ by default), -% \end{center} -% dann wird \Ss(1,0) zu \Ss(1,1), wobei der |bottom| mit -% $|layoutheight|-(|height|+|top|)$ berechnet wird und in 6.51\,cm auf A4-Papier resultiert, -% wenn die Layoutgröße gleich der Papiergröße ist. -% \medskip -% \item \textbf{Wenn das Randverhältnis angegeben ist}, wie -% |hmarginratio={1:2}|, |vratio={3:4}| und so weiter, -% dann setzt \Gm\ die anderen% Ränder mit dem gegebenen Randverhältnis. -% Falls z.\,B. eine Menge an Optionen ``|top=2.4cm,vratio={3:4}|'' spezifiziert wurde, -% dann setzt \Gm\ den |bottom| auf den berechneten Wert von |3.2cm| -% \begin{center} -% $|bottom|= |top|/3\times4 = 3.2\textrm{cm}$ -% \end{center} -% Demnach wird \Ss(1,0) zu \Ss(2,0). -% \end{itemize} -% -% Beachten sie, dass in der Version 4 oder früher das Berechnungsverfahren ein anderes war. -% Deshalb wird, wenn sie in Version 5 und 4 die gleichen Werte eingeben, -% das Ergebnis nicht gleich sein. -% Wenn nur |top=2.4cm| gegeben ist, -% dann bekommen sie in Version 4 oder früher |bottom=2.4cm|, aber sie werden -% |bottom=6.51cm| bei Version 5 erhalten. -% \bigskip -% -% \item[\Ss(2,1)] -% Der \gpart{body (Körper)} und zwei \gpart{margins (Ränder)} sind angegeben, wie z.\,B. -% |vdivide={1in,8in,1.5in}|, ``|left=3cm,width=13cm,right=4cm|'' und -% so weiter. Seit \Gm\ grundsätzlich die Priorität an die \gpart{margins} gibt, -% wenn die Maße überspezifiziert sind, vergisst \Gm\ den \gpart{body} und setzt diesen zurück. -% Ein Beispiel: Wenn sie -% \begin{center} -% |\usepackage[a4paper,left=3cm,width=13cm,right=4cm]{geometry}|, -% \end{center} -% angeben, dann wird die |width (Breite)| auf 14\,cm zurückgesetzt, da die Breite von A4-Papier 21\,cm -% ist. -% \end{Spec} -% -% \section{Verändern des Layouts innerhalb des Dokuments}\label{sec:midchange} -% -% Die Version 5 bietet die neuen Befehle \cs{newgeometry\{$\cdots$\}} und -% und \cs{restoregeometry} an, welche es ihnen erlauben, das Seitenlayout im Dokuments zu verändern. -% Nicht wie \cs{geometry} in der Präambel, -% ist \cs{newgeometry} nur nach |\begin{document}| verfügbar. -% Es setzt alle Optionen zurück, ausgenommen die, -% die sich auf die Papiergröße beziehen -- |landscape|, |portrait| -- und Papiergrößenoptionen -% (wie |papersize|, |paper=a4paper| und so weiter), die nicht -% durch \cs{newgeometry} geändert werden können. -% -% Der Befehl \cs{restoregeometry} sichert das in der Präambel (vor |\begin{document}|) angegebene Seitenlayout, -% welches mit |\usepackage{geometry}|, \cs{geometry} und deren Optionen erzeugt wurde. -% -% Beachten sie, dass beide, \cs{newgeometry} und \cs{restoregeometry}, ein -% |\clearpage| einfügen, da wo sie aufgerufen werden. -% -% Es folgt ein Beispiel für das Verändern des Layouts im Dokument. Das Layout L1 wird wie folgt angegeben: -% |hmargin=3cm| (|left (linker)| und |right (rechter)| Rand sind |3cm| -% lang), dies wird in L2 in |left=3cm|, |right=1cm| und -% |bottom=0.1cm| geändert. Das Layout L1 wird mit \cs{restoregeometry} -% gesichert. -% \begin{center} -% \begin{minipage}{.8\textwidth} -% |\usepackage[hmargin=3cm]{geometry}|\\ -% |\begin{document}|\\ -% \medskip -% \hspace{1cm}\fbox{Layout L1}\\ -% \medskip -% |\newgeometry{left=3cm,right=1cm,bottom=0.1cm}|\\ -% \medskip -% \hspace{1cm}\fbox{Layout L2 (neu)}\\ -% \medskip -% |\restoregeometry|\\ -% \medskip -% \hspace{1cm}\fbox{Layout L1 (wiederhergestellt)}\\ -% \medskip -% |\newgeometry{margin=1cm,includefoot}|\\ -% \medskip -% \hspace{1cm}\fbox{Layout L3 (neu)}\\ -% \medskip -% |\end{document}| -% \end{minipage}% -% \end{center} -% \begin{center} -% \centering\small -% {\unitlength=.8pt -% \begin{picture}(450,180)(0,0) -% \put(0,165){\makebox(95,12){(gesichert)}} -% \put(15,135){\framebox(65,10){\gpart{Kopf}}} -% \put(15,60){\framebox(65,70){\gpart{Textkörper}}} -% \put(15,45){\makebox(65,12){\gpart{Fuß}}} -% \put(15,45){\line(1,0){65}} -% \put(0,20){\framebox(95,140){}} -% \put(0,0){\makebox(95,20){L1}} -% \put(104,90){\circle*{4}} -% \put(110,90){\circle*{4}} -% \put(116,90){\circle*{4}} -% \put(125,165){\makebox(95,12){\cs{newgeometry}}} -% \put(140,135){\framebox(71,10){\gpart{Kopf}}} -% \put(140,33){\framebox(71,97){\gpart{Textkörper}}} -% \put(140,21){\makebox(71,12){\gpart{Fuß}}} -% \put(125,20){\framebox(95,140){}} -% \put(125,0){\makebox(95,20){L2 (neu)}} -% \put(229,90){\circle*{4}} -% \put(235,90){\circle*{4}} -% \put(241,90){\circle*{4}} -% \put(250,165){\makebox(95,12){\cs{restoregeometry}}} -% \put(265,135){\framebox(65,10){\gpart{Kopf}}} -% \put(265,60){\framebox(65,70){\gpart{Textkörper}}} -% \put(265,45){\makebox(65,12){\gpart{Fuß}}} -% \put(265,45){\line(1,0){65}} -% \put(250,20){\framebox(95,140){}} -% \put(250,0){\makebox(95,20){L1 (wiederhergestellt)}} -% \put(354,90){\circle*{4}} -% \put(360,90){\circle*{4}} -% \put(366,90){\circle*{4}} -% \put(375,165){\makebox(95,12){\cs{newgeometry}}} -% \put(383,41){\framebox(80,111){\gpart{Textkörper}}} -% \put(383,29){\makebox(80,12){\gpart{Fuß}}} -% \put(383,29){\line(1,0){80}} -% \put(375,20){\framebox(95,140){}} -% \put(375,0){\makebox(95,20){L3 (neu)}} -% \end{picture}} -% \end{center} -% -% Eine Menge von Befehlen |\savegeometry{|\meta{Name}|}| und -% |\loadgeometry{|\meta{Name}|}| ist nützlich, wenn sie mehrere -% verschiedene Layouts in ihrem Dokument nutzen wollen. -% Ein Beispiel: -% \begin{center} -% \begin{verbatim} -% \usepackage[hmargin=3cm]{geometry} -% \begin{document} -% L1 -% \newgeometry{left=3cm,right=1cm,bottom=0.1cm} -% \savegeometry{L2} -% L2 (neu, gespeichert) -% \restoregeometry -% L1 (wiederhergestellt) -% \newgeometry{margin=1cm,includefoot} -% L3 (neu) -% \loadgeometry{L2} -% L2 (geladen) -% \end{document} -% \end{verbatim} -% \end{center} -% -% \section{Beispiele} -% -% \begin{enumerate} -% \item Ein einseitiges Seitenlayout mit einem zentrierten Textbereich auf dem Papier:\\ -% Das sich anschließende Beispiel hat das gleiche Ergebnis, weil das horizontale Randverhältnis -% auf |1:1| gesetzt ist, wie es bei einseitigen Dokumenten der Standard ist. -% \begin{itemize} -% \item |centering| -% \item |marginratio=1:1| -% \item |vcentering| -% \end{itemize} -% -% \item Ein zweiseitiges Layout mit einem Versatz von 1\,cm für das Binden auf der Innenseite:\\ -% \begin{itemize} -% \item |twoside, bindingoffset=1cm| -% \end{itemize} -% In diesem Fall ist die |textwidth (Textbreite)| kürzer als der Standard bei zweiseitigen Dokumenten -% $0.7\times|1cm|$ ($=|0.7cm|$), weil die Standardbreite des -% \gpart{body (Körpers)} mit |scale=0.7| eingestellt ist, was bedeutet, -% $|width|=|0.7|\times|layoutwidth|$ ($=|0.7\paperwidth|$ standardmäßig). -% -% \item Ein Layout mit linkem, rechtem und oberem Rand (3\,cm, 2\,cm und -% 2.5\,in), mit einer Texthöhe von 40 Zeilen und der Einbeziehung des Kopfes -% und des Fußes auf der Seite in den \gpart{druckbaren Bereich}:\\ -% Die zwei Beispiele haben das gleiche Ergebnis. -% \begin{itemize} -% \item |left=3cm, right=2cm, lines=40, top=2.5in, includeheadfoot| -% \item |hmargin={3cm,2cm}, tmargin=2.5in, lines=40, includeheadfoot| -% \end{itemize} -% -% \item Ein Layout mit einer Höhe des \gpart{druckbaren Bereichs} von 10\,in, einem unteren Rand von -% 2\,cm und der Standardbreite:\\ Der obere Rand wird automatisch berechnet. -% Jede der unteren Lösungen erzeugt das gleiche Layout. -% \begin{itemize} -% \item |vdivide={*, 10in, 2cm}| -% \item |bmargin=2cm, height=10in| -% \item |bottom=2cm, textheight=10in| -% \end{itemize} -% Beachten sie, dass die Maße für \gpart{Kopf} and \gpart{Fuß} von der |Höhe| -% des \gpart{druckbaren Bereichs} ausgeschlossen sind. Ein zusätzliches |includefoot| sorgt dafür, -% dass der \cs{footskip (Fußbereich)} in die |totalheight (Gesamthöhe)| einbezogen wird. Deshalb ist in den unteren zwei -% Fällen die |textheight (Texthöhe)| im vorhergehenden Layout kürzer als in letzterem -% (mit exakt 10\,in) über dem \cs{footskip}. In anderen Worten, -% |height| = |textheight| + |footskip| falls |includefoot=true| ist, in diesem Falle. -% \begin{itemize} -% \item |bmargin=2cm, height=10in, includefoot| -% \item |bottom=2cm, textheight=10in, includefoot| -% \end{itemize} -% -% \item Ein Layout mit einer \glen{textwidth (Textbreite)} und \glen{textheight (Texthöhe)} von 90\% des -% Papiers und einem zentrierten \gpart{body}: -% Jede der unteren Lösungen erzeugt das gleiche Seitenlayout, sofern -% die |layoutwidth (Layoutbreite)| und die |layoutheight (Layouthöhe)| nicht geändert werden, also der Standard beibehalten -% wird. -% \begin{itemize} -% \item |scale=0.9, centering| -% \item |text={.9\paperwidth,.9\paperheight}, ratio=1:1| -% \item |width=.9\paperwidth, vmargin=.05\paperheight, marginratio=1:1| -% \item |hdivide={*,0.9\paperwidth,*}, vdivide={*,0.9\paperheight,*}| -% (für einseitige Dokumente) -% \item |margin={0.05\paperwidth,0.05\paperheight}| -% \end{itemize} -% Sie können ein |heightrounded| hinzufügen, um eine ``underfull vbox warning'' (Warnmeldung) wie -% \begin{quote}\small -% |Underfull \vbox (badness 10000) has occurred while \output is active|. -% \end{quote} -% zu vermeiden. -% Lesen sie auch Kapitel~\ref{sec:body} für eine detaillierte Beschreibung zu |heightrounded|. -% -% \item Ein Layout, bei dem die Breite für die Randnotizen auf 3\,cm eingestellt ist und in -% die Breite des \gpart{druckbaren Bereichs} einbezogen ist:\\ Die folgenden Beispiele erzeugen das Gleiche. -% \begin{itemize} -% \item |marginparwidth=3cm, includemp| -% \item |marginpar=3cm, ignoremp=false| -% \end{itemize} -% -% \item Ein Layout, bei dem der \gpart{body} das ganze Papier (A5-Papier im |landscape| Modus) einnimmt:\\ -% Die folgenden Beispiele sind gleich. -% \begin{itemize} -% \item |a5paper, landscape, scale=1.0| -% \item |landscape=TRUE, paper=a5paper, margin=0pt| -% \end{itemize} -% -% \item Ein Bildschirmgrößenlayout, verwendbar für Präsentationen mit dem PC oder dem Beamer: -% \begin{verbatim} -% \documentclass{slide} -% \usepackage[screen,margin=0.8in]{geometry} -% ... -% \begin{slide} -% ... -% \end{slide}\end{verbatim} -% \item Ein Layout mit vergrößerter Schrift und Zwischenräumen, von A4 auf A3:\\ -% Im unteren Fall ist die sich ergebende Papiergröße A3. -% \begin{itemize} -% \item |a4paper, mag=1414|. -% \end{itemize} -% Wenn sie ein Layout mit doppelt so großer Schriftgröße, aber ohne das -% Verändern der Papiergröße wollen, dann tippen sie -% \begin{itemize} -% \item |letterpaper, mag=2000, truedimen|. -% \end{itemize} -% Sie können die |dvips| Option hinzufügen, das ist nützlich, um eine Vorschau der eigenen -% Papiergröße zu betrachten, die durch |dviout| oder |xdvi| erzeugt wird. -% -% \item Verändern des Layouts auf der ersten Seite und Beibehalten der anderen Einstellungen -% vor dem Laden von \Gm:\\ Benutzen sie die |pass| Option, |\newgeometry| -% und |\restoregeometry|. -% \begin{verbatim} -% \documentclass{book} -% \usepackage[pass]{geometry} -% % 'pass' vernachlässigt das Paketlayout, -% % so wird das originale 'book' Layout gespeichert. -% \begin{document} -% \newgeometry{margin=1cm}% Verändert die Maße der ersten Seite. -% Seite 1 -% \restoregeometry % stellt das 'book' Layout wieder her. -% Seite 2 und folgende -% \end{document}\end{verbatim} -% -% \item Ein komplexes Seitenlayout: -% \begin{verbatim} -% \usepackage[a5paper, landscape, twocolumn, twoside, -% left=2cm, hmarginratio=2:1, includemp, marginparwidth=43pt, -% bottom=1cm, foot=.7cm, includefoot, textheight=11cm, heightrounded, -% columnsep=1cm, dvips, verbose]{geometry}\end{verbatim} -% Probieren sie das Layoutsetzen selbst und überprüfen sie, wie das Ergebnis ist. |:-)| -% \end{enumerate} -% -% \section{Bekannte Probleme} -% \begin{itemize} -% \item Mit |mag| $\neq 1000$ und |truedimen|, -% |paperwidth| und |paperheight| ist die Anzeige im verbose-Modus verschieden von der -% wirklichen Größe der resultierenden PDF. Die PDF ist aber korrekt. -% -% \item Mit |mag| $\neq 1000$, \textit{no} |truedimen| -% und \textsf{hyperref} sollte \textsf{hyperref} vor \Gm\ geladen werden. -% Andernfalls wird die PDF-Größe fehlerhaft. -% -% \item Mit dem \textsf{crop} Paket und |mag| $\neq 1000$ -% arbeitet die |center|-Option von \textsf{crop} nicht gut. -% -% \end{itemize} -% -% \section{Danksagungen} -% Der Autor würdigt hiermit die hilfreichen Vorschläge und Kommentare Vieler (in alphabetischer Reihenfolge ihrer -% Familennamen): -% Jean-Bernard Addor, -% Frank Bennett, -% Alexis Dimitriadis, -% Friedrich Flender, -% Adrian Heathcote, -% Stephan Hennig, -% Morten H\o{}gholm, -% Jonathan Kew, -% James Kilfiger, -% Yusuke Kuroki, -% Jean-Marc Lasgouttes, -% Wlodzimierz Macewicz, -% Frank Mittelbach, -% Eckhard Neber, -% Rolf Niepraschk, -% Hans Fr.~Nordhaug, -% Heiko Oberdiek, -% Keith Reckdahl, -% Peter Riocreux, -% Will Robertson, -% Pablo Rodriguez, -% Nico Schlöemer, -% Perry C.~Stearns, -% Frank Stengel, -% Plamen Tanovski, -% Petr Uher, -% Piet van Oostrum, -% Vladimir Volovich, -% Michael Vulis. -% -% \StopEventually{% -% } -% -% \newgeometry{hmargin={4.8cm,1.2cm}, vmargin={1cm,1cm}, includeheadfoot, marginpar=3.8cm} -% \section{Implementierung} -% \begin{macrocode} -%<*package> -% \end{macrocode} -% This package requires the following packages: -% \textsf{keyval}, \textsf{ifpdf}, \textsf{ifvtex} and \textsf{ifxetex}. -% \begin{macrocode} -\RequirePackage{keyval}% -\RequirePackage{ifpdf}% -\RequirePackage{ifvtex}% -\RequirePackage{ifxetex}% -% \end{macrocode} -% -% Internal switches are declared here. -% \begin{macrocode} -\newif\ifGm@verbose -\newif\ifGm@landscape -\newif\ifGm@swap@papersize -\newif\ifGm@includehead -\newif\ifGm@includefoot -\newif\ifGm@includemp -\newif\ifGm@hbody -\newif\ifGm@vbody -\newif\ifGm@heightrounded -\newif\ifGm@showframe -\newif\ifGm@showcrop -\newif\ifGm@pass -\newif\ifGm@resetpaper -\newif\ifGm@layout -\newif\ifGm@newgm -% \end{macrocode} -% \begin{macro}{\Gm@cnth} -% \begin{macro}{\Gm@cntv} -% The counters for horizontal and vertical partitioning patterns. -% \begin{macrocode} -\newcount\Gm@cnth -\newcount\Gm@cntv -% \end{macrocode} -% \end{macro}\end{macro} -% \begin{macro}{\c@Gm@tempcnt} -% The counter is used to set number with \textsf{calc}. -% \begin{macrocode} -\newcount\c@Gm@tempcnt -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@bindingoffset} -% The binding offset for the inner margin. -% \begin{macrocode} -\newdimen\Gm@bindingoffset -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@wd@mp} -% \begin{macro}{\Gm@odd@mp} -% \begin{macro}{\Gm@even@mp} -% Correction lengths for \cs{textwidth}, \cs{oddsidemargin} and -% \cs{evensidemargin} in |includemp| mode. -% \begin{macrocode} -\newdimen\Gm@wd@mp -\newdimen\Gm@odd@mp -\newdimen\Gm@even@mp -% \end{macrocode} -% \end{macro}\end{macro}\end{macro} -% \begin{macro}{\Gm@layoutwidth} -% \begin{macro}{\Gm@layoutheight} -% \begin{macro}{\Gm@layouthoffset} -% \begin{macro}{\Gm@layoutvoffset} -% The dimensions for the layout area. -% \begin{macrocode} -\newdimen\Gm@layoutwidth -\newdimen\Gm@layoutheight -\newdimen\Gm@layouthoffset -\newdimen\Gm@layoutvoffset -% \end{macrocode} -% \end{macro}\end{macro}\end{macro}\end{macro} -% \begin{macro}{\Gm@dimlist} -% The token in which \LaTeX{} native dimensions can be stored. -% \begin{macrocode} -\newtoks\Gm@dimlist -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@warning} -% The macro to print warning messages. -% \begin{macrocode} -\def\Gm@warning#1{\PackageWarningNoLine{geometry}{#1}}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\ifGm@preamble} -% The macro executes the option given as an argument -% only if it's specified in the preamble, as the options of -% |\usepackage| and/or the argument of |\geometry|. Otherwise, -% the macro would print the warning message and ignores -% the option setting. -% \begin{macrocode} -\def\ifGm@preamble#1{% - \ifGm@newgm - \Gm@warning{`#1': not available in `\string\newgeometry'; skipped}% - \else - \expandafter\@firstofone - \fi}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@Dhratio} -% \begin{macro}{\Gm@Dhratiotwo} -% \begin{macro}{\Gm@Dvratio} -% The default values for the horizontal and vertical -% \textsl{marginalratio} are defined. \cs{Gm@Dhratiotwo} denotes the -% default value of horizontal \textsl{marginratio} for twoside -% page layout with left and right margins swapped on verso pages, -% which is set by |twoside|. -% \begin{macrocode} -\def\Gm@Dhratio{1:1}% = left:right default for oneside -\def\Gm@Dhratiotwo{2:3}% = inner:outer default for twoside. -\def\Gm@Dvratio{2:3}% = top:bottom default -% \end{macrocode} -% \end{macro}\end{macro}\end{macro} -% \begin{macro}{\Gm@Dhscale} -% \begin{macro}{\Gm@Dvscale} -% The default values for the horizontal and vertical \textsl{scale} -% are defined with $0.7$. -% \begin{macrocode} -\def\Gm@Dhscale{0.7}% -\def\Gm@Dvscale{0.7}% -% \end{macrocode} -% \end{macro}\end{macro} -% \begin{macro}{\Gm@dvips}% -% \begin{macro}{\Gm@dvipdfm}% -% \begin{macro}{\Gm@pdftex}% -% \begin{macro}{\Gm@xetex}% -% \begin{macro}{\Gm@vtex}% -% The driver names. -% \begin{macrocode} -\def\Gm@dvips{dvips}% -\def\Gm@dvipdfm{dvipdfm}% -\def\Gm@pdftex{pdftex}% -\def\Gm@xetex{xetex}% -\def\Gm@vtex{vtex}% -% \end{macrocode} -% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro} -% \begin{macro}{\Gm@true}% -% \begin{macro}{\Gm@false}% -% The macros for |true| and |false|. -% \begin{macrocode} -\def\Gm@true{true}% -\def\Gm@false{false}% -% \end{macrocode} -% \end{macro}\end{macro} -% \begin{macro}{\Gm@orgpw} -% \begin{macro}{\Gm@orgph} -% These macros keep original paper (media) size intact. -% \begin{macrocode} -\edef\Gm@orgpw{\the\paperwidth}% -\edef\Gm@orgph{\the\paperheight}% -% \end{macrocode} -% \end{macro}\end{macro} -% \begin{macro}{\Gm@savelength} -% The macro saves the specified length to |\Gm@restore|. -% \begin{macrocode} -\def\Gm@savelength#1{% - \g@addto@macro\Gm@restore{\expandafter\noexpand\expandafter\csname - #1\endcsname\expandafter=\expandafter\the\csname #1\endcsname\relax}}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@saveboolean} -% The macro saves the specified boolean to |\Gm@restore|. -% \begin{macrocode} -\def\Gm@saveboolean#1{% - \csname if#1\endcsname - \g@addto@macro\Gm@restore{\expandafter\noexpand\csname #1true\endcsname}% - \else - \g@addto@macro\Gm@restore{\expandafter\noexpand\csname #1false\endcsname}% - \fi}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@restore} -% The initialization for |\Gm@restore|. -% \begin{macrocode} -\def\Gm@restore{}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@save} -% The definition of the macro saving the real lengths -% \LaTeX\ options. -% \begin{macrocode} -\def\Gm@save{% - \Gm@savelength{paperwidth}% - \Gm@savelength{paperheight}% - \Gm@savelength{textwidth}% - \Gm@savelength{textheight}% - \Gm@savelength{evensidemargin}% - \Gm@savelength{oddsidemargin}% - \Gm@savelength{topmargin}% - \Gm@savelength{headheight}% - \Gm@savelength{headsep}% - \Gm@savelength{topskip}% - \Gm@savelength{footskip}% - \Gm@savelength{baselineskip}% - \Gm@savelength{marginparwidth}% - \Gm@savelength{marginparsep}% - \Gm@savelength{columnsep}% - \Gm@savelength{hoffset}% - \Gm@savelength{voffset} - \Gm@savelength{Gm@layoutwidth}% - \Gm@savelength{Gm@layoutheight}% - \Gm@savelength{Gm@layouthoffset}% - \Gm@savelength{Gm@layoutvoffset}% - \Gm@saveboolean{@twocolumn}% - \Gm@saveboolean{@twoside}% - \Gm@saveboolean{@mparswitch}% - \Gm@saveboolean{@reversemargin}}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@initnewgm} -% The macro initializes the parameters for layout -% in |\newgeometry|. -% \begin{macrocode} -\def\Gm@initnewgm{% - \Gm@passfalse - \Gm@swap@papersizefalse - \Gm@dimlist={} - \Gm@hbodyfalse - \Gm@vbodyfalse - \Gm@heightroundedfalse - \Gm@includeheadfalse - \Gm@includefootfalse - \Gm@includempfalse - \let\Gm@width\@undefined - \let\Gm@height\@undefined - \let\Gm@textwidth\@undefined - \let\Gm@textheight\@undefined - \let\Gm@lines\@undefined - \let\Gm@hscale\@undefined - \let\Gm@vscale\@undefined - \let\Gm@hmarginratio\@undefined - \let\Gm@vmarginratio\@undefined - \let\Gm@lmargin\@undefined - \let\Gm@rmargin\@undefined - \let\Gm@tmargin\@undefined - \let\Gm@bmargin\@undefined - \Gm@layoutfalse - \Gm@layouthoffset\z@ - \Gm@layoutvoffset\z@ - \Gm@bindingoffset\z@}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@initall} -% This initialization is called as soon as the package is load -% It's also called as soon as |reset| option is specified. -% \begin{macrocode} -\def\Gm@initall{% - \let\Gm@driver\@empty - \let\Gm@truedimen\@empty - \let\Gm@paper\@undefined - \Gm@resetpaperfalse - \Gm@landscapefalse - \Gm@verbosefalse - \Gm@showframefalse - \Gm@showcropfalse - \Gm@newgmfalse - \Gm@initnewgm}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@setdriver} -% The macro sets the specified driver. -% \begin{macrocode} -\def\Gm@setdriver#1{% - \expandafter\let\expandafter\Gm@driver\csname Gm@#1\endcsname}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@unsetdriver} -% The macro unsets the specified driver if it has been set. -% \begin{macrocode} -\def\Gm@unsetdriver#1{% - \expandafter\ifx\csname Gm@#1\endcsname\Gm@driver\let\Gm@driver\@empty\fi}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@setbool} -% \begin{macro}{\Gm@setboolrev} -% The macros for boolean option processing. -% \begin{macrocode} -\def\Gm@setbool{\@dblarg\Gm@@setbool}% -\def\Gm@setboolrev{\@dblarg\Gm@@setboolrev}% -\def\Gm@@setbool[#1]#2#3{\Gm@doif{#1}{#3}{\csname Gm@#2\Gm@bool\endcsname}}% -\def\Gm@@setboolrev[#1]#2#3{\Gm@doifelse{#1}{#3}% - {\csname Gm@#2\Gm@false\endcsname}{\csname Gm@#2\Gm@true\endcsname}}% -% \end{macrocode} -% \end{macro}\end{macro} -% \begin{macro}{\Gm@doif} -% \begin{macro}{\Gm@doifelse} -% \cs{Gm@doif} excutes the third argument |#3| using a boolean value -% |#2| of a option |#1|. \cs{Gm@doifelse} executes the third -% argument |#3| if a boolean option |#1| with its value |#2| |true|, -% and executes the fourth argument |#4| if |false|. -% \begin{macrocode} -\def\Gm@doif#1#2#3{% - \lowercase{\def\Gm@bool{#2}}% - \ifx\Gm@bool\@empty - \let\Gm@bool\Gm@true - \fi - \ifx\Gm@bool\Gm@true - \else - \ifx\Gm@bool\Gm@false - \else - \let\Gm@bool\relax - \fi - \fi - \ifx\Gm@bool\relax - \Gm@warning{`#1' should be set to `true' or `false'}% - \else - #3 - \fi}% -\def\Gm@doifelse#1#2#3#4{% - \Gm@doif{#1}{#2}{\ifx\Gm@bool\Gm@true #3\else #4\fi}}% -% \end{macrocode} -% \end{macro}\end{macro} -% \begin{macro}{\Gm@reverse} -% The macro reverses a bool value. -% \begin{macrocode} -\def\Gm@reverse#1{% - \csname ifGm@#1\endcsname - \csname Gm@#1false\endcsname\else\csname Gm@#1true\endcsname\fi}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@defbylen} -% \begin{macro}{\Gm@defbycnt} -% Macros \cs{Gm@defbylen} and \cs{Gm@defbycnt} can be used to define -% \cs{Gm@xxxx} variables by length and counter respectively -% with \textsf{calc} package. -% \begin{macrocode} -\def\Gm@defbylen#1#2{% - \begingroup\setlength\@tempdima{#2}% - \expandafter\xdef\csname Gm@#1\endcsname{\the\@tempdima}\endgroup}% -\def\Gm@defbycnt#1#2{% - \begingroup\setcounter{Gm@tempcnt}{#2}% - \expandafter\xdef\csname Gm@#1\endcsname{\the\value{Gm@tempcnt}}\endgroup}% -% \end{macrocode} -% \end{macro}\end{macro} -% \begin{macro}{\Gm@set@ratio} -% The macro parses the value of options specifying marginal ratios, -% which is used in \cs{Gm@setbyratio} macro. -% \begin{macrocode} -\def\Gm@sep@ratio#1:#2{\@tempcnta=#1\@tempcntb=#2}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@setbyratio} -% The macro determines the dimension specified by |#4| calculating -% |#3|$\times a / b$, where $a$ and $b$ are given by \cs{Gm@mratio} -% with $a:b$ value. If |#1| in brackets is |b|, $a$ and $b$ are swapped. -% The second argument with |h| or |v| denoting horizontal or vertical -% is not used in this macro. -% \begin{macrocode} -\def\Gm@setbyratio[#1]#2#3#4{% determine #4 by ratio - \expandafter\Gm@sep@ratio\Gm@mratio\relax - \if#1b - \edef\@@tempa{\the\@tempcnta}% - \@tempcnta=\@tempcntb - \@tempcntb=\@@tempa\relax - \fi - \expandafter\setlength\expandafter\@tempdimb\expandafter - {\csname Gm@#3\endcsname}% - \ifnum\@tempcntb>\z@ - \multiply\@tempdimb\@tempcnta - \divide\@tempdimb\@tempcntb - \fi - \expandafter\edef\csname Gm@#4\endcsname{\the\@tempdimb}}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@detiv} -% This macro determines the fourth length(|#4|) from |#1|(\glen{layoutwidth} -% or \glen{layoutheight}), |#2| and |#3|. It is used in -% \cs{Gm@detall} macro. -% \begin{macrocode} -\def\Gm@detiv#1#2#3#4{% determine #4. - \expandafter\setlength\expandafter\@tempdima\expandafter - {\csname Gm@layout#1\endcsname}% - \expandafter\setlength\expandafter\@tempdimb\expandafter - {\csname Gm@#2\endcsname}% - \addtolength\@tempdima{-\@tempdimb}% - \expandafter\setlength\expandafter\@tempdimb\expandafter - {\csname Gm@#3\endcsname}% - \addtolength\@tempdima{-\@tempdimb}% - \ifdim\@tempdima<\z@ - \Gm@warning{`#4' results in NEGATIVE (\the\@tempdima).% - ^^J\@spaces `#2' or `#3' should be shortened in length}% - \fi - \expandafter\edef\csname Gm@#4\endcsname{\the\@tempdima}}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@detiiandiii} -% This macro determines |#2| and |#3| from |#1| with the first argument -% (|#1|) can be |width| or |height|, which is expanded into dimensions -% of paper and total body. It is used in \cs{Gm@detall} macro. -% \begin{macrocode} -\def\Gm@detiiandiii#1#2#3{% determine #2 and #3. - \expandafter\setlength\expandafter\@tempdima\expandafter - {\csname Gm@layout#1\endcsname}% - \expandafter\setlength\expandafter\@tempdimb\expandafter - {\csname Gm@#1\endcsname}% - \addtolength\@tempdima{-\@tempdimb}% - \ifdim\@tempdima<\z@ - \Gm@warning{`#2' and `#3' result in NEGATIVE (\the\@tempdima).% - ^^J\@spaces `#1' should be shortened in length}% - \fi - \ifx\Gm@mratio\@undefined - \expandafter\Gm@sep@ratio\Gm@Dmratio\relax - \else - \expandafter\Gm@sep@ratio\Gm@mratio\relax - \ifnum\@tempcntb>\z@\else - \Gm@warning{margin ratio a:b should be non-zero; default used}% - \expandafter\Gm@sep@ratio\Gm@Dmratio\relax - \fi - \fi - \@tempdimb=\@tempdima - \advance\@tempcntb\@tempcnta - \divide\@tempdima\@tempcntb - \multiply\@tempdima\@tempcnta - \advance\@tempdimb-\@tempdima - \expandafter\edef\csname Gm@#2\endcsname{\the\@tempdima}% - \expandafter\edef\csname Gm@#3\endcsname{\the\@tempdimb}}% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\Gm@detall} -% This macro determines partition of each direction. -% The first argument (|#1|) should be |h| or |v|, the second (|#2|) -% |width| or |height|, the third (|#3|) |lmargin| or |top|, and -% the last (|#4|) |rmargin| or |bottom|. -% \begin{macrocode} -\def\Gm@detall#1#2#3#4{% - \@tempcnta\z@ - \if#1h - \let\Gm@mratio\Gm@hmarginratio - \edef\Gm@Dmratio{\if@twoside\Gm@Dhratiotwo\else\Gm@Dhratio\fi}% - \else - \let\Gm@mratio\Gm@vmarginratio - \edef\Gm@Dmratio{\Gm@Dvratio}% - \fi -% \end{macrocode} -% \cs{@tempcnta} is treated as a three-digit binary value with -% top, middle and bottom denoted |left|(|top|), |width|(|height|) -% and |right|(|bottom|) margins user specified respectively. -% \begin{macrocode} - \if#1h - \ifx\Gm@lmargin\@undefined\else\advance\@tempcnta4\relax\fi - \ifGm@hbody\advance\@tempcnta2\relax\fi - \ifx\Gm@rmargin\@undefined\else\advance\@tempcnta1\relax\fi - \Gm@cnth\@tempcnta - \else - \ifx\Gm@tmargin\@undefined\else\advance\@tempcnta4\relax\fi - \ifGm@vbody\advance\@tempcnta2\relax\fi - \ifx\Gm@bmargin\@undefined\else\advance\@tempcnta1\relax\fi - \Gm@cntv\@tempcnta - \fi -% \end{macrocode} -% Case the value is |000| (=0) with nothing fixed (default): -% \begin{macrocode} - \ifcase\@tempcnta - \if#1h - \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}% - \else - \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}% - \fi - \Gm@detiiandiii{#2}{#3}{#4}% -% \end{macrocode} -% Case |001| (=1) with |right|(|bottom|) fixed: -% \begin{macrocode} - \or - \ifx\Gm@mratio\@undefined - \if#1h - \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}% - \else - \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}% - \fi - \setlength\@tempdimc{\@nameuse{Gm@#4}}% - \Gm@detiiandiii{#2}{#3}{#4}% - \expandafter\let\csname Gm@#2\endcsname\@undefined - \Gm@defbylen{#4}{\@tempdimc}% - \else - \Gm@setbyratio[f]{#1}{#4}{#3}% - \fi - \Gm@detiv{#2}{#3}{#4}{#2}% -% \end{macrocode} -% Case |010| (=2) with |width|(|height|) fixed: -% \begin{macrocode} - \or\Gm@detiiandiii{#2}{#3}{#4}% -% \end{macrocode} -% Case |011| (=3) with both |width|(|height|) and |right|(|bottom|) fixed: -% \begin{macrocode} - \or\Gm@detiv{#2}{#2}{#4}{#3}% -% \end{macrocode} -% Case |100| (=4) with |left|(|top|) fixed: -% \begin{macrocode} - \or - \ifx\Gm@mratio\@undefined - \if#1h - \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}% - \else - \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}% - \fi - \setlength\@tempdimc{\@nameuse{Gm@#3}}% - \Gm@detiiandiii{#2}{#4}{#3}% - \expandafter\let\csname Gm@#2\endcsname\@undefined - \Gm@defbylen{#3}{\@tempdimc}% - \else - \Gm@setbyratio[b]{#1}{#3}{#4}% - \fi - \Gm@detiv{#2}{#3}{#4}{#2}% -% \end{macrocode} -% Case |101| (=5) with both |left|(|top|) and |right|(|bottom|) fixed: -% \begin{macrocode} - \or\Gm@detiv{#2}{#3}{#4}{#2}% -% \end{macrocode} -% Case |110| (=6) with both |left|(|top|) and |width|(|height|) fixed: -% \begin{macrocode} - \or\Gm@detiv{#2}{#2}{#3}{#4}% -% \end{macrocode} -% Case |111| (=7) with all fixed though it is over-specified: -% \begin{macrocode} - \or\Gm@warning{Over-specification in `#1'-direction.% - ^^J\@spaces `#2' (\@nameuse{Gm@#2}) is ignored}% - \Gm@detiv{#2}{#3}{#4}{#2}% - \else\fi}% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\Gm@clean} -% The macro for setting unspecified dimensions to be \cs{@undefined}. -% This is used by \cs{geometry} macro. -% \begin{macrocode} -\def\Gm@clean{% - \ifnum\Gm@cnth<4\let\Gm@lmargin\@undefined\fi - \ifodd\Gm@cnth\else\let\Gm@rmargin\@undefined\fi - \ifnum\Gm@cntv<4\let\Gm@tmargin\@undefined\fi - \ifodd\Gm@cntv\else\let\Gm@bmargin\@undefined\fi - \ifGm@hbody\else - \let\Gm@hscale\@undefined - \let\Gm@width\@undefined - \let\Gm@textwidth\@undefined - \fi - \ifGm@vbody\else - \let\Gm@vscale\@undefined - \let\Gm@height\@undefined - \let\Gm@textheight\@undefined - \fi - }% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\Gm@parse@divide} -% The macro parses (|h|,|v|)|divide| options. -% \begin{macrocode} -\def\Gm@parse@divide#1#2#3#4{% - \def\Gm@star{*}% - \@tempcnta\z@ - \@for\Gm@tmp:=#1\do{% - \expandafter\KV@@sp@def\expandafter\Gm@frag\expandafter{\Gm@tmp}% - \edef\Gm@value{\Gm@frag}% - \ifcase\@tempcnta\relax\edef\Gm@key{#2}% - \or\edef\Gm@key{#3}% - \else\edef\Gm@key{#4}% - \fi - \@nameuse{Gm@set\Gm@key false}% - \ifx\empty\Gm@value\else - \ifx\Gm@star\Gm@value\else - \setkeys{Gm}{\Gm@key=\Gm@value}% - \fi\fi - \advance\@tempcnta\@ne}% - \let\Gm@star\relax}% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\Gm@branch} -% The macro splits a value into the same two values. -% \begin{macrocode} -\def\Gm@branch#1#2#3{% - \@tempcnta\z@ - \@for\Gm@tmp:=#1\do{% - \KV@@sp@def\Gm@frag{\Gm@tmp}% - \edef\Gm@value{\Gm@frag}% - \ifcase\@tempcnta\relax% cnta == 0 - \setkeys{Gm}{#2=\Gm@value}% - \or% cnta == 1 - \setkeys{Gm}{#3=\Gm@value}% - \else\fi - \advance\@tempcnta\@ne}% - \ifnum\@tempcnta=\@ne - \setkeys{Gm}{#3=\Gm@value}% - \fi}% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\Gm@magtooffset} -% This macro is used to adjust offsets by \cs{mag}. -% \begin{macrocode} -\def\Gm@magtooffset{% - \@tempdima=\mag\Gm@truedimen sp% - \@tempdimb=1\Gm@truedimen in% - \divide\@tempdimb\@tempdima - \multiply\@tempdimb\@m - \addtolength{\hoffset}{1\Gm@truedimen in}% - \addtolength{\voffset}{1\Gm@truedimen in}% - \addtolength{\hoffset}{-\the\@tempdimb}% - \addtolength{\voffset}{-\the\@tempdimb}}% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\Gm@setlength} -% This macro stores \LaTeX{} native dimensions, which are stored and -% set afterwards. -% \begin{macrocode} -\def\Gm@setlength#1#2{% - \let\Gm@len=\relax\let\Gm@td=\relax - \edef\addtolist{\noexpand\Gm@dimlist=% - {\the\Gm@dimlist \Gm@len{#1}{#2}}}\addtolist}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@expandlengths} -% This macro processes \cs{Gm@dimlist}. -% \begin{macrocode} -\def\Gm@expandlengths{% - \def\Gm@td{\Gm@truedimen}% - \def\Gm@len##1##2{\setlength{##1}{##2}}% - \the\Gm@dimlist}% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\Gm@setsize} -% The macro sets |paperwidth| and |paperheight| dimensions -% using \cs{Gm@setlength} macro. -% \begin{macrocode} -\def\Gm@setsize#1(#2,#3)#4{% - \let\Gm@td\relax - \expandafter\Gm@setlength\csname #1width\endcsname{#2\Gm@td #4}% - \expandafter\Gm@setlength\csname #1height\endcsname{#3\Gm@td #4}% - \ifGm@landscape\Gm@swap@papersizetrue\else\Gm@swap@papersizefalse\fi}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@setpaper@ifpre} -% The macro changes the paper size. -% \begin{macrocode} -\def\Gm@setpaper@ifpre#1{% - \ifGm@preamble{#1}{\def\Gm@paper{#1}\@nameuse{Gm@#1}{paper}}}% -% \end{macrocode} -% \end{macro} -% Various paper size are defined here. -% \begin{macrocode} -\@namedef{Gm@a0paper}#1{\Gm@setsize{#1}(841,1189){mm}}% ISO A0 -\@namedef{Gm@a1paper}#1{\Gm@setsize{#1}(594,841){mm}}% ISO A1 -\@namedef{Gm@a2paper}#1{\Gm@setsize{#1}(420,594){mm}}% ISO A2 -\@namedef{Gm@a3paper}#1{\Gm@setsize{#1}(297,420){mm}}% ISO A3 -\@namedef{Gm@a4paper}#1{\Gm@setsize{#1}(210,297){mm}}% ISO A4 -\@namedef{Gm@a5paper}#1{\Gm@setsize{#1}(148,210){mm}}% ISO A5 -\@namedef{Gm@a6paper}#1{\Gm@setsize{#1}(105,148){mm}}% ISO A6 -\@namedef{Gm@b0paper}#1{\Gm@setsize{#1}(1000,1414){mm}}% ISO B0 -\@namedef{Gm@b1paper}#1{\Gm@setsize{#1}(707,1000){mm}}% ISO B1 -\@namedef{Gm@b2paper}#1{\Gm@setsize{#1}(500,707){mm}}% ISO B2 -\@namedef{Gm@b3paper}#1{\Gm@setsize{#1}(353,500){mm}}% ISO B3 -\@namedef{Gm@b4paper}#1{\Gm@setsize{#1}(250,353){mm}}% ISO B4 -\@namedef{Gm@b5paper}#1{\Gm@setsize{#1}(176,250){mm}}% ISO B5 -\@namedef{Gm@b6paper}#1{\Gm@setsize{#1}(125,176){mm}}% ISO B6 -\@namedef{Gm@c0paper}#1{\Gm@setsize{#1}(917,1297){mm}}% ISO C0 -\@namedef{Gm@c1paper}#1{\Gm@setsize{#1}(648,917){mm}}% ISO C1 -\@namedef{Gm@c2paper}#1{\Gm@setsize{#1}(458,648){mm}}% ISO C2 -\@namedef{Gm@c3paper}#1{\Gm@setsize{#1}(324,458){mm}}% ISO C3 -\@namedef{Gm@c4paper}#1{\Gm@setsize{#1}(229,324){mm}}% ISO C4 -\@namedef{Gm@c5paper}#1{\Gm@setsize{#1}(162,229){mm}}% ISO C5 -\@namedef{Gm@c6paper}#1{\Gm@setsize{#1}(114,162){mm}}% ISO C6 -\@namedef{Gm@b0j}#1{\Gm@setsize{#1}(1030,1456){mm}}% JIS B0 -\@namedef{Gm@b1j}#1{\Gm@setsize{#1}(728,1030){mm}}% JIS B1 -\@namedef{Gm@b2j}#1{\Gm@setsize{#1}(515,728){mm}}% JIS B2 -\@namedef{Gm@b3j}#1{\Gm@setsize{#1}(364,515){mm}}% JIS B3 -\@namedef{Gm@b4j}#1{\Gm@setsize{#1}(257,364){mm}}% JIS B4 -\@namedef{Gm@b5j}#1{\Gm@setsize{#1}(182,257){mm}}% JIS B5 -\@namedef{Gm@b6j}#1{\Gm@setsize{#1}(128,182){mm}}% JIS B6 -\@namedef{Gm@ansiapaper}#1{\Gm@setsize{#1}(8.5,11){in}}% -\@namedef{Gm@ansibpaper}#1{\Gm@setsize{#1}(11,17){in}}% -\@namedef{Gm@ansicpaper}#1{\Gm@setsize{#1}(17,22){in}}% -\@namedef{Gm@ansidpaper}#1{\Gm@setsize{#1}(22,34){in}}% -\@namedef{Gm@ansiepaper}#1{\Gm@setsize{#1}(34,44){in}}% -\@namedef{Gm@letterpaper}#1{\Gm@setsize{#1}(8.5,11){in}}% -\@namedef{Gm@legalpaper}#1{\Gm@setsize{#1}(8.5,14){in}}% -\@namedef{Gm@executivepaper}#1{\Gm@setsize{#1}(7.25,10.5){in}}% -\@namedef{Gm@screen}#1{\Gm@setsize{#1}(225,180){mm}}% -% \end{macrocode} -% -% \begin{key}{Gm}{paper} -% |paper| takes a paper name as its value. -% \begin{macrocode} -\define@key{Gm}{paper}{\setkeys{Gm}{#1}}% -\let\KV@Gm@papername\KV@Gm@paper -% \end{macrocode} -% \end{key} -% \begin{key}{Gm}{a[0-6]paper} -% \begin{key}{Gm}{b[0-6]paper} -% \begin{key}{Gm}{b[0-6]j} -% \begin{key}{Gm}{ansi[a-e]paper} -% \begin{key}{Gm}{letterpaper} -% \begin{key}{Gm}{legalpaper} -% \begin{key}{Gm}{executivepaper} -% \begin{key}{Gm}{screen} -% The following paper names are available. -% \begin{macrocode} -\define@key{Gm}{a0paper}[true]{\Gm@setpaper@ifpre{a0paper}}% -\define@key{Gm}{a1paper}[true]{\Gm@setpaper@ifpre{a1paper}}% -\define@key{Gm}{a2paper}[true]{\Gm@setpaper@ifpre{a2paper}}% -\define@key{Gm}{a3paper}[true]{\Gm@setpaper@ifpre{a3paper}}% -\define@key{Gm}{a4paper}[true]{\Gm@setpaper@ifpre{a4paper}}% -\define@key{Gm}{a5paper}[true]{\Gm@setpaper@ifpre{a5paper}}% -\define@key{Gm}{a6paper}[true]{\Gm@setpaper@ifpre{a6paper}}% -\define@key{Gm}{b0paper}[true]{\Gm@setpaper@ifpre{b0paper}}% -\define@key{Gm}{b1paper}[true]{\Gm@setpaper@ifpre{b1paper}}% -\define@key{Gm}{b2paper}[true]{\Gm@setpaper@ifpre{b2paper}}% -\define@key{Gm}{b3paper}[true]{\Gm@setpaper@ifpre{b3paper}}% -\define@key{Gm}{b4paper}[true]{\Gm@setpaper@ifpre{b4paper}}% -\define@key{Gm}{b5paper}[true]{\Gm@setpaper@ifpre{b5paper}}% -\define@key{Gm}{b6paper}[true]{\Gm@setpaper@ifpre{b6paper}}% -\define@key{Gm}{c0paper}[true]{\Gm@setpaper@ifpre{c0paper}}% -\define@key{Gm}{c1paper}[true]{\Gm@setpaper@ifpre{c1paper}}% -\define@key{Gm}{c2paper}[true]{\Gm@setpaper@ifpre{c2paper}}% -\define@key{Gm}{c3paper}[true]{\Gm@setpaper@ifpre{c3paper}}% -\define@key{Gm}{c4paper}[true]{\Gm@setpaper@ifpre{c4paper}}% -\define@key{Gm}{c5paper}[true]{\Gm@setpaper@ifpre{c5paper}}% -\define@key{Gm}{c6paper}[true]{\Gm@setpaper@ifpre{c6paper}}% -\define@key{Gm}{b0j}[true]{\Gm@setpaper@ifpre{b0j}}% -\define@key{Gm}{b1j}[true]{\Gm@setpaper@ifpre{b1j}}% -\define@key{Gm}{b2j}[true]{\Gm@setpaper@ifpre{b2j}}% -\define@key{Gm}{b3j}[true]{\Gm@setpaper@ifpre{b3j}}% -\define@key{Gm}{b4j}[true]{\Gm@setpaper@ifpre{b4j}}% -\define@key{Gm}{b5j}[true]{\Gm@setpaper@ifpre{b5j}}% -\define@key{Gm}{b6j}[true]{\Gm@setpaper@ifpre{b6j}}% -\define@key{Gm}{ansiapaper}[true]{\Gm@setpaper@ifpre{ansiapaper}}% -\define@key{Gm}{ansibpaper}[true]{\Gm@setpaper@ifpre{ansibpaper}}% -\define@key{Gm}{ansicpaper}[true]{\Gm@setpaper@ifpre{ansicpaper}}% -\define@key{Gm}{ansidpaper}[true]{\Gm@setpaper@ifpre{ansidpaper}}% -\define@key{Gm}{ansiepaper}[true]{\Gm@setpaper@ifpre{ansiepaper}}% -\define@key{Gm}{letterpaper}[true]{\Gm@setpaper@ifpre{letterpaper}}% -\define@key{Gm}{legalpaper}[true]{\Gm@setpaper@ifpre{legalpaper}}% -\define@key{Gm}{executivepaper}[true]{\Gm@setpaper@ifpre{executivepaper}}% -\define@key{Gm}{screen}[true]{\Gm@setpaper@ifpre{screen}}% -% \end{macrocode} -% \end{key}\end{key}\end{key}\end{key}\end{key} -% \end{key}\end{key}\end{key} -% \begin{key}{Gm}{paperwidth} -% \begin{key}{Gm}{paperheight} -% \begin{key}{Gm}{papersize} -% Direct specification for paper size is also possible. -% \begin{macrocode} -\define@key{Gm}{paperwidth}{\ifGm@preamble{paperwidth}{% - \def\Gm@paper{custom}\Gm@setlength\paperwidth{#1}}}% -\define@key{Gm}{paperheight}{\ifGm@preamble{paperheight}{% - \def\Gm@paper{custom}\Gm@setlength\paperheight{#1}}}% -\define@key{Gm}{papersize}{\ifGm@preamble{papersize}{% - \def\Gm@paper{custom}\Gm@branch{#1}{paperwidth}{paperheight}}}% -% \end{macrocode} -% \end{key}\end{key}\end{key} -% \begin{key}{Gm}{layout} -% \begin{key}{Gm}{layoutwidth} -% \begin{key}{Gm}{layoutheight} -% \begin{key}{Gm}{layoutsize} -% Direct specification for layout size is also possible. -% \begin{macrocode} -\define@key{Gm}{layout}{\Gm@layouttrue\@nameuse{Gm@#1}{Gm@layout}}% -\let\KV@Gm@layoutname\KV@Gm@layout -\define@key{Gm}{layoutwidth}{\Gm@layouttrue\Gm@setlength\Gm@layoutwidth{#1}}% -\define@key{Gm}{layoutheight}{\Gm@layouttrue\Gm@setlength\Gm@layoutheight{#1}}% -\define@key{Gm}{layoutsize}{\Gm@branch{#1}{layoutwidth}{layoutheight}}% -% \end{macrocode} -% \end{key}\end{key}\end{key}\end{key} -% \begin{key}{Gm}{landscape} -% \begin{key}{Gm}{portrait} -% Paper orientation setting. -% \begin{macrocode} -\define@key{Gm}{landscape}[true]{\ifGm@preamble{landscape}{% - \Gm@doifelse{landscape}{#1}% - {\ifGm@landscape\else\Gm@landscapetrue\Gm@reverse{swap@papersize}\fi}% - {\ifGm@landscape\Gm@landscapefalse\Gm@reverse{swap@papersize}\fi}}}% -\define@key{Gm}{portrait}[true]{\ifGm@preamble{portrait}{% - \Gm@doifelse{portrait}{#1}% - {\ifGm@landscape\Gm@landscapefalse\Gm@reverse{swap@papersize}\fi}% - {\ifGm@landscape\else\Gm@landscapetrue\Gm@reverse{swap@papersize}\fi}}}% -% \end{macrocode} -% \end{key}\end{key} -% \begin{key}{Gm}{hscale} -% \begin{key}{Gm}{vscale} -% \begin{key}{Gm}{scale} -% These options can determine the length(s) of \gpart{total body} -% giving \textit{scale(s)} against the paper size. -% \begin{macrocode} -\define@key{Gm}{hscale}{\Gm@hbodytrue\edef\Gm@hscale{#1}}% -\define@key{Gm}{vscale}{\Gm@vbodytrue\edef\Gm@vscale{#1}}% -\define@key{Gm}{scale}{\Gm@branch{#1}{hscale}{vscale}}% -% \end{macrocode} -% \end{key}\end{key}\end{key} -% \begin{key}{Gm}{width} -% \begin{key}{Gm}{height} -% \begin{key}{Gm}{total} -% \begin{key}{Gm}{totalwidth} -% \begin{key}{Gm}{totalheight} -% These options give concrete dimension(s) of \gpart{total body}. -% |totalwidth| and |totalheight| are aliases of |width| and |height| -% respectively. -% \begin{macrocode} -\define@key{Gm}{width}{\Gm@hbodytrue\Gm@defbylen{width}{#1}}% -\define@key{Gm}{height}{\Gm@vbodytrue\Gm@defbylen{height}{#1}}% -\define@key{Gm}{total}{\Gm@branch{#1}{width}{height}}% -\let\KV@Gm@totalwidth\KV@Gm@width -\let\KV@Gm@totalheight\KV@Gm@height -% \end{macrocode} -% \end{key}\end{key}\end{key}\end{key}\end{key} -% \begin{key}{Gm}{textwidth} -% \begin{key}{Gm}{textheight} -% \begin{key}{Gm}{text} -% \begin{key}{Gm}{body} -% These options directly sets the dimensions \cs{textwidth} and -% \cs{textheight}. |body| is an alias of |text|. -% \begin{macrocode} -\define@key{Gm}{textwidth}{\Gm@hbodytrue\Gm@defbylen{textwidth}{#1}}% -\define@key{Gm}{textheight}{\Gm@vbodytrue\Gm@defbylen{textheight}{#1}}% -\define@key{Gm}{text}{\Gm@branch{#1}{textwidth}{textheight}}% -\let\KV@Gm@body\KV@Gm@text -% \end{macrocode} -% \end{key}\end{key}\end{key}\end{key} -% \begin{key}{Gm}{lines} -% The option sets \cs{textheight} with the number of lines. -% \begin{macrocode} -\define@key{Gm}{lines}{\Gm@vbodytrue\Gm@defbycnt{lines}{#1}}% -% \end{macrocode} -% \end{key} -% \begin{key}{Gm}{includehead} -% \begin{key}{Gm}{includefoot} -% \begin{key}{Gm}{includeheadfoot} -% \begin{key}{Gm}{includemp} -% \begin{key}{Gm}{includeall} -% The options take the corresponding dimensions as part of -% \gpart{body}. -% \begin{macrocode} -\define@key{Gm}{includehead}[true]{\Gm@setbool{includehead}{#1}}% -\define@key{Gm}{includefoot}[true]{\Gm@setbool{includefoot}{#1}}% -\define@key{Gm}{includeheadfoot}[true]{\Gm@doifelse{includeheadfoot}{#1}% - {\Gm@includeheadtrue\Gm@includefoottrue}% - {\Gm@includeheadfalse\Gm@includefootfalse}}% -\define@key{Gm}{includemp}[true]{\Gm@setbool{includemp}{#1}}% -\define@key{Gm}{includeall}[true]{\Gm@doifelse{includeall}{#1}% - {\Gm@includeheadtrue\Gm@includefoottrue\Gm@includemptrue}% - {\Gm@includeheadfalse\Gm@includefootfalse\Gm@includempfalse}}% -% \end{macrocode} -% \end{key}\end{key}\end{key}\end{key}\end{key} -% \begin{key}{Gm}{ignorehead} -% \begin{key}{Gm}{ignorefoot} -% \begin{key}{Gm}{ignoreheadfoot} -% \begin{key}{Gm}{ignoremp} -% \begin{key}{Gm}{ignoreall} -% These options exclude \gpart{head}, \gpart{foot} -% and \gpart{marginpars} when determining \gpart{body}. -% \begin{macrocode} -\define@key{Gm}{ignorehead}[true]{% - \Gm@setboolrev[ignorehead]{includehead}{#1}}% -\define@key{Gm}{ignorefoot}[true]{% - \Gm@setboolrev[ignorefoot]{includefoot}{#1}}% -\define@key{Gm}{ignoreheadfoot}[true]{\Gm@doifelse{ignoreheadfoot}{#1}% - {\Gm@includeheadfalse\Gm@includefootfalse}% - {\Gm@includeheadtrue\Gm@includefoottrue}}% -\define@key{Gm}{ignoremp}[true]{% - \Gm@setboolrev[ignoremp]{includemp}{#1}}% -\define@key{Gm}{ignoreall}[true]{\Gm@doifelse{ignoreall}{#1}% - {\Gm@includeheadfalse\Gm@includefootfalse\Gm@includempfalse}% - {\Gm@includeheadtrue\Gm@includefoottrue\Gm@includemptrue}}% -% \end{macrocode} -% \end{key}\end{key}\end{key}\end{key}\end{key} -% \begin{key}{Gm}{heightrounded} -% The option rounds \cs{textheight} to n-times of \cs{baselineskip} -% plus \cs{topskip}. -% \begin{macrocode} -\define@key{Gm}{heightrounded}[true]{\Gm@setbool{heightrounded}{#1}}% -% \end{macrocode} -% \end{key} -% \begin{key}{Gm}{hdivide} -% \begin{key}{Gm}{vdivide} -% \begin{key}{Gm}{divide} -% The options are useful to specify partitioning -% in each direction of the paper. -% \begin{macrocode} -\define@key{Gm}{hdivide}{\Gm@parse@divide{#1}{lmargin}{width}{rmargin}}% -\define@key{Gm}{vdivide}{\Gm@parse@divide{#1}{tmargin}{height}{bmargin}}% -\define@key{Gm}{divide}{\Gm@parse@divide{#1}{lmargin}{width}{rmargin}% - \Gm@parse@divide{#1}{tmargin}{height}{bmargin}}% -% \end{macrocode} -% \end{key}\end{key}\end{key} -% -% \begin{key}{Gm}{lmargin} -% \begin{key}{Gm}{rmargin} -% \begin{key}{Gm}{tmargin} -% \begin{key}{Gm}{bmargin} -% \begin{key}{Gm}{left} -% \begin{key}{Gm}{inner} -% \begin{key}{Gm}{innermargin} -% \begin{key}{Gm}{right} -% \begin{key}{Gm}{outer} -% \begin{key}{Gm}{outermargin} -% \begin{key}{Gm}{top} -% \begin{key}{Gm}{bottom} -% These options set \gpart{margins}. -% |left|, |inner|, |innermargin| are aliases of |lmargin|. -% |right|, |outer|, |outermargin| are aliases of |rmargin|. -% |top| and |bottom| are aliases of |tmargin| and |bmargin| respectively. -% \begin{macrocode} -\define@key{Gm}{lmargin}{\Gm@defbylen{lmargin}{#1}}% -\define@key{Gm}{rmargin}{\Gm@defbylen{rmargin}{#1}}% -\let\KV@Gm@left\KV@Gm@lmargin -\let\KV@Gm@inner\KV@Gm@lmargin -\let\KV@Gm@innermargin\KV@Gm@lmargin -\let\KV@Gm@right\KV@Gm@rmargin -\let\KV@Gm@outer\KV@Gm@rmargin -\let\KV@Gm@outermargin\KV@Gm@rmargin -\define@key{Gm}{tmargin}{\Gm@defbylen{tmargin}{#1}}% -\define@key{Gm}{bmargin}{\Gm@defbylen{bmargin}{#1}}% -\let\KV@Gm@top\KV@Gm@tmargin -\let\KV@Gm@bottom\KV@Gm@bmargin -% \end{macrocode} -% \end{key}\end{key}\end{key}\end{key}\end{key} -% \end{key}\end{key}\end{key}\end{key}\end{key} -% \end{key}\end{key} -% \begin{key}{Gm}{hmargin} -% \begin{key}{Gm}{vmargin} -% \begin{key}{Gm}{margin} -% These options are shorthands for setting \gpart{margins}. -% \begin{macrocode} -\define@key{Gm}{hmargin}{\Gm@branch{#1}{lmargin}{rmargin}}% -\define@key{Gm}{vmargin}{\Gm@branch{#1}{tmargin}{bmargin}}% -\define@key{Gm}{margin}{\Gm@branch{#1}{lmargin}{tmargin}% - \Gm@branch{#1}{rmargin}{bmargin}}% -% \end{macrocode} -% \end{key}\end{key}\end{key} -% \begin{key}{Gm}{hmarginratio} -% \begin{key}{Gm}{vmarginratio} -% \begin{key}{Gm}{marginratio} -% \begin{key}{Gm}{hratio} -% \begin{key}{Gm}{vratio} -% \begin{key}{Gm}{ratio} -% Options specifying the margin ratios. -% \begin{macrocode} -\define@key{Gm}{hmarginratio}{\edef\Gm@hmarginratio{#1}}% -\define@key{Gm}{vmarginratio}{\edef\Gm@vmarginratio{#1}}% -\define@key{Gm}{marginratio}{\Gm@branch{#1}{hmarginratio}{vmarginratio}}% -\let\KV@Gm@hratio\KV@Gm@hmarginratio -\let\KV@Gm@vratio\KV@Gm@vmarginratio -\let\KV@Gm@ratio\KV@Gm@marginratio -% \end{macrocode} -% \end{key}\end{key}\end{key} -% \end{key}\end{key}\end{key} -% \begin{key}{Gm}{hcentering} -% \begin{key}{Gm}{vcentering} -% \begin{key}{Gm}{centering} -% Useful shorthands to place \gpart{body} centered. -% \begin{macrocode} -\define@key{Gm}{hcentering}[true]{\Gm@doifelse{hcentering}{#1}% - {\def\Gm@hmarginratio{1:1}}{}}% -\define@key{Gm}{vcentering}[true]{\Gm@doifelse{vcentering}{#1}% - {\def\Gm@vmarginratio{1:1}}{}}% -\define@key{Gm}{centering}[true]{\Gm@doifelse{centering}{#1}% - {\def\Gm@hmarginratio{1:1}\def\Gm@vmarginratio{1:1}}{}}% -% \end{macrocode} -% \end{key}\end{key}\end{key} -% \begin{key}{Gm}{twoside} -% If |twoside=true|, \cs{@twoside} and \cs{@mparswitch} is set to |true|. -% \begin{macrocode} -\define@key{Gm}{twoside}[true]{\Gm@doifelse{twoside}{#1}% - {\@twosidetrue\@mparswitchtrue}{\@twosidefalse\@mparswitchfalse}}% -% \end{macrocode} -% \end{key} -% \begin{key}{Gm}{asymmetric} -% |asymmetric| sets \cs{@mparswitchfalse} and \cs{@twosidetrue} -% A |asymmetric=false| has no effect. -% \begin{macrocode} -\define@key{Gm}{asymmetric}[true]{\Gm@doifelse{asymmetric}{#1}% - {\@twosidetrue\@mparswitchfalse}{}}% -% \end{macrocode} -% \end{key} -% \begin{key}{Gm}{bindingoffset} -% The macro adds the specified space to the inner margin. -% \begin{macrocode} -\define@key{Gm}{bindingoffset}{\Gm@setlength\Gm@bindingoffset{#1}}% -% \end{macrocode} -% \end{key} -% \begin{key}{Gm}{headheight} -% \begin{key}{Gm}{headsep} -% \begin{key}{Gm}{footskip} -% \begin{key}{Gm}{head} -% \begin{key}{Gm}{foot} -% The direct settings of \gpart{head} and/or \gpart{foot} dimensions. -% \begin{macrocode} -\define@key{Gm}{headheight}{\Gm@setlength\headheight{#1}}% -\define@key{Gm}{headsep}{\Gm@setlength\headsep{#1}}% -\define@key{Gm}{footskip}{\Gm@setlength\footskip{#1}}% -\let\KV@Gm@head\KV@Gm@headheight -\let\KV@Gm@foot\KV@Gm@footskip -% \end{macrocode} -% \end{key}\end{key}\end{key}\end{key}\end{key} -% \begin{key}{Gm}{nohead} -% \begin{key}{Gm}{nofoot} -% \begin{key}{Gm}{noheadfoot} -% They are only shorthands to set \gpart{head} and/or \gpart{foot} -% to be |0pt|. -% \begin{macrocode} -\define@key{Gm}{nohead}[true]{\Gm@doifelse{nohead}{#1}% - {\Gm@setlength\headheight\z@\Gm@setlength\headsep\z@}{}}% -\define@key{Gm}{nofoot}[true]{\Gm@doifelse{nofoot}{#1}% - {\Gm@setlength\footskip\z@}{}}% -\define@key{Gm}{noheadfoot}[true]{\Gm@doifelse{noheadfoot}{#1}% - {\Gm@setlength\headheight\z@\Gm@setlength\headsep - \z@\Gm@setlength\footskip\z@}{}}% -% \end{macrocode} -% \end{key}\end{key}\end{key} -% \begin{key}{Gm}{footnotesep} -% The option directly sets a native dimension \cs{footnotesep}. -% \begin{macrocode} -\define@key{Gm}{footnotesep}{\Gm@setlength{\skip\footins}{#1}}% -% \end{macrocode} -% \end{key} -% \begin{key}{Gm}{marginparwidth} -% \begin{key}{Gm}{marginpar} -% \begin{key}{Gm}{marginparsep} -% They directly set native dimensions \cs{marginparwidth} and -% \cs{marginparsep}. -% \begin{macrocode} -\define@key{Gm}{marginparwidth}{\Gm@setlength\marginparwidth{#1}}% -\let\KV@Gm@marginpar\KV@Gm@marginparwidth -\define@key{Gm}{marginparsep}{\Gm@setlength\marginparsep{#1}}% -% \end{macrocode} -% \end{key}\end{key}\end{key} -% \begin{key}{Gm}{nomarginpar} -% The macro is a shorthand for \cs{marginparwidth}|=0pt| and -% \cs{marginparsep}|=0pt|. -% \begin{macrocode} -\define@key{Gm}{nomarginpar}[true]{\Gm@doifelse{nomarginpar}{#1}% - {\Gm@setlength\marginparwidth\z@\Gm@setlength\marginparsep\z@}{}}% -% \end{macrocode} -% \end{key} -% \begin{key}{Gm}{columnsep} -% The option sets a native dimension \cs{columnsep}. -% \begin{macrocode} -\define@key{Gm}{columnsep}{\Gm@setlength\columnsep{#1}}% -% \end{macrocode} -% \end{key} -% \begin{key}{Gm}{hoffset} -% \begin{key}{Gm}{voffset} -% \begin{key}{Gm}{offset} -% The former two options set native dimensions \cs{hoffset} and -% \cs{voffset}. |offset| can set both of them with the same value. -% \begin{macrocode} -\define@key{Gm}{hoffset}{\Gm@setlength\hoffset{#1}}% -\define@key{Gm}{voffset}{\Gm@setlength\voffset{#1}}% -\define@key{Gm}{offset}{\Gm@branch{#1}{hoffset}{voffset}}% -% \end{macrocode} -% \end{key}\end{key}\end{key} -% \begin{key}{Gm}{layouthoffset} -% \begin{key}{Gm}{layoutvoffset} -% \begin{key}{Gm}{layoutoffset} -% \begin{macrocode} -\define@key{Gm}{layouthoffset}{\Gm@setlength\Gm@layouthoffset{#1}}% -\define@key{Gm}{layoutvoffset}{\Gm@setlength\Gm@layoutvoffset{#1}}% -\define@key{Gm}{layoutoffset}{\Gm@branch{#1}{layouthoffset}{layoutvoffset}}% -% \end{macrocode} -% \end{key}\end{key}\end{key} -% \begin{key}{Gm}{twocolumn} -% The option sets \cs{twocolumn} switch. -% \begin{macrocode} -\define@key{Gm}{twocolumn}[true]{% - \Gm@doif{twocolumn}{#1}{\csname @twocolumn\Gm@bool\endcsname}}% -% \end{macrocode} -% \end{key} -% \begin{key}{Gm}{onecolumn} -% This option has the reverse effect of |twocolumn| option. -% \begin{macrocode} -\define@key{Gm}{onecolumn}[true]{% - \Gm@doifelse{onecolumn}{#1}{\@twocolumnfalse}{\@twocolumntrue}}% -% \end{macrocode} -% \end{key} -% \begin{key}{Gm}{reversemp} -% \begin{key}{Gm}{reversemarginpar} -% The both options set \cs{reversemargin}. -% \begin{macrocode} -\define@key{Gm}{reversemp}[true]{% - \Gm@doif{reversemp}{#1}{\csname @reversemargin\Gm@bool\endcsname}}% -\define@key{Gm}{reversemarginpar}[true]{% - \Gm@doif{reversemarginpar}{#1}{\csname @reversemargin\Gm@bool\endcsname}}% -% \end{macrocode} -% \end{key}\end{key} -% \begin{key}{Gm}{dviver} -% \begin{macrocode} -\define@key{Gm}{driver}{\ifGm@preamble{driver}{% - \edef\@@tempa{#1}\edef\@@auto{auto}\edef\@@none{none}% - \ifx\@@tempa\@empty\let\Gm@driver\relax\else - \ifx\@@tempa\@@none\let\Gm@driver\relax\else - \ifx\@@tempa\@@auto\let\Gm@driver\@empty\else - \setkeys{Gm}{#1}\fi\fi\fi\let\@@auto\relax\let\@@none\relax}}% -% \end{macrocode} -% \end{key} -% \begin{key}{Gm}{dvips} -% \begin{key}{Gm}{dvipdfm} -% \begin{key}{Gm}{pdftex} -% \begin{key}{Gm}{xetex} -% \begin{key}{Gm}{vtex} -% The \Gm\ package supports |dvips|, |dvipdfm|, -% |pdflatex| and |vtex|. |dvipdfm| works like |dvips|. -% \begin{macrocode} -\define@key{Gm}{dvips}[true]{\ifGm@preamble{dvips}{% - \Gm@doifelse{dvips}{#1}{\Gm@setdriver{dvips}}{\Gm@unsetdriver{dvips}}}}% -\define@key{Gm}{dvipdfm}[true]{\ifGm@preamble{dvipdfm}{% - \Gm@doifelse{dvipdfm}{#1}{\Gm@setdriver{dvipdfm}}{\Gm@unsetdriver{dvipdfm}}}}% -\define@key{Gm}{pdftex}[true]{\ifGm@preamble{pdftex}{% - \Gm@doifelse{pdftex}{#1}{\Gm@setdriver{pdftex}}{\Gm@unsetdriver{pdftex}}}}% -\define@key{Gm}{xetex}[true]{\ifGm@preamble{xetex}{% - \Gm@doifelse{xetex}{#1}{\Gm@setdriver{xetex}}{\Gm@unsetdriver{xetex}}}}% -\define@key{Gm}{vtex}[true]{\ifGm@preamble{vtex}{% - \Gm@doifelse{vtex}{#1}{\Gm@setdriver{vtex}}{\Gm@unsetdriver{vtex}}}}% -% \end{macrocode} -% \end{key}\end{key}\end{key}\end{key}\end{key} -% \begin{key}{Gm}{verbose} -% The verbose mode. -% \begin{macrocode} -\define@key{Gm}{verbose}[true]{\ifGm@preamble{verbose}{\Gm@setbool{verbose}{#1}}}% -% \end{macrocode} -% \end{key} -% \begin{key}{Gm}{reset} -% The option cancels all the options specified before |reset|, -% except |pass|. |mag| ($\neq1000$) with |truedimen| cannot be also -% reset. -% \begin{macrocode} -\define@key{Gm}{reset}[true]{\ifGm@preamble{reset}{% - \Gm@doifelse{reset}{#1}{\Gm@restore@org\Gm@initall - \ProcessOptionsKV[c]{Gm}\Gm@setdefaultpaper}{}}}% -% \end{macrocode} -% \end{key} -% \begin{key}{Gm}{resetpaper} -% If |resetpaper| is set to |true|, the paper size redefined in the package -% is discarded and the original one is restored. This option may be useful -% to print nonstandard sized documents with normal printers and papers. -% \begin{macrocode} -\define@key{Gm}{resetpaper}[true]{\ifGm@preamble{resetpaper}{% - \Gm@setbool{resetpaper}{#1}}}% -% \end{macrocode} -% \end{key} -% \begin{key}{Gm}{mag} -% |mag| is expanded immediately when it is specified. So |reset| can't -% reset |mag| when it is set with |truedimen|. -% \begin{macrocode} -\define@key{Gm}{mag}{\ifGm@preamble{mag}{\mag=#1}}% -% \end{macrocode} -% \end{key} -% \begin{key}{Gm}{truedimen} -% If |truedimen| is set to |true|, all of the internal -% explicit dimensions is changed to \textit{true} dimensions, -% e.g., |1in| is changed to |1truein|. -% \begin{macrocode} -\define@key{Gm}{truedimen}[true]{\ifGm@preamble{truedimen}{% - \Gm@doifelse{truedimen}{#1}{\let\Gm@truedimen\Gm@true}% - {\let\Gm@truedimen\@empty}}}% -% \end{macrocode} -% \end{key} -% \begin{key}{Gm}{pass} -% The option makes all the options specified ineffective except -% verbose switch. -% \begin{macrocode} -\define@key{Gm}{pass}[true]{\ifGm@preamble{pass}{\Gm@setbool{pass}{#1}}}% -% \end{macrocode} -% \end{key} -% \begin{key}{Gm}{showframe} -% The showframe option prints page frames to help you understand -% what the resulting layout is like. -% \begin{macrocode} -\define@key{Gm}{showframe}[true]{\Gm@setbool{showframe}{#1}}% -% \end{macrocode} -% \end{key} -% \begin{key}{Gm}{showcrop} -% The showcrop option prints crop marks at each corner of the layout area. -% \begin{macrocode} -\define@key{Gm}{showcrop}[true]{\Gm@setbool{showcrop}{#1}}% -% \end{macrocode} -% \end{key} -% \begin{macro}{\Gm@setdefaultpaper} -% The macro stores paper dimensions. -% This macro should be called after |\ProcessOptionsKV[c]{Gm}|. -% If the |landscape| option in |\documentclass| is -% specified, the class immediately swaps the paper dimensions. -% \begin{macrocode} -\def\Gm@setdefaultpaper{% - \ifx\Gm@paper\@undefined - \Gm@setsize{paper}(\strip@pt\paperwidth,\strip@pt\paperheight){pt}% - \Gm@setsize{Gm@layout}(\strip@pt\paperwidth,\strip@pt\paperheight){pt}% - \Gm@swap@papersizefalse - \fi}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@adjustpaper} -% The macro checks if paperwidth/height is larger than 0pt, -% which is used in \cs{Gm@process}. -% The paper dimensions can be swapped when paper orientation -% is changed over by |landscape| and |portrait| options. -% \begin{macrocode} -\def\Gm@adjustpaper{% - \ifdim\paperwidth>\p@\else - \PackageError{geometry}{% - \string\paperwidth\space(\the\paperwidth) too short}{% - Set a paper type (e.g., `a4paper').}% - \fi - \ifdim\paperheight>\p@\else - \PackageError{geometry}{% - \string\paperheight\space(\the\paperheight) too short}{% - Set a paper type (e.g., `a4paper').}% - \fi - \ifGm@swap@papersize - \setlength\@tempdima{\paperwidth}% - \setlength\paperwidth{\paperheight}% - \setlength\paperheight{\@tempdima}% - \fi - \ifGm@layout\else - \setlength\Gm@layoutwidth{\paperwidth}% - \setlength\Gm@layoutheight{\paperheight}% - \fi}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@checkmp} -% The macro checks whether or not the marginpars overrun the page. -% \begin{macrocode} -\def\Gm@checkmp{% - \ifGm@includemp\else - \@tempcnta\z@\@tempcntb\@ne - \if@twocolumn - \@tempcnta\@ne - \else - \if@reversemargin - \@tempcnta\@ne\@tempcntb\z@ - \fi - \fi - \@tempdima\marginparwidth - \advance\@tempdima\marginparsep - \ifnum\@tempcnta=\@ne - \@tempdimc\@tempdima - \setlength\@tempdimb{\Gm@lmargin}% - \advance\@tempdimc-\@tempdimb - \ifdim\@tempdimc>\z@ - \Gm@warning{The marginal notes overrun the paper edge.^^J - \@spaces Add \the\@tempdimc\space and more to the left margin}% - \fi - \fi - \ifnum\@tempcntb=\@ne - \@tempdimc\@tempdima - \setlength\@tempdimb{\Gm@rmargin}% - \advance\@tempdimc-\@tempdimb - \ifdim\@tempdimc>\z@ - \Gm@warning{The marginal notes overrun the paper.^^J - \@spaces Add \the\@tempdimc\space and more to the right margin}% - \fi - \fi - \fi}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@adjustmp} -% The macro sets marginpar correction when |includemp| is set, -% which is used in \cs{Gm@process}. The variables \cs{Gm@wd@mp}, -% \cs{Gm@odd@mp} and \cs{Gm@even@mp} are set here. -% Note that \cs{Gm@even@mp} should be used only for twoside layout. -% \begin{macrocode} -\def\Gm@adjustmp{% - \ifGm@includemp - \@tempdimb\marginparwidth - \advance\@tempdimb\marginparsep - \Gm@wd@mp\@tempdimb - \Gm@odd@mp\z@ - \Gm@even@mp\z@ - \if@twocolumn - \Gm@wd@mp2\@tempdimb - \Gm@odd@mp\@tempdimb - \Gm@even@mp\@tempdimb - \else - \if@reversemargin - \Gm@odd@mp\@tempdimb - \if@mparswitch\else - \Gm@even@mp\@tempdimb - \fi - \else - \if@mparswitch - \Gm@even@mp\@tempdimb - \fi - \fi - \fi - \fi}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@adjustbody} -% If the horizontal dimension of \gpart{body} is specified by user, -% \cs{Gm@width} is set properly here. -% \begin{macrocode} -\def\Gm@adjustbody{ - \ifGm@hbody - \ifx\Gm@width\@undefined - \ifx\Gm@hscale\@undefined - \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}% - \else - \Gm@defbylen{width}{\Gm@hscale\Gm@layoutwidth}% - \fi - \fi - \ifx\Gm@textwidth\@undefined\else - \setlength\@tempdima{\Gm@textwidth}% - \ifGm@includemp - \advance\@tempdima\Gm@wd@mp - \fi - \edef\Gm@width{\the\@tempdima}% - \fi - \fi -% \end{macrocode} -% If the vertical dimension of \gpart{body} is specified by user, -% \cs{Gm@height} is set properly here. -% \begin{macrocode} - \ifGm@vbody - \ifx\Gm@height\@undefined - \ifx\Gm@vscale\@undefined - \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}% - \else - \Gm@defbylen{height}{\Gm@vscale\Gm@layoutheight}% - \fi - \fi - \ifx\Gm@lines\@undefined\else -% \end{macrocode} -% \cs{topskip} has to be adjusted so that the formula -% ``$\cs{textheight} = (lines - 1) \times \cs{baselineskip} + \cs{topskip}$'' -% to be correct even if large font sizes are specified by users. -% If \cs{topskip} is smaller than \cs{ht}\cs{strutbox}, then \cs{topskip} -% is set to \cs{ht}\cs{strutbox}. -% \begin{macrocode} - \ifdim\topskip<\ht\strutbox - \setlength\@tempdima{\topskip}% - \setlength\topskip{\ht\strutbox}% - \Gm@warning{\noexpand\topskip was changed from \the\@tempdima\space - to \the\topskip}% - \fi - \setlength\@tempdima{\baselineskip}% - \multiply\@tempdima\Gm@lines - \addtolength\@tempdima{\topskip}% - \addtolength\@tempdima{-\baselineskip}% - \edef\Gm@textheight{\the\@tempdima}% - \fi - \ifx\Gm@textheight\@undefined\else - \setlength\@tempdima{\Gm@textheight}% - \ifGm@includehead - \addtolength\@tempdima{\headheight}% - \addtolength\@tempdima{\headsep}% - \fi - \ifGm@includefoot - \addtolength\@tempdima{\footskip}% - \fi - \edef\Gm@height{\the\@tempdima}% - \fi - \fi}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@process} -% The main macro processing the specified dimensions is defined. -% \begin{macrocode} -\def\Gm@process{% -% \end{macrocode} -% If |pass| is set, the original dimensions and switches are restored -% and process is ended here. -% \begin{macrocode} - \ifGm@pass - \Gm@restore@org - \else - \Gm@@process - \fi}% -% \end{macrocode} -% The main processing macro. -% \begin{macrocode} -\def\Gm@@process{% - \Gm@expandlengths - \Gm@adjustpaper - \addtolength\Gm@layoutwidth{-\Gm@bindingoffset}% - \Gm@adjustmp - \Gm@adjustbody - \Gm@detall{h}{width}{lmargin}{rmargin}% - \Gm@detall{v}{height}{tmargin}{bmargin}% -% \end{macrocode} -% The real dimensions are set properly according to the result -% of the auto-completion calculation. -% \begin{macrocode} - \setlength\textwidth{\Gm@width}% - \setlength\textheight{\Gm@height}% - \setlength\topmargin{\Gm@tmargin}% - \setlength\oddsidemargin{\Gm@lmargin}% - \addtolength\oddsidemargin{-1\Gm@truedimen in}% -% \end{macrocode} -% If |includemp| is set to |true|, \cs{textwidth} and \cs{oddsidemargin} -% are adjusted. -% \begin{macrocode} - \ifGm@includemp - \advance\textwidth-\Gm@wd@mp - \advance\oddsidemargin\Gm@odd@mp - \fi -% \end{macrocode} -% Determining \cs{evensidemargin}. -% In the twoside page layout, the right margin value \cs{Gm@rmargin} is used. -% If the marginal note width is included, -% \cs{evensidemargin} should be corrected by \cs{Gm@even@mp}. -% \begin{macrocode} - \if@mparswitch - \setlength\evensidemargin{\Gm@rmargin}% - \addtolength\evensidemargin{-1\Gm@truedimen in}% - \ifGm@includemp - \advance\evensidemargin\Gm@even@mp - \fi - \else - \evensidemargin\oddsidemargin - \fi -% \end{macrocode} -% The bindingoffset correction for \cs{oddsidemargin}. -% \begin{macrocode} - \advance\oddsidemargin\Gm@bindingoffset - \addtolength\topmargin{-1\Gm@truedimen in}% -% \end{macrocode} -% If the head of the page is included in \gpart{total body}, -% \cs{headheight} and \cs{headsep} are removed from \cs{textheight}, -% otherwise from \cs{topmargin}. -% \begin{macrocode} - \ifGm@includehead - \addtolength\textheight{-\headheight}% - \addtolength\textheight{-\headsep}% - \else - \addtolength\topmargin{-\headheight}% - \addtolength\topmargin{-\headsep}% - \fi -% \end{macrocode} -% If the foot of the page is included in \gpart{total body}, -% \cs{footskip} is removed from \cs{textheight}. -% \begin{macrocode} - \ifGm@includefoot - \addtolength\textheight{-\footskip}% - \fi -% \end{macrocode} -% If |heightrounded| is set, \cs{textheight} is rounded. -% \begin{macrocode} - \ifGm@heightrounded - \setlength\@tempdima{\textheight}% - \addtolength\@tempdima{-\topskip}% - \@tempcnta\@tempdima - \@tempcntb\baselineskip - \divide\@tempcnta\@tempcntb - \setlength\@tempdimb{\baselineskip}% - \multiply\@tempdimb\@tempcnta - \advance\@tempdima-\@tempdimb - \multiply\@tempdima\tw@ - \ifdim\@tempdima>\baselineskip - \addtolength\@tempdimb{\baselineskip}% - \fi - \addtolength\@tempdimb{\topskip}% - \textheight\@tempdimb - \fi -% \end{macrocode} -% The paper width is set back by adding \cs{Gm@bindingoffset}. -% \begin{macrocode} - \advance\oddsidemargin\Gm@layouthoffset% - \advance\evensidemargin\Gm@layouthoffset% - \advance\topmargin\Gm@layoutvoffset% - \addtolength\Gm@layoutwidth{\Gm@bindingoffset}% - }% end of \Gm@@process -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\Gm@detectdriver} -% The macro checks the typeset environment and changes the driver option -% if necessary. To make the engine detection more robust, the macro is -% rewritten with packages \textsf{ifpdf}, \textsf{ifvtex} and -% \textsf{ifxetex}. -% \begin{macrocode} -\def\Gm@detectdriver{% -% \end{macrocode} -% If the driver option is not specified explicitly, then driver -% auto-detection works. -% \begin{macrocode} - \ifx\Gm@driver\@empty - \typeout{*geometry* driver: auto-detecting}% -% \end{macrocode} -% \cs{ifpdf} is defined in \textsf{ifpdf} package in `oberdiek' bundle. -% \begin{macrocode} - \ifpdf - \Gm@setdriver{pdftex}% - \else - \Gm@setdriver{dvips}% - \fi -% \end{macrocode} -% \cs{ifvtex} is defined in \textsf{ifvtex} package in `oberdiek' -% bundle. -% \begin{macrocode} - \ifvtex - \Gm@setdriver{vtex}% - \fi -% \end{macrocode} -% \cs{ifxetex} is defined in \textsf{ifxetex} package written by -% Will Robertson. -% \begin{macrocode} - \ifxetex - \Gm@setdriver{xetex} - \fi -% \end{macrocode} -% When the driver option is set by the user, check if it is valid or not. -% \begin{macrocode} - \else - \ifx\Gm@driver\Gm@xetex %% - \ifxetex\else - \Gm@warning{Wrong driver setting: `xetex'; trying `pdftex' driver}% - \Gm@setdriver{pdftex} - \fi - \fi - \ifx\Gm@driver\Gm@vtex - \ifvtex\else - \Gm@warning{Wrong driver setting: `vtex'; trying `dvips' driver}% - \Gm@setdriver{dvips}% - \fi - \fi - \fi - \ifx\Gm@driver\relax - \typeout{*geometry* detected driver: }% - \else - \typeout{*geometry* detected driver: \Gm@driver}% - \fi}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@showparams} -% Prints the resulted parammeters and dimensions to STDOUT -% if |verbose| is true. -% |\Gm@width| and |\Gm@height| are expanded to get the real size. -% \begin{macrocode} -\def\Gm@showparams#1{% - \ifGm@verbose\expandafter\typeout\else\expandafter\wlog\fi - {\Gm@logcontent{#1}}}% -\def\Gm@showdim#1{* \string#1=\the#1^^J}% -\def\Gm@showbool#1{\@nameuse{ifGm@#1}#1\space\fi}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@logcontent} -% The content of geometry paramenters and native dimensions for the -% page layout. -% \begin{macrocode} -\def\Gm@logcontent#1{% - *geometry* verbose mode - [ #1 ] result:^^J% - \ifGm@pass * pass: disregarded the geometry package!^^J% - \else - * driver: \if\Gm@driver\else\Gm@driver\fi^^J% - * paper: \ifx\Gm@paper\@undefined\else\Gm@paper\fi^^J% - * layout: \ifGm@layout\else\fi^^J% - \ifGm@layout - * layout(width,height): (\the\Gm@layoutwidth,\the\Gm@layoutheight)^^J% - \fi - * layoutoffset:(h,v)=(\the\Gm@layouthoffset,\the\Gm@layoutvoffset)^^J% - \@ifundefined{Gm@lines}{}{* lines: \Gm@lines^^J}% - \@ifundefined{Gm@hmarginratio}{}{* hratio: \Gm@hmarginratio^^J}% - \@ifundefined{Gm@vmarginratio}{}{* vratio: \Gm@vmarginratio^^J}% - \ifdim\Gm@bindingoffset=\z@\else - * bindingoffset: \the\Gm@bindingoffset^^J\fi - * modes: % - \Gm@showbool{landscape}% - \Gm@showbool{includehead}% - \Gm@showbool{includefoot}% - \Gm@showbool{includemp}% - \if@twoside twoside\space\fi% - \if@mparswitch\else\if@twoside asymmetric\space\fi\fi% - \Gm@showbool{heightrounded}% - \ifx\Gm@truedimen\@empty\else truedimen\space\fi% - \Gm@showbool{showframe}% - \Gm@showbool{showcrop}% - ^^J% - * h-part:(L,W,R)=(\Gm@lmargin, \Gm@width, \Gm@rmargin)^^J% - * v-part:(T,H,B)=(\Gm@tmargin, \Gm@height, \Gm@bmargin)^^J% - \fi - \Gm@showdim{\paperwidth}% - \Gm@showdim{\paperheight}% - \Gm@showdim{\textwidth}% - \Gm@showdim{\textheight}% - \Gm@showdim{\oddsidemargin}% - \Gm@showdim{\evensidemargin}% - \Gm@showdim{\topmargin}% - \Gm@showdim{\headheight}% - \Gm@showdim{\headsep}% - \Gm@showdim{\topskip}% - \Gm@showdim{\footskip}% - \Gm@showdim{\marginparwidth}% - \Gm@showdim{\marginparsep}% - \Gm@showdim{\columnsep}% - * \string\skip\string\footins=\the\skip\footins^^J% - \Gm@showdim{\hoffset}% - \Gm@showdim{\voffset}% - \Gm@showdim{\mag}% - * \string\@twocolumn\if@twocolumn true\else false\fi^^J% - * \string\@twoside\if@twoside true\else false\fi^^J% - * \string\@mparswitch\if@mparswitch true\else false\fi^^J% - * \string\@reversemargin\if@reversemargin true\else false\fi^^J% - * (1in=72.27pt=25.4mm, 1cm=28.453pt)^^J}% -% \end{macrocode} -% \end{macro} -% -% Macros for the page frames and cropmarks. -% \begin{macrocode} -\def\Gm@cropmark(#1,#2,#3,#4){% - \begin{picture}(0,0) - \setlength\unitlength{1truemm}% - \linethickness{0.25pt}% - \put(#3,0){\line(#1,0){17}}% - \put(0,#4){\line(0,#2){17}}% - \end{picture}}% -\providecommand*\vb@xt@{\vbox to}% -\def\Gm@vrule{\vrule width 0.2pt height\textheight depth\z@}% -\def\Gm@hrule{\hrule height 0.2pt depth\z@ width\textwidth}% -\def\Gm@hruled{\hrule height\z@ depth0.2pt width\textwidth}% -\newcommand*{\Gm@vrules@mpi}{% - \hb@xt@\@tempdima{\llap{\Gm@vrule}\ignorespaces - \hskip \textwidth\Gm@vrule\hskip \marginparsep - \llap{\Gm@vrule}\hfil\Gm@vrule}}% -\newcommand*{\Gm@vrules@mpii}{% - \hb@xt@\@tempdima{\hskip-\marginparwidth\hskip-\marginparsep - \llap{\Gm@vrule}\ignorespaces - \hskip \marginparwidth\rlap{\Gm@vrule}\hskip \marginparsep - \llap{\Gm@vrule}\hskip\textwidth\rlap{\Gm@vrule}\hss}}% -\newcommand*{\Gm@pageframes}{% - \vb@xt@\z@{% - \ifGm@showcrop - \vb@xt@\z@{\vskip-1\Gm@truedimen in\vskip\Gm@layoutvoffset% - \hb@xt@\z@{\hskip-1\Gm@truedimen in\hskip\Gm@layouthoffset% - \vb@xt@\Gm@layoutheight{% - \let\protect\relax - \hb@xt@\Gm@layoutwidth{\Gm@cropmark(-1,1,-3,3)\hfil\Gm@cropmark(1,1,3,3)}% - \vfil - \hb@xt@\Gm@layoutwidth{\Gm@cropmark(-1,-1,-3,-3)\hfil\Gm@cropmark(1,-1,3,-3)}}% - \hss}% - \vss}% - \fi% - \ifGm@showframe - \if@twoside - \ifodd\count\z@ - \let\@themargin\oddsidemargin - \else - \let\@themargin\evensidemargin - \fi - \fi - \moveright\@themargin% - \vb@xt@\z@{% - \vskip\topmargin\vb@xt@\z@{\vss\Gm@hrule}% - \vskip\headheight\vb@xt@\z@{\vss\Gm@hruled}% - \vskip\headsep\vb@xt@\z@{\vss\Gm@hrule}% - \@tempdima\textwidth - \advance\@tempdima by \marginparsep - \advance\@tempdima by \marginparwidth - \if@mparswitch - \ifodd\count\z@ - \Gm@vrules@mpi - \else - \Gm@vrules@mpii - \fi - \else - \Gm@vrules@mpi - \fi - \vb@xt@\z@{\vss\Gm@hrule}% - \vskip\footskip\vb@xt@\z@{\vss\Gm@hruled}% - \vss}% - \fi% - }}% -% \end{macrocode} -% -% \begin{macro}{\ProcessOptionsKV} -% This macro can process class and package options using `key=value' -% scheme. Only class options are processed with an optional argument -% `|c|', package options with `|p|' , and both of them by default. -% \begin{macrocode} -\def\ProcessOptionsKV{\@ifnextchar[%] - {\@ProcessOptionsKV}{\@ProcessOptionsKV[]}}% -\def\@ProcessOptionsKV[#1]#2{% - \let\@tempa\@empty - \@tempcnta\z@ - \if#1p\@tempcnta\@ne\else\if#1c\@tempcnta\tw@\fi\fi - \ifodd\@tempcnta - \edef\@tempa{\@ptionlist{\@currname.\@currext}}% - \else - \@for\CurrentOption:=\@classoptionslist\do{% - \@ifundefined{KV@#2@\CurrentOption}% - {}{\edef\@tempa{\@tempa,\CurrentOption,}}}% - \ifnum\@tempcnta=\z@ - \edef\@tempa{\@tempa,\@ptionlist{\@currname.\@currext}}% - \fi - \fi - \edef\@tempa{\noexpand\setkeys{#2}{\@tempa}}% - \@tempa - \AtEndOfPackage{\let\@unprocessedoptions\relax}}% -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\def\Gm@setkeys{\setkeys{Gm}}% -% \end{macrocode} -% \begin{macro}{\Gm@processconf} -% \cs{ExecuteOptions} is replaced with \cs{Gm@setkey} to make it -% possible to deal with '\meta{key}=\meta{value}' as its argument. -% \begin{macrocode} -\def\Gm@processconfig{% - \let\Gm@origExecuteOptions\ExecuteOptions - \let\ExecuteOptions\Gm@setkeys - \InputIfFileExists{geometry.cfg}{}{} - \let\ExecuteOptions\Gm@origExecuteOptions}% -% \end{macrocode} -% \end{macro} -% -% The original page layout before loading \Gm\ is saved here. -% |\Gm@restore@org| is defined here for |reset| option. -% \begin{macrocode} -\Gm@save -\edef\Gm@restore@org{\Gm@restore}% -\Gm@initall -% \end{macrocode} -% Processing config file. -% \begin{macrocode} -\Gm@processconfig -% \end{macrocode} -% The optional arguments to \cs{documentclass} are processed here. -% \begin{macrocode} -\ProcessOptionsKV[c]{Gm}% -% \end{macrocode} -% Paper dimensions given by class default are stored. -% \begin{macrocode} -\Gm@setdefaultpaper -% \end{macrocode} -% The optional arguments to \cs{usepackage} are processed here. -% \begin{macrocode} -\ProcessOptionsKV[p]{Gm}% -% \end{macrocode} -% Actual settings and calculation for layout dimensions are processed. -% \begin{macrocode} -\Gm@process -% \end{macrocode} -% -% \begin{macro}{\AtBeginDocument} -% The processes for |verbose|, |showframe| and drivers are added to -% |\AtBeginDocument|. -% |\Gm@restore@org| is redefined here with the paper size specified -% in the preamble for |\newgeometry| to use it. This should be done -% before magnifying the paper size with |\mag| because the layout -% calculation would be affected by changing the paper size. -% \begin{macrocode} -\AtBeginDocument{% - \Gm@savelength{paperwidth}% - \Gm@savelength{paperheight}% - \edef\Gm@restore@org{\Gm@restore}% -% \end{macrocode} -% The original paper size is used if |resetpaper|. -% \begin{macrocode} - \ifGm@resetpaper - \edef\Gm@pw{\Gm@orgpw}% - \edef\Gm@ph{\Gm@orgph}% - \else - \edef\Gm@pw{\the\paperwidth}% - \edef\Gm@ph{\the\paperheight}% - \fi -% \end{macrocode} -% If |pass| is not set, the paper size is multiplied -% according to the specified |mag|. -% \begin{macrocode} - \ifGm@pass\else - \ifnum\mag=\@m\else - \Gm@magtooffset - \divide\paperwidth\@m - \multiply\paperwidth\the\mag - \divide\paperheight\@m - \multiply\paperheight\the\mag - \fi - \fi -% \end{macrocode} -% Checking the driver options. -% \begin{macrocode} - \Gm@detectdriver -% \end{macrocode} -% If |xetex| and |\pdfpagewidth| is defined, -% |\pdfpagewidth| and |\pdfpageheight| would be set. -% \begin{macrocode} - \ifx\Gm@driver\Gm@xetex - \@ifundefined{pdfpagewidth}{}{% - \setlength\pdfpagewidth{\Gm@pw}% - \setlength\pdfpageheight{\Gm@ph}}% - \ifnum\mag=\@m\else - \ifx\Gm@truedimen\Gm@true - \setlength\paperwidth{\Gm@pw}% - \setlength\paperheight{\Gm@ph}% - \fi - \fi - \fi -% \end{macrocode} -% If |pdftex| is set to |true|, pdf-commands are set properly. -% To avoid |pdftex| magnification problem, \cs{pdfhorigin} and -% \cs{pdfvorigin} are adjusted for \cs{mag}. -% \begin{macrocode} - \ifx\Gm@driver\Gm@pdftex - \@ifundefined{pdfpagewidth}{}{% - \setlength\pdfpagewidth{\Gm@pw}% - \setlength\pdfpageheight{\Gm@ph}}% - \ifnum\mag=\@m\else - \@tempdima=\mag sp% - \@ifundefined{pdfhorigin}{}{% - \divide\pdfhorigin\@tempdima - \multiply\pdfhorigin\@m - \divide\pdfvorigin\@tempdima - \multiply\pdfvorigin\@m}% - \ifx\Gm@truedimen\Gm@true - \setlength\paperwidth{\Gm@pw}% - \setlength\paperheight{\Gm@ph}% - \fi - \fi - \fi -% \end{macrocode} -% With V\TeX{} environment, V\TeX{} variables are set here. -% \begin{macrocode} - \ifx\Gm@driver\Gm@vtex - \@ifundefined{mediawidth}{}{% - \mediawidth=\paperwidth - \mediaheight=\paperheight}% - \ifvtexdvi - \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}% - \fi - \fi -% \end{macrocode} -% If |dvips| or |dvipdfm| is specified, paper size is embedded in dvi -% file with \cs{special}. For dvips, a landscape correction is added -% because a landscape document converted by dvips is upside-down in -% PostScript viewers. -% \begin{macrocode} - \ifx\Gm@driver\Gm@dvips - \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}% - \ifx\Gm@driver\Gm@dvips\ifGm@landscape - \AtBeginDvi{\special{! /landplus90 true store}}% - \fi\fi -% \end{macrocode} -% If |dvipdfm| is specified and \textsf{atbegshi} package in -% `oberdiek' bundle is loaded, \cs{AtBeginShipoutFirst} is used -% instead of \cs{AtBeginDvi} for compatibility with \textsf{hyperref} -% and |dvipdfm| program. -% \begin{macrocode} - \else\ifx\Gm@driver\Gm@dvipdfm - \ifcase\ifx\AtBeginShipoutFirst\relax\@ne\else - \ifx\AtBeginShipoutFirst\@undefined\@ne\else\z@\fi\fi - \AtBeginShipoutFirst{\special{papersize=\the\paperwidth,\the\paperheight}}% - \or - \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}% - \fi - \fi\fi -% \end{macrocode} -% Page frames are shipped out when |showframe=true|, cropmarks for |showcrop=true| -% on each page. The \textsf{atbegshi} package is used for overloading |\shipout|. -% \begin{macrocode} - \@tempswafalse - \ifGm@showframe - \@tempswatrue - \else\ifGm@showcrop - \@tempswatrue - \fi\fi - \if@tempswa - \RequirePackage{atbegshi}% - \AtBeginShipout{\setbox\AtBeginShipoutBox=\vbox{% - \baselineskip\z@skip\lineskip\z@skip\lineskiplimit\z@ - \Gm@pageframes\box\AtBeginShipoutBox}}% - \fi -% \end{macrocode} -% The layout dimensions for \cs{restoregeometry} are saved -% at the end of the \cs{AtBeginDocument}. -% \begin{macrocode} - \Gm@save - \edef\Gm@restore@pkg{\Gm@restore}% -% \end{macrocode} -% The package checks whether or not the marginpars overrun the page, -% if |verbose| and unless |pass|. -% \begin{macrocode} - \ifGm@verbose\ifGm@pass\else\Gm@checkmp\fi\fi -% \end{macrocode} -% |\Gm@showparams| puts the resulting parameters and dimensions -% into the log file. With |verbose|, they are shown on the terminal -% as well. -% \begin{macrocode} - \Gm@showparams{preamble}% -% \end{macrocode} -% The following lines free the memories no longer needed. -% \begin{macrocode} - \let\Gm@pw\relax - \let\Gm@ph\relax - }% end of \AtBeginDocument -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\geometry} -% The macro \cs{geometry} can be called multiple times -% in the preamble (before |\begin{document}|). -% \begin{macrocode} -\newcommand{\geometry}[1]{% - \Gm@clean - \setkeys{Gm}{#1}% - \Gm@process}% -\@onlypreamble\geometry -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Gm@changelayout} -% The macro, which can be called from |\newgeometry|, -% |\restoregeometry| and |\loadgeometry|, changes the layout -% in the middle of the document. -% \begin{macrocode} -\DeclareRobustCommand\Gm@changelayout{% - \setlength{\@colht}{\textheight} - \setlength{\@colroom}{\textheight}% - \setlength{\vsize}{\textheight} - \setlength{\columnwidth}{\textwidth}% - \if@twocolumn% - \advance\columnwidth-\columnsep - \divide\columnwidth\tw@% - \@firstcolumntrue% - \fi% - \setlength{\hsize}{\columnwidth}% - \setlength{\linewidth}{\hsize}}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\newgeometry} -% The macro |\newgeometry|, which changes the layout, -% can be used only in the document. -% It would reset the options specified in the preamble except for -% paper size options and |\mag|. -% \begin{macrocode} -\newcommand{\newgeometry}[1]{% - \clearpage - \Gm@restore@org - \Gm@initnewgm - \Gm@newgmtrue - \setkeys{Gm}{#1}% - \Gm@newgmfalse - \Gm@process - \ifnum\mag=\@m\else\Gm@magtooffset\fi - \Gm@changelayout - \Gm@showparams{newgeometry}}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\restoregeometry} -% The macro restores the resulting layout specified in the preamble, -% namely the first-page layout right after |\begin{document}|. -% \begin{macrocode} -\newcommand{\restoregeometry}{% - \clearpage - \Gm@restore@pkg - \Gm@changelayout}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\savegeometry} -% The macro saves the layout with the name specified -% with the argument. The saved layout can be loaded -% with |\loadgeometry{|\meta{name}|}|. -% \begin{macrocode} -\newcommand*{\savegeometry}[1]{% - \Gm@save - \expandafter\edef\csname Gm@restore@@#1\endcsname{\Gm@restore}}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\loadgeometry} -% The macro loads the layout saved with |\savegeometry{|\meta{name}|}|. -% If the name is not found, the macro would warn it and -% do nothing for the layout. -% \begin{macrocode} -\newcommand*{\loadgeometry}[1]{% - \clearpage - \@ifundefined{Gm@restore@@#1}{% - \PackageError{geometry}{% - \string\loadgeometry : name `#1' undefined}{% - The name `#1' should be predefined with \string\savegeometry}% - }{\@nameuse{Gm@restore@@#1}% - \Gm@changelayout}}% -% -% \end{macrocode} -% \end{macro} -% -% \section{Config file} -% In the configuration file |geometry.cfg|, one can use -% \cs{ExecuteOptions} to set the site or user default settings. -% \begin{macrocode} -%<*config> -%< -% \end{macrocode} -% -% \section{Sample file} -% Here is a sample document for the \Gm\ package. -% \begin{macrocode} -%<*samples> -%< -% \end{macrocode} -% -% \Finale -% -\endinput diff --git a/macros/latex/contrib/geometry-de/geometry-de.pdf b/macros/latex/contrib/geometry-de/geometry-de.pdf deleted file mode 100644 index 34a5e9c158..0000000000 Binary files a/macros/latex/contrib/geometry-de/geometry-de.pdf and /dev/null differ diff --git a/macros/latex/contrib/geometry-de/geometry.ins b/macros/latex/contrib/geometry-de/geometry.ins deleted file mode 100644 index 59633898f2..0000000000 --- a/macros/latex/contrib/geometry-de/geometry.ins +++ /dev/null @@ -1,81 +0,0 @@ -%% -%% This is file `geometry.ins', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% geometry-de.dtx (with options: `install') -%% -%% Copyright (C) 1996-2010 -%% by Hideo Umeki -%% -%% This work may be distributed and/or modified under the conditions of -%% the LaTeX Project Public License, either version 1.3c 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.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This work is "maintained" (as per the LPPL maintenance status) -%% by Hideo Umeki. -%% -%% This work consists of the files geometry.dtx and -%% the derived files: geometry.{sty,ins,drv}, geometry-samples.tex. -%% -\input docstrip.tex -\Msg{************************************************************************} -\Msg{* Installation} -\Msg{* Package: geometry 2010/09/12 v5.6 Page Geometry} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse -\preamble - -Copyright (C) 1996-2010 -by Hideo Umeki - -This work may be distributed and/or modified under the conditions of -the LaTeX Project Public License, either version 1.3c 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.3c or later is part of all distributions of LaTeX -version 2005/12/01 or later. - -This work is "maintained" (as per the LPPL maintenance status) -by Hideo Umeki. - -This work consists of the files geometry.dtx and -the derived files: geometry.{sty,ins,drv}, geometry-samples.tex. - -\endpreamble - -\generate{% - \file{geometry.ins}{\from{geometry-de.dtx}{install}}% - \file{geometry-de.drv}{\from{geometry-de.dtx}{driver}}% - \usedir{tex/latex/geometry}% - \file{geometry.sty}{\from{geometry-de.dtx}{package}}% - \file{geometry.cfg}{\from{geometry-de.dtx}{config}}% - \file{geometry-samples-de.tex}{\from{geometry-de.dtx}{samples}}% -} - -\obeyspaces -\Msg{************************************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* file into a directory searched by LaTeX:} -\Msg{*} -\Msg{* \space\space geometry.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `geometry.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} -\endbatchfile -\endinput -%% -%% End of file `geometry.ins'. diff --git a/macros/latex/contrib/geometry/README.md b/macros/latex/contrib/geometry/README.md index ebdb25bf4d..1b88d80647 100644 --- a/macros/latex/contrib/geometry/README.md +++ b/macros/latex/contrib/geometry/README.md @@ -1,10 +1,10 @@ -LaTeX Package: Geometry 2010/09/12 v5.6 +LaTeX Package: Geometry 2020/01/02 v5.9 ---------------------------------------- Flexible and complete interface to document dimensions. Copyright (C) 1996-2010 by Hideo Umeki -Copyright (C) 2018 +Copyright (C) 2018-202 Hideo Umeki and David Carlisle https://github.com/davidcarlisle/geometry Abstract: @@ -18,6 +18,10 @@ CTAN: macros/latex/contrib/geometry Recent changes: +[Release 5.9] +Do not load ifxetex and ifpdf packages (use combined iftex package) +Include German translation of the documentation. + [Release 5.8] Add xdvipdfmx and dvipdfmx alias for dvipdfm option. @@ -28,9 +32,11 @@ Add support for luatex (with new comand names introduced in luatex 0.85) Files: * README.md - this file - * changes.txt - history of changes - * geometry.dtx - including sources and documentation - * geometry.pdf - print-ready documentation + * changes.txt - history of changes + * geometry.dtx - including sources and documentation + * geometry.pdf - print-ready documentation + * geometry-de.dtx - German translation + * geometry-de.pdf - German translation Installation: [manual installation] diff --git a/macros/latex/contrib/geometry/changes.txt b/macros/latex/contrib/geometry/changes.txt index c463344438..75efb2d6b2 100644 --- a/macros/latex/contrib/geometry/changes.txt +++ b/macros/latex/contrib/geometry/changes.txt @@ -1,3 +1,7 @@ +2020-01-02 Release 5.9 + * Include German translation (previously distributed as geometry-de on ctan) + * Use iftex versions of \ifxetex, \ifpdf + 2018-04-16 Release 5.8 * Documentation fixes. * (x)dvipdfmx alias for dvipdfm otion. diff --git a/macros/latex/contrib/geometry/geometry-de.dtx b/macros/latex/contrib/geometry/geometry-de.dtx new file mode 100644 index 0000000000..56079df68e --- /dev/null +++ b/macros/latex/contrib/geometry/geometry-de.dtx @@ -0,0 +1,3865 @@ +% \iffalse meta-comment +% +% Copyright 1996-2010 by Hideo Umeki +% Copyright 2018 Hideo Umeki and David Carlisle +% +% LaTeX Package: Geometry +% ----------------------- +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, either version 1.3c 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.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work is "maintained" (as per the LPPL maintenance status) +% by David Carlisle +% +% This work consists of the files geometry.dtx and +% the derived files: geometry.{sty,ins,drv}, geometry-samples.tex. +% +% * Distribution +% CTAN: macros/latex/contrib/geometry/README.md +% CTAN: macros/latex/contrib/geometry/changes.txt +% CTAN: macros/latex/contrib/geometry/geometry.ins +% CTAN: macros/latex/contrib/geometry/geometry.dtx +% CTAN: macros/latex/contrib/geometry/geometry.pdf +% CTAN: macros/latex/contrib/geometry/geometry-de.dtx +% CTAN: macros/latex/contrib/geometry/geometry-de.pdf +% +% * See README for installation. +% +%<*ignore> +\begingroup + \def\x{LaTeX2e} +\expandafter\endgroup +\ifcase 0\ifx\install y1\fi\expandafter + \ifx\csname processbatchFile\endcsname\relax\else1\fi + \ifx\fmtname\x\else 1\fi\relax +\else\csname fi\endcsname +% +%\NeedsTeXFormat{LaTeX2e} +%\ProvidesPackage{geometry} +% [2020/01/02 v5.9 Page Geometry] +%<*install> +\input docstrip.tex +\Msg{************************************************************************} +\Msg{* Installation} +\Msg{* Package: geometry 2020/01/02 v5.9 Page Geometry} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse +\preamble + +Copyright (C) 1996-2010 +by Hideo Umeki +Copyright (C) 2018-2020 +by Hideo Umeki and David Carlisle https://github.com/davidcarlisle/geometry + +This work may be distributed and/or modified under the conditions of +the LaTeX Project Public License, either version 1.3c 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.3c or later is part of all distributions of LaTeX +version 2005/12/01 or later. + +This work is "maintained" (as per the LPPL maintenance status) +by David Carlisle. + +This work consists of the files geometry.dtx and +the derived files: geometry.{sty,ins,drv}, geometry-samples.tex. + +\endpreamble + +\generate{% + \file{geometry-de.ins}{\from{geometry-de.dtx}{install}}% + \file{geometry-de.drv}{\from{geometry-de.dtx}{driver}}% + \usedir{tex/latex/geometry}% +% \file{geometry-de.sty}{\from{geometry-de.dtx}{package}}% +% \file{geometry-de.cfg}{\from{geometry-de.dtx}{config}}% + \file{geometry-samples-de.tex}{\from{geometry-de.dtx}{samples}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by LaTeX:} +\Msg{*} +\Msg{* \space\space geometry.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `geometry.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} +\endbatchfile +% +%<*ignore> +\fi +% +%<*driver> +\ProvidesFile{geometry.drv} +\documentclass{ltxdoc} +\usepackage[colorlinks, linkcolor=blue]{hyperref} +\usepackage{graphicx} +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage[ngerman]{babel} +\usepackage[a4paper, hmargin=2.5cm, vmargin=1cm, includeheadfoot]{geometry} +\usepackage{charter} +\DeclareRobustCommand\XeTeX{% + X\lower.5ex\hbox{\kern-.07em\reflectbox{E}}% + \kern-.15em\TeX} +\DeclareRobustCommand\XeLaTeX{% + X\lower.5ex\hbox{\kern-.07em\reflectbox{E}}% + \kern-.15em\LaTeX} +\begin{document} + \DocInput{geometry-de.dtx} +\end{document} +% +% \fi +% +% +% \GetFileInfo{geometry.sty} +% +% \title{Das \textsf{geometry} Paket} +% \date{\filedate\ \fileversion} +% \author{Hideo Umeki\\\url{https://github.com/davidcarlisle/geometry}\\\begin{small}Die Übersetzung wurde angefertigt von Hans-Martin Haase +% (\texttt{hmhaase@pclinuxosusers.de})\end{small}} +% +% \MakeShortVerb{|} +% +% \def\OpenB{{\ttfamily\char`\{}} +% \def\Comma{{\ttfamily\char`,}} +% \def\CloseB{{\ttfamily\char`\}}} +% \def\Gm{\textsf{geometry}} +% \newcommand\argii[2]{\OpenB\meta{#1}\Comma\meta{#2}\CloseB} +% \newcommand\argiii[3]{\OpenB\meta{#1}\Comma\meta{#2}\Comma\meta{#3}\CloseB} +% \newcommand\vargii[2]{\OpenB#1\Comma#2\CloseB} +% \newcommand\vargiii[3]{\OpenB#1\Comma#2\Comma#3\CloseB} +% \newcommand\OR{\ \strut\vrule width .4pt\ } +% \newcommand\gpart[1]{\textsf{\textsl{\color[rgb]{.0,.45,.7}#1}}}% +% \newcommand\glen[1]{\textsf{#1}} +% \newenvironment{key}[2]{\expandafter\macro\expandafter{`#2'}}{\endmacro} +% \newenvironment{Options}% +% {\begin{list}{}{% +% \renewcommand{\makelabel}[1]{\texttt{##1}\hfil}% +% \setlength{\itemsep}{-.5\parsep} +% \settowidth{\labelwidth}{\texttt{xxxxxxxxxxx\space}}% +% \setlength{\leftmargin}{\labelwidth}% +% \addtolength{\leftmargin}{\labelsep}}% +% \raggedright} +% {\end{list}} +% \newenvironment{Spec}% +% {\begin{list}{}{% +% \renewcommand{\makelabel}[1]{\fbox{##1}\hfil}% +% \setlength{\itemsep}{-.5\parsep} +% \settowidth{\labelwidth}{\texttt{S(x,x)}}% +% \setlength{\leftmargin}{\labelwidth}% +% \addtolength{\leftmargin}{\labelsep}% +% \addtolength{\leftmargin}{2em}% +% \setlength{\rightmargin}{2em}}% +% \raggedright} +% {\end{list}} +% \def\Ss(#1,#2){\textsf{S(#1,#2)}}% +% \def\Sp(#1,#2,#3){\mbox{|(#1,#2,#3)|}}% +% \def\onlypre{\llap{$^{\dagger\:}$}}% +% +% \maketitle +% +% \begin{abstract} +% Dieses Paket bietet einen flexiblen und einfachen Weg die Seitenmaße zu verändern. +% Sie können das Seitenlayout mit intuitiven Parametern verändern. Ein Beispiel, +% wenn Sie den Abstand von jedem Rand der Seite auf 2\,cm setzen möchten, +% können Sie einfach |\usepackage[margin=2cm]{geometry}| eingeben. +% Das Seitenlayout kann in der Mitte des Dokuments verändert werden, mit dem Befehl +% |\newgeometry|. +% \end{abstract} +% +% \section{Vorwort zu Version 5} +% +% \begin{itemize} +% \item \textbf{Das Seitenlayout in der Mitte des Dokuments ändern.}\par +% Die neuen Befehle \cs{newgeometry\{$\cdots$\}} und +% \cs{restoregeometry} erlauben es dem Benutzer, die Seitenmaße in der Mitte +% des Dokuments zu verändern. \cs{newgeometry} stimmt fast mit +% \cs{geometry} überein, ausgenommen das \cs{newgeometry} alle Optionen, +% die in der Präambel spezifiziert sind, deaktiviert und überspringt die Optionen, die sich auf die Seitengröße beziehen: +% |landscape|, |portrait| und die Seitengrößenoptionen (solche wie +% |papersize|, |paper=a4paper| und andere). +% \item \textbf{Eine neue Reihe von Optionen, um den Layoutbereich zu spezifizieren.}\par +% Die Optionen, die für den Bereich angegeben wurden, in dem die Seitenmaße +% berechnet werden, sind hinzugefügt wurden: \textsf{layout}, \textsf{layoutsize}, +% \textsf{layoutwidth}, \textsf{layoutheight} und weitere. +% Diese Möglichkeiten sind hilfreich, falls das angegebene Layout auf eine andere +% Papiergröße angewendet soll. Wenn beispielsweise |a4paper| +% und |layout=a5paper| verwendet wird, dann benutzt das \Gm\ Paket das `A5' statt `A4' Layout, um +% die Ränder für die Papiergröße zu berechen. +% \item \textbf{Eine neue Treiberoption |xetex|.}\par +% Die neue Treiberoption |xetex| wurde hinzugefügt. Die Routine für die automatische Treiberdetektion +% ist überarbeitet worden, sodass ein Fehler mit einer nicht definierten +% Kontrollsequenz vermieden werden konnte. Beachte, dass `geometry.cfg' in \TeX{} Live, welches +% die Autodetektionsroutine deaktiviert und |pdftex| benutzt, nicht mehr +% nötig ist und es keine Probleme gibt, obwohl dies dennoch existiert. +% Um |xetex| einzustellen, ist es dringend empfohlen \XeLaTeX{} zu verwenden. +% \item \textbf{Neue Papiergröße für JIS B-Serien und ISO C-Serien.}\par +% Die Papiergrößenvoreinstellungen |b0j| bis |b6j| für JIS (Japanese Industrial Standards) B-Serien und +% |c0paper| bis |c6paper| für ISO C-Serien +% (v5.4$\sim$) wurden hinzugefügt. +% \item \textbf{Veränderung des Standards für nicht angegebenen Rand.}\par +% In der Vorversion wurde dann, wenn man nur einen Rand angab, z.\,B. +% |bottom=1cm|, von \Gm\ der andere Rand mit +% diesem Randverhältnis (1:1 standardmäßig für die vertikalen Maße) gesetzt +% und man bekam in diesem Fall |top=1cm|. +% Die Version 5 stellt die Textkörpergröße auf den |scale| +% ($=0.7$) ein und bestimmt den nicht angegebenen Rand. (Siehe Kapitel~\ref{sec:rules}) +% \item \textbf{Die Optionen |showframe| und |showcrop| arbeiten auf jeder Seite.}\par +% Mit der |showframe| Option werden die Seitenränder auf jeder Seite angezeigt. +% Des Weiteren druckt die neue |showcrop| Option Schittmarken auf jede Ecke des +% Layoutbereichs auf jeder Seite. Bedenken sie, dass die Marken unsichtbar sein werden, +% solange die Layoutgröße nicht schmaler wie die Papiergröße gemacht wird. +% Version 5.4 führt einen neuen |\shipout| Überladeprozess ein, der das +% \textsf{atbegshi} Paket benutzt, so wird das \textsf{atbegshi} Paket +% benötigt, wenn die showframe oder showcrop Option angegeben wird. +% \item \textbf{Laden von geometry.cfg vor der Verarbeitung der Klassenoptionen.}\par +% In der Vorgängerversion wurde \textsf{geometry.cfg} nach dem +% Verarbeiten der Dokumentklassenoptionen geladen. Jetzt, da die Konfigurationsdatei vor der Abarbeitung der +% Klassenoptionen geladen wird, können sie das Verhalten, +% wie es in \textsf{geometry.cfg} angegeben ist, durch das Hinzufügen von +% Optionen in der |\documentclass| oder genauso gut in |\usepackage| und |\geometry| verändern. +% \item \textbf{Beseitigte Optionen: |compat2| und |twosideshift|.} +% Die Version 5 ist nicht länger mit den Vorgängerversionen kompatibel. +% |compat2| und |twisideshift| wurden zur Vereinfachung entfernt. +% \end{itemize} +% +% \section{Einführung} +% +% Die Maße für das Seitenlayout in \LaTeX\ einzustellen ist nicht so einfach. +% Sie müssen dafür verschiedene ursprüngliche \LaTeX -Maße anpassen, um einen Textbereich +% dort zu platzieren, wo sie ihn angezeigt haben möchten. +% Wenn sie einen Textbereich ihres Dokuments zentrieren wollen, +% dann müssen sie beispielsweise die systemeigenen Maße wie folgt angeben: +% \begin{quote} +% |\usepackage{calc}|\\ +% |\setlength\textwidth{7in}|\\ +% |\setlength\textheight{10in}|\\ +% |\setlength\oddsidemargin{(\paperwidth-\textwidth)/2 - 1in}|\\ +% |\setlength\topmargin{(\paperheight-\textheight|\\ +% | -\headheight-\headsep-\footskip)/2 - 1in}|. +% \end{quote} +% Ohne das Paket \texttt{calc} würde das obere Beispiel noch +% schwierigere Einstellungen benötigen. Das Paket \Gm\ bietet einen einfachen +% Weg, die Parameter des Seitenlayouts zu konfigurieren. In diesem Fall müssen sie nur +% dies einstellen: +% \begin{quote} +% |\usepackage[text={7in,10in},centering]{geometry}|. +% \end{quote} +% Neben dem Zentrierungsproblem, ist das Einstellen der Ränder von jeder Kante des Blattes aus +% ebenso problematisch. Aber \Gm\ erledigt dies ebenso einfach. +% Wenn sie jeden Rand auf 1.5\,in setzen wollen, dann können sie +% \begin{quote} +% |\usepackage[margin=1.5in]{geometry}| +% \end{quote} +% eingeben. +% Weil das geometry Paket eine Autovervollständigung besitzt, +% werden nicht angegebene Maße automatisch festgelegt. +% Das \Gm\ Paket wird auch nützlich sein, wenn sie das Seitenlayout beispielsweise nach +% den folgenden strikten Instruktionen einstellen müssen: +% \begin{quote}\slshape +% Die vollständig erlaubte Breite des Textbereiches ist $6.5$, bei einer Höhe von $8.75$ +% Inches (englische Zoll). Der obere Rand auf jeder Seite soll $1.2$ Inches von +% der oberen Kante der Seite aus betragen. Der linke Rand sollte $0.9$ Inch von der linken Kante entfernt sein. +% Die Fußzeile mit der Seitenzahl sollte am unteren Ende des Textbereiches sein. +% \end{quote} +% In diesem Fall können sie bei der Benutzung von \Gm\ +% \begin{quote} +% |\usepackage[total={6.5in,8.75in},|\\ +% | top=1.2in, left=0.9in, includefoot]{geometry}|. +% \end{quote} +% eingeben. +% +% Die Konfiguration eines Textbereiches in einem Schriftstück mit dem Textsatzprogramm hat einige +% Ähnlichkeiten mit dem Platzieren eines Fensters auf dem Hintergrund beim Fenstermanager des Betriebssystems. +% Der Name `geometry' kommt von der |geometry|-Option, die genutzt wird, um die Größe und Lokalisierung eines Fensters +% beim X-Window-System anzugeben. +% +% \section{Seitengeometrie} +% +% Abbildung~\ref{fig:layout} zeigt die Seitenlayoutsmaße , die +% im \Gm\ Paket definiert sind. +% Das Seitenlayout beinhaltet einen \gpart{total body} (druckbaren Bereich) und \gpart{margins} (Ränder). +% Der \gpart{total body} besteht aus einem \gpart{body} (Textbereich) mit einem optionalen +% \gpart{header} (Kopf), \gpart{footer} (Fuß) und Randbemerkungen (\gpart{marginpar}). +% Es gibt vier Ränder: \gpart{left} (links), \gpart{right} (rechts), \gpart{top} (oben) und +% \gpart{bottom} (unten). Für zweiseitige Dokumente, sollten horizontale Ränder \gpart{inner} (innen) und \gpart{outer} +% (außen) genannt werden. +% \begin{quote} +% \begin{tabular}{rcl} +% \gpart{paper}&:&\gpart{total body} und +% \gpart{margins}\\ +% \gpart{total body}&:&\gpart{body} (Textbereich)\quad +% (optionaler \gpart{head}, \gpart{foot} und \gpart{marginpar})\\ +% \gpart{margins}&:&\gpart{left} (\gpart{inner}), +% \gpart{right} (\gpart{outer}), \gpart{top} und \gpart{bottom} +% \end{tabular} +% \end{quote} +% Jeder Rand wird von der korrespondierenden Kante des Blattes gemessen. +% Zum Beispiel, linker Rand (innerer Rand) meint eine horizontale Entfernung +% zwischen der linken (inneren) Kante des Blattes und der des \emph{total body} (druckbaren Bereichs). +% Deshalb sind der linke und obere Rand in \Gm\ anders als das natürliche Maß +% \cs{leftmargin} und \cs{topmargin} definiert. +% Die Größe eines Body (Textbereichs) kann durch \cs{textwidth} (Textbreite) und +% \cs{textheight} (Texthöhe) angepasst werden. +% Die Maße für die Seite, den druckbaren Bereich und die Ränder stehen in folgenden Beziehungen. +% \begin{eqnarray} +% \label{eq:paperwidth} +% |paperwidth (Seitenbreite)| &=& |left (links)|+|width (Breite)|+|right (rechts)| \\ +% |paperheight (Seitenhöhe)| &=& |top (oben)|+|height (Höhe)|+|bottom (unten)| +% \label{eq:paperheight} +% \end{eqnarray} +% +% \begin{figure}[h] +% \centering\small +% {\unitlength=.65pt +% \begin{picture}(450,250)(0,-10) +% \put(20,0){\framebox(170,230){}} +% \put(20,235){\makebox(170,230)[br]{\gpart{Seite}}} +% \begingroup\thicklines +% \put(40,30){\framebox(120,170){}}\endgroup +% \put(40,30){\makebox(120,165)[tr]{\gpart{druckbarer Bereich}~}} +% \put(45,30){\makebox(0,170)[l]{|Höhe|}} +% \put(40,35){\makebox(120,0)[bc]{|Breite|}} +% \put(50,-20){\makebox(120,0)[bc]{|Seitenbreite|}} +% \put(10,45){\makebox(0,170)[r]{|Seitenhöhe|}} +% \put(90,200){\makebox(0,30)[lc]{|oben|}} +% \put(90,0){\makebox(0,30)[lc]{|unten|}} +% \put(10,70){\makebox(0,0)[r]{|links|}} +% \put(10,55){\makebox(0,0)[r]{(|innen|)}} +% \put(200,70){\makebox(0,0)[l]{|rechts|}} +% \put(200,55){\makebox(0,0)[l]{(|außen|)}} +% \put(80,230){\vector(0,-1){30}}\put(80,30){\vector(0,-1){30}} +% \put(80,200){\vector(0,1){30}}\put(80,0){\vector(0,1){30}} +% \put(20,70){\vector(1,0){20}}\put(40,70){\vector(-1,0){20}} +% \put(160,70){\vector(1,0){30}}\put(190,70){\vector(-1,0){30}} +% \multiput(160,30)(5,0){24}{\line(1,0){2}} +% \multiput(160,200)(5,0){24}{\line(1,0){2}} +% \begingroup\thicklines +% \put(280,30){\framebox(120,170){}}\endgroup +% \put(283,133){\makebox(0,12)[l]{|Texthöhe|}} +% \put(295,130){\vector(0,-1){100}}\put(295,150){\vector(0,1){50}} +% \multiput(280,220)(5,0){24}{\line(1,0){3}} +% \put(280,208){\makebox(120,20)[bc]{\gpart{Kopf}}} +% \multiput(280,207)(5,0){24}{\line(1,0){3}} +% \put(420,225){\makebox(0,0)[l]{|Kopfhöhe|}} +% \put(418,225){\line(-2,-1){20}} +% \put(420,213){\makebox(0,0)[l]{|Kopftrennung|}} +% \put(418,213){\line(-2,-1){20}} +% \put(420,12){\makebox(0,0)[l]{|Fußbereich|}} +% \put(418,12){\line(-2,1){20}} +% \put(280,40){\makebox(120,140)[c]{\gpart{Textkörper}}} +% \put(305,45){\vector(-1,0){25}}\put(375,45){\vector(1,0){25}} +% \put(80,230){\vector(0,-1){30}}\put(80,30){\vector(0,-1){30}} +% \put(280,48){\makebox(120,0)[c]{|Textbreite|}} +% \put(280,15){\makebox(120,10)[c]{\gpart{Fuß}}} +% \multiput(280,14)(5,0){24}{\line(1,0){2}} +% \put(410,30){\dashbox{3}(30,170){}} +% \put(415,30){\makebox(30,170)[l]{\gpart{Randnotiz}}} +% \put(425,45){\vector(-1,0){15}}\put(425,45){\vector(1,0){15}} +% \put(450,70){\makebox(0,0)[l]{|Randnotiztrennung|}} +% \put(448,70){\line(-3,-1){43}} +% \put(450,45){\makebox(0,0)[l]{|Randnotizbreite|}} +% \end{picture}} +% \caption[Namen der Maße für \Gm]{% +% \begin{minipage}[t]{.8\textwidth}\raggedright\small +% Namen von Maßen, die im \Gm\ Paket genutzt werden: +% |width| $=$ |textwidth (Textbreite)| und |height| $=$ |textheight (Texthöhe)| sind Standard. +% |left (links)|, |right (rechts)|, |top (oben)| und |bottom (unten)| sind Ränder. +% Wenn die Ränder auf der Rückseite durch die |twoside (Zweiseitigkeit)| Option getauscht werden, +% dann werden die Ränder, die mit |left| und |right| angegeben wurden, für die inneren und äußeren Ränder genutzt. +% |inner (innen)| und |outer (außen)| sind Pseudonyme für |left| und |right|. +% \end{minipage}} +% \label{fig:layout} +% \end{figure} +% +% \begin{figure}[h] +% \centering\small +% {\unitlength=.65pt +% \begin{picture}(490,280)(0,-10) +% \put(60,250){\makebox(120,0)[bl]{\textbf{(a)}~\textit{Standard}}}% +% \put(20,0){\framebox(170,230){}} +% \put(20,230){\makebox(170,15)[r]{\gpart{Seite}}} +% \begingroup\thicklines +% \put(40,30){\framebox(120,165){}}\endgroup +% \put(70,165){\vector(0,1){30}} +% \put(55,145){\makebox(0,20)[lc]{|Texthöhe|}} +% \put(70,145){\vector(0,-1){115}} +% \multiput(40,203)(5,0){24}{\line(1,0){3}} +% \multiput(40,213)(5,0){24}{\line(1,0){3}} +% \multiput(40,10)(5,0){24}{\line(1,0){3}} +% \put(40,203){\makebox(120,20)[bc]{\gpart{Kopf}}} +% \put(40,40){\makebox(120,140)[c]{\gpart{Textkörper}}} +% \put(40,11){\makebox(120,10)[c]{\gpart{Fuß}}} +% \put(150,230){\vector(0,-1){35}}\put(150,30){\vector(0,-1){30}} +% \put(150,195){\vector(0,1){35}}\put(150,0){\vector(0,1){30}} +% \put(160,197){\makebox(0,30)[lc]{|oben|}} +% \put(160,0){\makebox(0,30)[lc]{|unten|}} +% \multiput(160,30)(5,0){24}{\line(1,0){2}} +% \multiput(160,195)(5,0){24}{\line(1,0){2}} +% \put(255,250){\makebox(120,0)[bl] +% {\textbf{(b)}~|includehead| und |includefoot|}}% +% \put(260,0){\framebox(170,230){}} +% \put(260,230){\makebox(170,15)[r]{\gpart{Seite}}} +% \begingroup\thicklines +% \put(280,30){\framebox(120,165){}}\endgroup +% \put(310,152){\vector(0,1){25}} +% \put(295,130){\makebox(0,20)[lc]{|Texthöhe|}} +% \put(310,130){\vector(0,-1){80}} +% \multiput(280,184)(5,0){24}{\line(1,0){3}} +% \multiput(280,177)(5,0){24}{\line(1,0){3}} +% \multiput(280,50)(5,0){24}{\line(1,0){3}} +% \put(280,184){\makebox(120,10)[c]{\gpart{Kopf}}} +% \put(280,40){\makebox(120,140)[c]{\gpart{Textkörper}}} +% \put(400,140){\line(1,1){45}} +% \put(437,187){\makebox(50,10)[l]{\gpart{druckbarer Bereich}}} +% \put(280,31){\makebox(120,10)[c]{\gpart{Fuß}}} +% \put(370,230){\vector(0,-1){35}}\put(370,30){\vector(0,-1){30}} +% \put(370,195){\vector(0,1){35}}\put(370,0){\vector(0,1){30}} +% \put(380,197){\makebox(0,30)[lc]{|oben|}} +% \put(380,0){\makebox(0,30)[lc]{|unten|}} +% \end{picture}} +% \caption[Ein Effekt von \texttt{includehead} und \texttt{includefoot}.]{% +% \begin{minipage}[t]{.8\textwidth}\raggedright\small +% |includehead| und |includefoot| schließen den Kopf und den Fuß mit +% in den \gpart{total body} (druckbaren Bereich) ein. \textbf{(a)} |height| $=$ |textheight| (Standard). +% \textbf{(b)} |height| $=$ |textheight| $+$ |headheight| $+$ |headsep| $+$ +% |footskip|, wenn |includehead| und |includefoot| aktiv. Wenn der obere und untere Rand angegeben ist +% führt |includehead| und |includefoot| dazu, dass die |Texthöhe| verringert wird. +% \end{minipage}} +% \label{fig:includes} +% \end{figure} +% +% Die |Breite| und |Höhe| des druckbaren Bereichs wird definiert: +% \begin{eqnarray} +% \label{eq:width} +% |width| &:=& |textwidth| \quad( +\> |marginparsep|* + |marginparwidth|** )\\ +% |height| &:=& |textheight| \quad(+\> |headheight|*** + |headsep|**** + |footskip|***** ) +% \label{eq:height} +% \end{eqnarray} +% * Randnotiztrennung +% ** Randnotizbreite +% *** Kopfhöhe +% **** Kopftrennung +% ***** Fußbereich\\ +% In Gleichung (\ref{eq:width}) ist standardmäßig |width:=textwidth|, +% während |marginparsep| und |marginparwidth| nur in der |width (Breite)| enthalten sind, +% wenn die |includemp| Option auf |true| gesetzt ist. +% In Gleichung (\ref{eq:height}) ist standardmäßig |height:=textheight|. +% Falls |includehead| auf |true| gesetzt ist, dann werden |headheight| und |headsep| +% als Teil der Höhe (|height|) betrachtet. +% Auf dem selben Weg, nimmt |includefoot| |footskip| in |height| auf. +% Abbildung~\ref{fig:includes} zeigt, wie diese Optionen +% in der vertikalen Richtung arbeiten. +% +% Folglich besteht das Seitenlayout aus drei Teilen (Längen) in jeder +% Richtung: ein Textkörper und zwei Ränder. Wenn zwei der Ränder explizit angegeben sind, +% dann sind die anderen offensichtlich und müssen nicht angegeben werden. +% Abbildung~\ref{fig:Labc} zeigt ein einfaches Modell der Seitenmaße. +% Falls eine Länge |L| gegeben ist und eingeteilt ist in den Textkörper |b|, die Ränder |a| und |c|, dann ist offensichtlich, +% dass +% \begin{equation} +% |L|=|a|+|b|+|c| \label{eq:Labc} +% \end{equation} +% Die Spezifikation mit zwei von drei (|a|, |b| und |c|) festgelegten, ist explizit lösbar. +% Wenn zwei oder mehr der übrigen nicht angegeben sind, kann +% Gleichung~(\ref{eq:Labc}) nicht ohne eine andere Beziehung zwischen ihnen gelöst werden. +% Falls alle Werte angegeben sind, dann muss überprüft werden, ob diese Gleichung ~(\ref{eq:Labc}) genügen, +% da es zu viele Angaben sind oder es ist `überspezifiziert'. +% +% \begin{figure}[h] +% \centering +% {\unitlength=0.8pt +% \begin{picture}(300,60)(0,-5) +% \begingroup\linethickness{5pt} +% \put(0,5){\textcolor{green}{\line(1,0){60}}} +% \put(60,5){\textcolor{black}{\line(1,0){160}}} +% \put(220,5){\textcolor{green}{\line(1,0){80}}} +% \endgroup +% \put(0,15){\makebox(60,10)[b]{|a|}} +% \put(60,0){\line(0,1){20}} +% \put(60,15){\makebox(160,10)[b]{|b|}} +% \put(220,0){\line(0,1){20}} +% \put(220,15){\makebox(80,10)[b]{|c|}} +% \put(0,0){\line(0,1){50}} +% \put(150,35){\vector(-1,0){150}} +% \put(0,40){\makebox(300,10){|L|}} +% \put(150,35){\vector(1,0){150}} +% \put(300,0){\line(0,1){50}} +% \end{picture}} +% \caption{Ein einfaches Modell der Seitenmaße.} +% \label{fig:Labc} +% \end{figure} +% +% Das \Gm\ Paket besitzt einen Autovervollständigungsmechanismus, der vor dem +% Ärger der Angabe von Seitenlayoutmaßen schützt. Zum Beispiel +% können sie das Folgende +% \begin{quote} +% |\usepackage[width=14cm, left=3cm]{geometry}| +% \end{quote} +% auf A4-Papier einstellen. In diesem Fall müssen sie den rechten Rand nicht angeben. +% Die Details der Autovervollständigung werden in Kapitel~\ref{sec:rules} beschrieben. +% +% +% +% +% +% \section{Benutzerschnittstelle} +% +% \subsection{Befehle} +% +% Das \Gm\ Paket unterstützt die folgenden Befehle: +% \begin{itemize}\setlength{\itemsep}{-.5\parsep} +% \item |\geometry{|\meta{Optionen}|}| +% \item |\newgeometry{|\meta{Optionen}|}| und |\restoregeometry| +% \item |\savegeometry{|\meta{Name}|}| und |\loadgeometry{|\meta{Name}|}| +% \end{itemize} +% +% |\geometry{|\meta{Optionen}|}| +% verändert das Seitenlayout entsprechend den angegebenen Optionen im Argument. +% Dieser Befehl, wenn überhaupt, sollte nur in der Präambel platziert werden +% (vor |\begin{document}|). +% +% Das \Gm\ Paket kann als Teil einer Klasse oder eines weiteren Pakets, das sie im Dokument benutzen, +% genutzt werden. Der Befehl \cs{geometry} kann einige der Einstellungen in der Präambel +% überschreiben. Eine mehrfache Nutzung von \cs{geometry} +% ist erlaubt und wird dann mit den verbundenen Optionen ausgeführt. +% Wenn \Gm\ noch nicht geladen ist, können sie nur +% |\usepackage[|\meta{Optionen}|]{geometry}| anstelle von \cs{geometry} nutzen. +% +% \medskip +% |\newgeometry{|\meta{Optionen}|}| +% verändert das Seitenlayout innerhalb des Dokuments. \cs{newgeometry} ist fast +% gleich mit \cs{geometry}, ausgenommen, dass \cs{newgeometry} alle Optionen, +% die von \cs{usepackage} und \cs{geometry} in +% der Präambel vorgenommen wurden, deaktiviert. +% \cs{restoregeometry} +% stellt das Seitenlayout, wie es in der Präambel angegeben ist, wieder her. Dieser Befehl +% besitzt keine Argumente. Lesen sie Kapitel~\ref{sec:midchange} für Details. +% +% \medskip +% |\savegeometry{|\meta{Name}|}| +% speichert die Seitenmaße als \meta{Name}, wo sie +% diesen Befehl nutzen.\\ +% |\loadgeometry{|\meta{Name}|}| +% lädt die Seitenmaße, die als \meta{Name} gespeichert wurden. Lesen sie +% Kapitel~\ref{sec:midchange} für Details. +% +% \subsection{Optionales Argument} +% +% Das \Gm\ Paket übernimmt die \textsf{keyval} Schnittstelle +% `\meta{Schlüssel}=\meta{Wert}' für das optionale Argument von +% \cs{usepackage}, \cs{geometry} und \cs{newgeometry}. +% +% Das Argument beinhaltet eine Liste von kommaseparierten \textsf{keyval} +% Optionen und besitzt folgende Grundregeln: +% \begin{itemize}\setlength{\itemsep}{-.5\parsep} +% \item Mehrfache Zeilen sind erlaubt, während es leere nicht sind. +% \item Jedes Leerzeichen zwischen den Wörtern wird ignoriert. +% \item Die Reihenfolge der Optionen ist grundlegend unabhängig. +% (Es gibt einige Ausnahmen. Lesen sie Kapitel~\ref{sec:optionorder} für Details.) +% \end{itemize} +% Zum Beispiel ist +% \begin{quote} +% |\usepackage[ a5paper , hmargin = { 3cm,|\\ +% | .8in } , height|\\ +% | = 10in ]{geometry}| +% \end{quote} +% äquivalent zu +% \begin{quote} +% |\usepackage[height=10in,a5paper,hmargin={3cm,0.8in}]{geometry}| +% \end{quote} +% Einigen Optionen ist es erlaubt, Unterlisten zu haben, z.\,B. |{3cm,0.8in}|. +% Beachten sie, dass die Reihenfolge der Werte in der Liste bedeutsam ist. +% Die obere Einstellung ist ebenso äquivalent zu Folgendem: +% \begin{quote} +% |\usepackage{geometry}|\\ +% |\geometry{height=10in,a5paper,hmargin={3cm,0.8in}}| +% \end{quote} +% oder +% \begin{quote} +% |\usepackage[a5paper]{geometry}|\\ +% |\geometry{hmargin={3cm,0.8in},height=8in}|\\ +% |\geometry{height=10in}|. +% \end{quote} +% Folglich hängt die mehrfache Nutzung von \cs{geometry} die Optionen aneinander. +% +% \Gm\ unterstützt das Paket +% \textsl{calc}\footnote{CTAN:~\texttt{macros/latex/required/tools}}. +% Zum Beispiel, +% \begin{quote} +% |\usepackage{calc}|\\ +% |\usepackage[textheight=20\baselineskip+10pt]{geometry}| +% \end{quote} +% +% \subsection{Optionstypen} +% \Gm\ Optionen sind in vier Typen eingeteilt: +% +% \begin{enumerate}\itemsep=0pt +% \item \textbf{Wahrheitswerttyp} +% +% Er nimmt einen Wahrheitswert an (|true (wahr)| oder |false (falsch)|). Falls kein Wert angegeben ist, +% wird standardmäßig |true (wahr)| eingesetzt. +% \begin{quote} +% \meta{Schlüssel}|=true|\OR|false|.\\ +% \meta{Schlüssel} ohne Wert ist äquivalent zu +% \meta{Schlüssel}|=true|. +% \end{quote} +% \textit{Beispiele:}~ |verbose=true|, |includehead|, +% |twoside=false|.\\ +% Der Papiername ist eine Ausnahme. Der bevorzugte Papiername sollte ohne Wert +% angegeben werden. Welcher Wert auch immer gegeben ist er wird ignoriert. Zum +% Beispiel ist |a4paper=XXX| äquivalent zu |a4paper|. +% +% \item \textbf{Typ mit einzelnem Wert} +% +% Man benötigt einen zwingenden Wert. +% \begin{quote} +% \meta{Schlüssel}|=|\meta{Wert}. +% \end{quote} +% \textit{Beispiele:}~ |width=7in|, |left=1.25in|, +% |footskip=1cm|, |height=.86\paperheight|. +% +% \item \textbf{Typ mit zwei Werten} +% +% Man benötigt ein Paar von kommagetrennten Werten in geschweiften Klammern. Die zwei Werte können +% zu einem gekürzt werden, wenn beide identisch sind. +% \begin{quote} +% \meta{Schlüssel}|=|\argii{Wert1}{Wert2}.\\ +% \meta{Schlüssel}|=|\meta{Wert} ist äquivalent zu +% \meta{Schlüssel}|=|\argii{Wert}{Wert}. +% \end{quote} +% \textit{Beispiele:}~ |hmargin={1.5in,1in}|, |scale=0.8|, +% |body={7in,10in}|. +% +% \item \textbf{Typ mit drei Werten} +% +% Man benötigt drei zwingende Werte, kommagetrennte Werte in geschweiften Klammern. +% \begin{quote} +% \meta{Schlüssel}|=|\argiii{Wert1}{Wert2}{Wert3} +% \end{quote} +% Jeder Wert muss ein Maß sein oder Null. Falls sie einen leeren Wert angeben +% oder `|*|', dies bedeutet Null, dann wird der übergebene Wert dem Autovervollständigungsmechanismus zugeführt. +% Sie müssen mindestens ein Maß angeben, typischerweise aber zwei. +% Sie können für alle Werte Null einsetzen, +% aber das macht keinen Sinn. +% \textit{Beispiele:}\\ +% \hspace*{2em} |hdivide={2cm,*,1cm}|, |vdivide={3cm,19cm, }|, +% |divide={1in,*,1in}|. +% \end{enumerate} +% +% \section{Details zu Optionen} +% +% Dieses Kapitel beschreibt alle Optionen, die in \Gm{} verfügbar sind. +% Optionen mit einem Dolch $^\dagger$ sind nicht vorhanden +% als Argumente von \cs{newgeometry} (Lesen sie Kapitel~\ref{sec:midchange}). +% +% \subsection{Papiergröße}\label{sec:paper} +% +% Die Optionen unten dienen zum Einstellen der Größe des Papiers/Mediums und der Orientierung. +% \begin{Options} +% \item[\onlypre paper (Papier)\OR papername (Papiername)] ~\\ +% gibt die Papiergröße anhand des Namens an. |paper=|\meta{Papiername}. +% Für besseren Komfort können sie den Papiernamen ohne |paper=| angeben. +% |a4paper| ist beispielsweise äquivalent zu |paper=a4paper|. +% \item[\onlypre \vtop{ +% \hbox{a0paper, a1paper, a2paper, a3paper, a4paper, a5paper, a6paper,} +% \hbox{b0paper, b1paper, b2paper, b3paper, b4paper, b5paper, b6paper,} +% \hbox{c0paper, c1paper, c2paper, c3paper, c4paper, c5paper, c6paper,} +% \hbox{b0j, b1j, b2j, b3j, b4j, b5j, b6j,} +% \hbox{ansiapaper, ansibpaper, ansicpaper, ansidpaper, ansiepaper,} +% \hbox{letterpaper, executivepaper, legalpaper}}]~\\[1ex] +% gibt den Papiernamen an. Der Wert wird ignoriert, sogar wenn einer angegeben wird. +% Beispielsweise hat das Folgende den gleichen Effekt: +% |a5paper|, |a5paper=true|, |a5paper=false| und so weiter. +% |a[0-6]paper|, |b[0-6]paper| und |c[0-6]paper| sind ISO A, B und C +% Serien von Papiergrößen. +% Die JIS (Japanischer Industriestandard) A-Serien ist identisch zu den +% ISO A-Serien, aber die JIS B-Serien sind von den ISO B-Serien verschieden. +% |b[0-6]j| sollte für die JIS B-Serien genutzt werden. +% \item[\onlypre screen] eine spezielle Papiergröße mit (B,H) = (225\,mm,180\,mm). +% Für Präsentationen mit dem PC und einem Beamer kann ``|screen,centering|'', +% in Verbindung mit `slide' in der Dokumentklasse nützlich sein. +% \item[\onlypre paperwidth] Breite des Papiers. |paperwidth=|\meta{Länge}. +% \item[\onlypre paperheight] Höhe des Papiers. |paperheight=|\meta{Länge}. +% \item[\onlypre papersize] Breite und Höhe des Papiers. +% |papersize=|\argii{Breite}{Höhe} oder |papersize=|\meta{Länge}. +% \item[\onlypre landscape] wechselt die Papierorientierung in den Landschaftsmodus. +% \item[\onlypre portrait] wechselt die Papierorientierung in den Portraitsmodus. +% Dies ist das Gleiche wie |landscape=false|. +% \end{Options} +% +% Die Optionen für den Papiernamen (z.\,B., |a4paper|) und die Orientierung +% (|portrait| und |landscape|) können als Dokumentklassenoptionen benutzt werden. +% Zum Beispiel können sie\\ |\documentclass[a4paper,landscape]{article}| eingeben, +% dann werden |a4paper| und |landscape| auch in \Gm\ abgearbeitet. +% Dies ist ebenso im Fall von |twoside (zweiseitig)| und |twocolumn (zweispaltig)| +% (Lesen sie auch Kapitel~\ref{sec:dimension}). +% +% \subsection{Layoutgröße} +% +% Sie können den Layoutbereich mit den Optionen, die in diesem Kapitel beschrieben sind, ungeachtet der Papiergröße, angeben. +% Die Optionen helfen das angegebene Layout auf unterschiedlichen +% Papiergrößen zu drucken. Wenn sie beispielsweise |a4paper| und |layout=a5paper| nutzen, dann +% benutzt das Paket das `A5' Layout, um die Ränder auf dem `A4' Papier zu berechnen. +% Die Layoutgröße wird genauso groß wie die des Papiers. +% Die Optionen für die Layoutgröße sind mittels \cs{newgeometry} erreichbar, +% sodass sie die Layoutgröße in der Mitte des Dokuments verändern können. +% Die Papiergröße selbst kann so nicht geändert werden. +% Abbildung~\ref{fig:layoutandpaper} zeigt, was die Unterschiede zwischen +% |layout| und |paper| sind. +% \begin{Options} +% \item[layout] gibt die Layoutgröße vom Papiernamen an. +% |layout=|\meta{Papiername}. Alle Papiernamen, die in \Gm\ definiert sind, sind wählbar. +% Lesen sie auch Kapitel~\ref{sec:paper} für mehr Details. +% \item[layoutwidth] Breite des Layouts. |layoutwidth=|\meta{Länge}. +% \item[layoutheight] Höhe des Layouts. |layoutheight=|\meta{Länge}. +% \item[layoutsize] Breite und Höhe des Layouts. +% |layoutsize=|\argii{Breite}{Höhe} oder |layoutsize=|\meta{Länge}. +% \item[layouthoffset] gibt den horizontalen Versatz von der linken Kante des Papiers an. +% |layouthoffset=|\meta{Länge}. +% \item[layoutvoffset] gibt den vertikalen Versatz von der oberen Kante des Papiers an. +% |layoutvoffset=|\meta{Länge}. +% \item[layoutoffset] gibt beides, horizontalen und vertikalen Versatz an. +% |layoutoffset=|\argii{hoffset}{voffset} oder |layoutsize=|\meta{Länge}. +% \end{Options} +% \begin{figure}[h] +% \centering\small +% {\unitlength=.6pt +% \begin{picture}(450,250)(0,-10) +% \put(20,0){\makebox(168,12)[r]{\gpart{Papier}}} +% \put(20,0){\framebox(170,230){}} +% \put(21,40){\dashbox{3}(140,189){}} +% \put(21,28){\makebox(140,12)[r]{\gpart{Layout}}} +% \put(40,50){\makebox(100,10){\gpart{Fuß}}} +% \put(40,50){\line(1,0){100}} +% \put(40,65){\framebox(100,125){\gpart{Textbereich}}} +% \put(40,200){\framebox(100,10){\gpart{Kopf}}} +% \put(20,230){\makebox(140,20){|Layoutbreite|}} +% \put(40,240){\vector(-1,0){20}} +% \put(140,240){\vector(1,0){20}} +% \put(10,145){\vector(0,1){85}} +% \put(15,125){\makebox(0,20)[r]{|Layouthöhe|}} +% \put(10,125){\vector(0,-1){85}} +% \put(280,0){\makebox(168,12)[r]{\gpart{Papier}}} +% \put(280,0){\framebox(170,230){}} +% \put(293,35){\dashbox{3}(140,189){}} +% \put(293,23){\makebox(140,12)[r]{\gpart{Layout}}} +% \put(312,45){\makebox(100,10){\gpart{Fuß}}} +% \put(312,45){\line(1,0){100}} +% \put(312,60){\framebox(100,125){\gpart{Textbereich}}} +% \put(312,195){\framebox(100,10){\gpart{Kopf}}} +% \put(235,230){\makebox(80,20)[l]{|layouthoffset|}} +% \put(260,210){\vector(1,0){20}} +% \put(308,210){\vector(-1,0){15}} +% \put(260,210){\line(-1,2){10}} +% \put(355,230){\makebox(100,20){|layoutvoffset|}} +% \put(350,250){\vector(0,-1){20}} +% \put(350,209){\vector(0,1){15}} +% \end{picture}} +% \caption[Layout und Papier]{% +% \begin{minipage}[t]{.7\textwidth}\raggedright\small +% Die Maße sind mit denen der Layoutgröße verwandt. Beachte, dass die Layoutgrößenvorgaben +% zu der Größe des Papiers korrespondieren, sodass sie die meisten layoutbezogenen Optionen +% nicht explizit angeben müssen. +% \end{minipage}} +% \label{fig:layoutandpaper} +% \end{figure} +% +% \subsection{Größe des Textbereichs}\label{sec:body} +% +% Die Optionen, die die Größe des \gpart{druckbaren Bereichs} angeben, werden in diesem Kapitel beschrieben. +% +% \begin{Options} +% \item[hscale] +% Verhältnis der Breite des \gpart{druckbaren Bereichs} zur \cs{paperwidth (Papierbreite)}. +% |hscale=|\meta{h-scale}, z.\,B. |hscale=0.8| ist äquivalent zu +% |width=0.8|\cs{paperwidth (Papierbreite)}. (|0.7| ist der Standard) +% \item[vscale] +% Verhältnis der Höhe des \gpart{druckbaren Bereichs} zur \cs{paperheight (Papierhöhe)}, z.\,B. +% |vscale=|\meta{v-scale}. (|0.7| ist der Standard) |vscale=0.9| ist äquivalent +% zu |height=0.9|\cs{paperheight (Papierhöhe)}. +% \item[scale] Verhältnis des \gpart{druckbaren Bereichs} zum Papier. +% |scale=|\argii{h-scale}{v-scale} oder |scale=|\meta{scale}. +% (|0.7| ist der Standard) +% \item[width\OR totalwidth] ~\\ +% Breite des \gpart{druckbaren Bereichs}. |width=|\meta{Länge} oder +% |totalwidth=|\meta{Länge}. Dieses Maß korrespondiert zur |textwidth (Textbreite)|, +% aber wenn |includemp| auf |true| gesetzt ist, dann ist die |Breite| $\ge$ |Textbreite|, +% weil die |Breite| die Breite der Randnotizen beinhaltet. +% Wenn die |Textbreite| und die |Breite| gleichzeitig angegeben werden, +% dann hat die |Textbreite| eine höhere Priorität als die |Breite|. +% \item[height\OR totalheight] ~\\ +% Höhe des \gpart{druckbaren Bereichs}, wobei Kopf und Fuß standardmäßig ausgeschlossen sind. +% Wenn |includehead| oder |includefoot| gesetzt ist, dann beinhaltet die |height (Höhe)| +% den Kopf oder den Fuß der Seite sowie die |textheight (Texthöhe)|. +% |height=|\meta{Länge} oder |totalheight=|\meta{Länge}. Falls beide, +% |textheight (Texthöhe)| und |height (Höhe)|, angegeben sind, wird die |height (Höhe)| ignoriert werden. +% \item[total] Breite und Höhe des \gpart{druckbaren Bereichs}.\\ +% |total=|\argii{Breite}{Höhe} oder |total=|\meta{Länge}. +% \item[textwidth] gibt die \cs{textwidth (Textbreite)}, die Breite des \gpart{Körpers} +% (der Textbereich) an. |textwidth=|\meta{Länge}. +% \item[textheight] gibt die \cs{textheight (Texthöhe)}, die Höhe des +% \gpart{Körpers} (der Textkörper) an. |textheight=|\meta{Länge}. +% \item[text\OR body] gibt beides, die \cs{textwidth (Textbreite)} und \cs{textheight (Texthöhe)} +% des Körpers der Seite an. |body=|\argii{Breite}{Höhe} oder +% |text=|\meta{Länge}. +% \item[lines] erlaubt dem Benutzer, die \cs{textheight (Texthöhe)} durch die Anzahl +% der Zeilen anzugeben. |lines|=\meta{ganzzahliger Wert}. +% \item[includehead] schließt den Kopf der Seite, die \cs{headheight (Kopfhöhe)} +% und \cs{headsep (Kopftrennung)} in den \gpart{druckbaren Bereich} ein. Diese Option ist in den Voreinstellungen durch +% |false| deaktiviert. Es ist das Gegenteil von |ignorehead|. Betrachten sie auch +% Abbildung~\ref{fig:includes} und Abbildung~\ref{fig:modes}. +% \item[includefoot] schließt den Fuß der Seite, \cs{footskip (Fußbereich)}, +% in den \gpart{druckbaren Bereich} ein. Es ist das Gegenteil von |ignorefoot|. +% Die Voreinstellung ist |false| (deaktiviert). Betrachten sie auch Abbildung~\ref{fig:includes} und +% Abbildung~\ref{fig:modes}. +% \item[includeheadfoot]~\\ +% setzt beides, |includehead| und |includefoot|, auf |true|, dies ist das Gegenteil +% von |ignoreheadfoot|. Betrachten sie auch Abbildung~\ref{fig:includes} und +% Abbildung~\ref{fig:modes}. +% \item[includemp] schließt die Randnotizen, die \cs{marginparwidth (Randnotizbreite)} +% und \cs{marginparsep (Randnotiztrennung)} in den \gpart{Körper} ein, wenn die horizontalen Maße +% berechnet werden. +% \item[includeall] setzt beides, |includeheadfoot| und |includemp| auf +% |true| (aktiv). Betrachten sie auch Abbildung~\ref{fig:modes}. +% \item[ignorehead] missachtet den Kopf der Seite, +% |headheight (Kopfhöhe)| und |headsep (Kopftrennung)|, sind ausschlaggebend für das vertikale Layout, aber diese ändern +% dessen Längen nichts. Es ist äquivalent zu |includehead=false|. Diese Option ist mit +% |true| voreingestellt. Lesen sie auch |includehead|. +% \item[ignorefoot] missachtet den Fuß der Seite, der |footskip (Fußbereich)|, +% ist ausschlaggebend für das vertikale Layout, aber dies ändert die Länge nicht. +% Diese Voreinstellung der Option ist |true|. Lesen sie auch |includefoot|. +% \item[ignoreheadfoot]~\\ setzt beides, |ignorehead| und |ignorefoot| +% auf |true|. Lesen sie auch |includeheadfoot|. +% \item[ignoremp] vernachlässigt die Randnotizen bei der Berechnung der horizontalen +% Ränder (der Standard ist |true|). Wenn die Randnotizen die Seite überfüllen, +% dann wird eine Warnmeldung angezeigt werden, wenn |verbose=true| aktiviert ist. +% Sehen sie auch |includemp| und Abbildung~\ref{fig:modes}. +% \item[ignoreall] setzt beides, |ignoreheadfoot| und |ignoremp| auf |true|. +% Lesen sie auch |includeall|. +% \item[heightrounded]~\\ +% Diese Option rundet die \cs{textheight (Texthöhe)}, um \textit{n}-Mal mehr (\textit{n}: +% ist eine ganze Zahl) \cs{baselineskip} plus \cs{topskip}, um +% ``underfull vbox'' in manchen Fällen zu vermeiden. Zum Beispiel, wenn die \cs{textheight (Texthöhe)} +% 486pt ist, mit \cs{baselineskip} 12pt und \cs{topskip} 10pt, dann +% \begin{quote} +% $(39\times12\textrm{pt}+10\textrm{pt}=)\: 478\textrm{pt} +% < 486\textrm{pt} < +% 490\textrm{pt} \:(=40\times12\textrm{pt}+10\textrm{pt})$, +% \end{quote} +% als Ergebnis wird die \cs{textheight (Texthöhe)} auf 490\,pt aufgerundet. |heightrounded=false| +% ist voreingestellt. +% \end{Options} +% +% Abbildung~\ref{fig:modes} illustriert die verschiedenen Layouttypen mit den verschiedenen Layoutmodi. +% Die Maße für einen Kopf und einen Fuß können durch den +% |nohead|- oder |nofoot|-Modus kontrolliert werden, dies setzt jede Länge auf 0\,pt. +% Auf der anderen Seite verändern Optionen mit dem Präfix |ignore| \textit{nicht} +% die korrespondierenden, ursprünglichen Maße. +% +% +% Die folgenden Optionen können den Körper und die Ränder gleichzeitig angeben, mit +% drei kommagetrennten Werten in geschweiften Klammern. +% +% \begin{figure}[h] +% \centering\small +% {\unitlength=.65pt +% \begin{picture}(460,525)(0,0) +% \put( 20,310){\framebox(120,170){}} +% \put( 20,507){\makebox(120,0)[bl]% +% {\textbf{(a)}~|includeheadfoot|}} +% \put( 20,460){\line(1,0){120}}\put( 20,450){\line(1,0){120}} +% \put( 20,330){\line(1,0){120}} +% \put( 20,485){\makebox(120,0)[br]{\gpart{druckbarer Bereich}}} +% \put( 20,335){\makebox(120,0)[bc]{|Textbreite|}} +% \put(150,470){\makebox(0,0)[l]{|headheight|}} +% \put(150,450){\makebox(0,0)[l]{|headsep|}} +% \put(150,390){\makebox(0,0)[l]{|textheight|}} +% \put(150,320){\makebox(0,0)[l]{|Fußbereich|}} +% \put( 10,460){\makebox(120,20)[bc]{\gpart{Kopf}}} +% \put( 10,320){\makebox(120,140)[c]{\gpart{Körper}}} +% \put( 10,310){\makebox(120,10)[c]{\gpart{Fuß}}} +% \put(250,310){\framebox(120,170){}} +% \put(250,507){\makebox(120,0)[bl]% +% {\textbf{(b)}~|includeall|}} +% \put(250,460){\line(1,0){95}}\put(250,450){\line(1,0){95}} +% \put(250,330){\line(1,0){95}}\put(345,330){\line(0,1){120}} +% \put(350,330){\line(0,1){120}}\put(350,450){\line(1,0){20}} +% \put(350,330){\line(1,0){20}} +% \put(250,485){\makebox(120,0)[br]{\gpart{druckbarer Bereich}}} +% \put(250,460){\makebox(95,20)[bc]{\gpart{Kopf}}} +% \put(250,320){\makebox(95,140)[c]{\gpart{Fuß}}} +% \put(385,390){\makebox(95,0)[cl]% +% {\gpart{\shortstack[l]{Rand-\\notiz}}}} +% \put(250,310){\makebox(95,10)[c]{\gpart{Fuß}}} +% \put(250,335){\makebox(95,0)[bc]{|textwidth|}} +% \multiput(360, 390)(4,0){6}{\line(1,0){2}} +% \multiput(348,333)(0,-4){12}{\line(0,1){2}} +% \multiput(360,333)(0,-4){8}{\line(0,1){2}} +% \put(355,292){\makebox(0,0)[bl]{|marginparwidth|}} +% \put(345,275){\makebox(0,0)[bl]{|marginparsep|}} +% \put( 20, 40){\framebox(120,170){}} +% \put( 20,237){\makebox(120,0)[bl]% +% {\textbf{(c)}~|includefoot|}} +% \put( 20, 60){\line(1,0){120}} +% \put( 20,215){\makebox(120,0)[br]{\gpart{druckbarer Bereich}}} +% \put(150,130){\makebox(0,0)[l]{|textheight|}} +% \put(150, 50){\makebox(0,0)[l]{|footskip|}} +% \put( 20, 50){\makebox(120,160)[c]{\gpart{Körper}}} +% \put( 20, 40){\makebox(120,10)[c]{\gpart{Fuß}}} +% \put( 20, 65){\makebox(120,10)[c]{|textwidth|}} +% \put(250, 40){\framebox(120,170){}} +% \put(250,237){\makebox(120,0)[bl]% +% {\textbf{(d)}~|includefoot,includemp|}} +% \put(250, 60){\line(1,0){95}}\put(350, 60){\line(1,0){20}} +% \put(250,215){\makebox(120,0)[br]{\gpart{druckbarer Bereich}}} +% \put(250, 50){\makebox(95,160)[c]{\gpart{Körper}}} +% \put(385,130){\makebox(95,0)[cl]% +% {\gpart{\shortstack[l]{Rand-\\notiz}}}} +% \put(250, 40){\makebox(95,10)[c]{\gpart{Fuß}}} +% \put(250, 65){\makebox(95,0)[bc]{|textwidth|}} +% \put(345, 60){\line(0,1){150}}\put(350, 60){\line(0,1){150}} +% \multiput(360, 130)(4,0){6}{\line(1,0){2}} +% \multiput(348, 63)(0,-4){12}{\line(0,1){2}} +% \multiput(360, 63)(0,-4){8}{\line(0,1){2}} +% \put(355,22){\makebox(0,0)[bl]{|marginparwidth|}} +% \put(345, 5){\makebox(0,0)[bl]{|marginparsep|}} +% \end{picture}} +% \caption[Musterlayout für den \gpart{druckbaren Bereich} mit verschiedenen +% Layoutmodi]{% +% \begin{minipage}[t]{.8\textwidth}\small +% Musterlayouts für den \gpart{druckbaren Bereich} mit verschiedenen Veränderungen. +% (a) |includeheadfoot|, (b) |includeall|, (c) |includefoot| +% und (d) |includefoot,includemp|. +% Wenn |reversemp| auf |true| gesetzt ist, dann werden die Orte +% für die Randnotizen auf jeder Seite getauscht. +% Die Option |twoside| tauscht beides, die Ränder und die Randnotizen auf der Rückseite. +% Beachten sie, dass die Randnotiz gedruckt wird, falls vorhanden, trotz das +% |ignoremp| oder |includemp=false| und Überlauf der Seite, in einigen Fällen. +% \end{minipage}} +% \label{fig:modes} +% \end{figure} +% +% \begin{Options} +% \item[hdivide] horizontale Aufteilung (links,Breite,rechts). +% |hdivide=|\argiii{linker Rand}{Breite}{rechter Rand}. +% Beachten sie, dass sie nicht alle drei Parameter eingeben sollten. +% Die beste Möglichkeit der Nutzung dieser Option ist die Angabe von zwei der drei Parameter und +% das Freilassen des verbliebenen mit Null(nichts) oder `|*|'. Zum Beispiel, wenn sie +% |hdivide={2cm,15cm, }| einstellen, dann wird der Rand von der rechtsseitigen Kante der Seite +% die Rechnung bestimmen |paperwidth-2cm-15cm|. +% \item[vdivide] vertikale Aufteilung (oben,Höhe,unten). +% |vdivide=|\argiii{oberer Rand}{Höhe}{unterer Rand}. +% \item[divide] |divide=|\vargiii{$A$}{$B$}{$C$} wird interpretiert als +% |hdivide=|\vargiii{$A$}{$B$}{$C$} und |vdivide=|\vargiii{$A$}{$B$}{$C$}. +% \end{Options} +% +% \subsection{Randgröße}\label{sec:margin} +% +% Die Optionen zum Spezifizieren der Größe der Ränder sind unten aufgelistet. +% +% \begin{Options} +% \item[left\OR lmargin\OR inner]~\\ +% linker Rand (für einseitige Dokumente) oder innerer Rand (für zweiseitige Dokumente) des +% \gpart{druckbaren Bereichs}. Mit anderen Worten, es ist die Distanz zwischen der linken (inneren) +% Kante des Papiers und der des \gpart{druckbaren Bereichs}. |left=|\meta{Länge}. +% |inner (innen)| hat keine besondere Bedeutung, nur eine alternative für |left| und |lmargin|. +% \item[right\OR rmargin\OR outer]~\\ +% rechter oder äußerer Rand des \gpart{druckbaren Bereichs}. |right=|\meta{Länge}. +% \item[top\OR tmargin] oberer Rand der Seite. |top=|\meta{Länge}. +% Beachten sie, dass diese Option nichts mit dem ursprünglichen Maß +% \cs{topmargin} zu tun hat. +% \item[bottom\OR bmargin]~\\ +% unterer Rand der Seite. |bottom=|\meta{Länge}. +% \item[hmargin] linker und rechter Rand. +% |hmargin=|\argii{linker Rand}{rechter Rand} oder |hmargin=|\meta{Länge}. +% \item[vmargin] oberer und unterer Rand. +% |vmargin=|\argii{oberer Rand}{unterer Rand} oder |vmargin=|\meta{Länge}. +% \item[margin] |margin=|\vargii{$A$}{$B$} ist äquivalent zu +% |hmargin=|\vargii{$A$}{$B$} und |vmargin=|\vargii{$A$}{$B$}. +% |margin=|$A$ wird automatisch erweitert zu |hmargin=|$A$ und |vmargin=|$A$. +% \item[hmarginratio] +% Verhältnis des horizontalen Rands des |linken| (inneren) zum |rechten| (äußeren). +% Der Wert des \meta{Verhältnisses} sollte mit zwei Werten, die durch einen Doppelpunkt getrennt sind, +% angegeben werden. Jeder Wert sollte eine positive ganze Zahl kleiner 100 sein, +% um einen arithmetischen Überlauf zu verhindern, z.\,B. |2:3| anstatt |1:1.5|. +% Das Standardverhältnis ist |1:1| für einseitige Dokumente, |2:3| für zweiseitige. +% \item[vmarginratio] +% Verhältnis des vertikalen Randes, des |oberen| Randes zum |unteren|. Das Standardverhältnis ist |2:3|. +% \item[marginratio\OR ratio]~\\ +% horizontale und vertikale Randverhältnisse. +% |marginratio=|\argii{horizontales Verhältnis}{vertikales Verhältnis} oder +% |marginratio=|\meta{Verhältnis}. +% \item[hcentering] aktiviert die automatische horizontale Zentrierung und ist +% äquivalent zu |hmarginratio=1:1|. Es ist für die Option oneside auf |true| gesetzt. +% Lesen sie auch |hmarginratio|. +% \item[vcentering] aktiviert die automatische vertikale Zentrierung und ist +% äquivalent zu |vmarginratio=1:1|. Diese Option ist standardmäßig auf |false| gesetzt. +% Lesen sie auch |vmarginratio|. +% \item[centering] aktiviert die automatische Zentrierung und ist äquivalent zu +% |marginratio=1:1|. Lesen sie auch |marginratio|. Der Standard ist |false|. +% \item[twoside] wechselt das Layout in den twoside (zweiseitigen) Modus, wobei der linke und der rechte Rand auf der +% Rückseite vertauscht wird. Die Option setzt einen \cs{@twoside} und \cs{@mparswitch} +% Schalter. Lesen sie auch |asymmetric|. +% \item[asymmetric] führt ein zweiseitiges Layout ein, wobei die Ränder nicht getauscht werden +% auf alternativen Seiten (durch die Einstellung \cs{oddsidemargin} zu +% \cs{evensidemargin} |+| |bindingoffset|) und die Randnotizen +% immer auf der selben Seite bleiben. Diese Option kann als Alternative für die +% twoside Option genutzt werden. Lesen sie auch |twoside|. +% \item[bindingoffset]~\\ entfernt einen angegeben Raum +% von der linken Seite bei oneside oder der inneren Seite bei +% twoside. |bindingoffset=|\meta{Länge}. Dies ist nützlich, wenn die Seiten durch eine +% Pressbindung verbunden sind (glued, stitched, stapled \ldots). +% Betrachten sie auch Abbildung~\ref{fig:bindingoffset}. +% \item[hdivide] Siehe Beschreibung im Kapitel~\ref{sec:body}. +% \item[vdivide] Siehe Beschreibung im Kapitel~\ref{sec:body}. +% \item[divide] Siehe Beschreibung im Kapitel~\ref{sec:body}. +% \end{Options} +% \begin{figure}[h] +% \centering\small +% {\unitlength=.65pt +% \begin{picture}(500,270)(0,0) +% \put(20,0){\framebox(170,230){}} +% \put(20,255){\makebox(80,20)[l]{\textbf{a)}~jede Seite für oneside oder}} +% \put(20,240){\makebox(80,20)[l]{\hspace{3ex}eine einzelne Seite für twoside}} +% \put(110,225){\makebox(80,20)[r]{\gpart{Papier}}} +% \put(55,37){\framebox(110,170)[tc]{\gpart{druckbarer Bereich}}} +% \multiput(38,0)(0,7){33}{\line(0,1){4}} +% \put(38,100){\vector(1,0){17}}\put(55,100){\vector(-1,0){17}} +% \put(60,95){\makebox(80,10)[l]{|left|}} +% \put(60,80){\makebox(80,10)[l]{(|inner|)}} +% \put(165,100){\vector(1,0){25}}\put(190,100){\vector(-1,0){25}} +% \put(195,95){\makebox(80,10)[l]{|right|}} +% \put(195,80){\makebox(80,10)[l]{(|outer|)}} +% \put(20,16){\vector(1,0){18}} +% \put(45,10){\makebox(80,10)[bl]{|bindingoffset|}} +% \put(280,255){\makebox(80,20)[l]{\textbf{b)}~ (Rück-) Seiten für twoside}} +% \put(280,0){\framebox(170,230){}} +% \put(370,225){\makebox(80,20)[r]{\gpart{Papier}}} +% \put(305,37){\framebox(110,170)[tc]{\gpart{druckbarer Bereich}}} +% \multiput(432,0)(0,7){33}{\line(0,1){4}} +% \put(280,100){\vector(1,0){25}}\put(305,100){\vector(-1,0){25}} +% \put(310,95){\makebox(80,10)[l]{|outer|}} +% \put(310,80){\makebox(80,10)[l]{(|right|)}} +% \put(415,100){\vector(1,0){17}}\put(432,100){\vector(-1,0){17}} +% \put(373,95){\makebox(80,10)[l]{|inner|}} +% \put(373,80){\makebox(80,10)[l]{(|left|)}} +% \put(450,16){\vector(-1,0){18}} +% \put(330,10){\makebox(80,10)[bl]{|bindingoffset|}} +% \end{picture}} +% \caption[\texttt{bindingoffset} Option]{% +% \begin{minipage}[t]{.8\textwidth}\raggedright\small +% Die Option |bindingoffset| fügt eine angegebene Länge zum inneren Rand hinzu. +% Beachten sie, dass die |twoside| Option die horizontalen Ränder und die Randnotizen +% zusammen mit |bindingoffset| auf jeder Seite tauscht (siehe +% \textbf{b)}), aber die |asymmetric| Option unterdrücke den Tausch der Ränder und der Randnotizen +% (aber |bindingoffset| wird dennoch getauscht). +% \end{minipage}} +% \label{fig:bindingoffset} +% \end{figure} +% +% \subsection{Ursprüngliche Maße}\label{sec:dimension} +% +% Die unteren Optionen überschreiben die ursprünglichen Maße von \LaTeX\ und die Veränderungen für das Seitenlayout +% (Betrachten sie auch die rechte Seite in Abbildung~\ref{fig:layout}). +% +% \begin{Options} +% \item[headheight\OR head]~\\ +% modifiziert die \cs{headheight}, die Höhe des Kopfes. +% |headheight=|\meta{Länge} oder |head=|\meta{Länge}. +% \item[headsep] modifiziert die \cs{headsep}, die Abtrennung zwischen dem Kopfbereich und dem Text +% (body). |headsep=|\meta{Länge}. +% \item[footskip\OR foot]~\\ modifiziert den \cs{footskip}, die Distanzabtrennung zwischen +% der Grundlinie der letzten Zeile des Textes und der Grundlinie des Fußes. +% |footskip=|\meta{Länge} oder |foot=|\meta{Länge}. +% \item[nohead] entfernt den Platz für den Kopf der Seite, dies ist äquivalent zu +% \cs{headheight}|=0pt| und \cs{headsep}|=0pt|. +% \item[nofoot] entfernt den Platz für den Fuß der Seite, dies ist äquivalent zu +% \cs{footskip}|=0\,pt|. +% \item[noheadfoot] ist äquivalent zu |nohead| und |nofoot|, dies bedeutet, dass +% \cs{headheight}, \cs{headsep} und \cs{footskip} alle auf |0pt| eingestellt werden. +% \item[footnotesep] verändert die Maße \cs{skip}\cs{footins}, die Abtrennung zwischen +% dem unteren Ende des Textkörpers und dem oberen Ende des Fußnotentextes. +% \item[marginparwidth\OR marginpar]~\\ +% modifiziert die \cs{marginparwidth}, die Breite der Randnotizen. +% |marginparwidth=|\meta{Länge}. +% \item[marginparsep] modifiziert die \cs{marginparsep}, die Abtrennung zwischen +% dem Körper und den Randnotizen. |marginparsep=|\meta{Länge}. +% \item[nomarginpar] schrumpft den Platz für die Randnotizen auf 0\,pt, dies +% ist äquivalent zu \cs{marginparwidth}|=0pt| und \cs{marginparsep}|=0pt|. +% \item[columnsep] modifiziert die \cs{columnsep}, die Abtrennung zwischen zwei +% Spalten im |twocolumn| Modus. +% \item[hoffset] modifiziert \cs{hoffset}. |hoffset=|\meta{Länge}. +% \item[voffset] modifiziert \cs{voffset}. |voffset=|\meta{Länge}. +% \item[offset] horizontaler und vertikaler Versatz.\\ +% |offset=|\argii{hoffset}{voffset} oder |offset=|\meta{Länge}. +% \item[twocolumn] aktiviert den |twocolumn| Modus mit \cs{@twocolumntrue}. +% |twocolumn=false| bezeichnet den onecolumn Modus (Modus mit einer Spalte) mit \cs{@twocolumnfalse}. +% Anstatt |twocolumn=false|, können sie |onecolumn| angeben (die Vorgabe ist +% |true|) +% \item[onecolumn] arbeitet als |twocolumn=false|. Auf der anderen Seite ist +% |onecolumn=false| äquivalent zu |twocolumn|. +% \item[twoside] aktiviert beides, \cs{@twosidetrue} und \cs{@mparswitchtrue}. +% Lesen sie auch Kapitel~\ref{sec:margin}. +% \item[textwidth] lässt sie die \cs{textwidth (Textbreite)} direkt einstellen. Lesen sie auch Kapitel~\ref{sec:body}. +% \item[textheight] lässt sie die \cs{textheight (Texthöhe)} direkt einstellen. Lesen sie auch Kapitel~\ref{sec:body}. +% \item[reversemp\OR reversemarginpar]~\\ +% sorgt dafür, dass die Randnotizen am (inneren) linken Rand erscheinen, mit +% \cs{@reversemargintrue}. Die Option verändert nichts am |includemp| Modus. +% Diese Option ist mit |false| voreingestellt. +% \end{Options} +% +% \subsection{Treiber}\label{sec:drivers} +% +% Dieses Paket unterstützt die Treiber |dvips|, |dvipdfm|, |pdftex|, |luatex|, |xetex| und +% |vtex|. Sie können auch |dvipdfm| für \textsf{dvipdfmx} einstellen und +% \textsf{xdvipdfmx}. |pdftex| für \textsf{pdflatex}, und |vtex| für die +% V\TeX{} Umgebung. +% Die Treiberoptionen sind exklusiv. Der Treiber kann durch beides eingestellt werden, +% |driver=|\meta{Treibername} oder die direkte Angabe eines Treibers wie |pdftex|. +% Standardmäßig nimmt \Gm\ den Treiber, der am besten zum benutzten System passt. +% Deshalb müssen sie in den meisten Fällen keinen Treiber angeben. +% Wie auch immer, wenn sie |dvipdfm| benutzen wollen, dann sollten sie dies explizit angeben. +% +% \begin{Options} +% \item[\onlypre driver] gibt den Treibernamen mit |driver=|\meta{Treibername} an. +% |dvips|, |dvipdfm|, |pdftex|, |vtex|, |xetex|, |auto| und |none| sind +% als Treibername einsetzbar. Außer den Namen für |auto| und |none| können +% alle Treiber direkt mit dem Namen, ohne |driver=|, angegeben werden. +% |driver=auto| schaltet die automatische Detektion ein, egal was die vorherigen Einstellungen waren. +% |driver=none| schaltet die automatische Detektion ab und es wird kein Treiber gewählt. Dies +% könnte nützlich sein, wenn sie wollen, dass andere Pakete die Treibereinstellungen herausfinden sollen. +% Ein Beispiel: Wenn sie das \textsf{crop} Paket mit \Gm{} nutzen wollen, +% dann sollten sie |\usepackage[driver=none]{geometry}| aufrufen, bevor +% sie das \textsf{crop} Paket aufrufen. +% \item[\onlypre dvips] schreibt die Papiergröße in die dvi Ausgabe, mit dem \cs{special} +% Makro. Wenn sie \textsl{dvips} als DVI-zu-PS Treiber nutzen, dann +% brauchen sie, wenn sie beispielsweise ein Dokument mit |\geometry{a3paper,landscape}| +% auf A3-Papier mit der landscape Orientierung drucken wollen, die Optionen +% ``|-t a3 -t landscape|'' für \textsl{dvips} nicht. +% \item[\onlypre dvipdfm] arbeitet wie |dvips|, ausgenommen die landscape Korrektur. +% Sie können diese Option einschalten, wenn sie \textsf{dvipdfmx} nutzen und +% \textsf{xdvipdfmx}, um die dvi Ausgabe zu erzeugen. +% \item[\onlypre pdftex] setzt \cs{pdfpagewidth} und \cs{pdfpageheight} +% intern. +% \item[\onlypre xetex] ist dasselbe wie |pdftex|, ausgenommen das Ignorieren von +% |\pdf{h,v}origin|, das in \XeLaTeX{} nicht definiert ist. Diese Option wurde in 5. Version eingeführt. +% Beachten sie, dass die `geometry.cfg' in \TeX{} Live, welche die +% automatische Detektionsroutine deaktiviert und |pdftex| einstellt, nicht länger notwendig ist. +% Trotzdem gibt es keine Probleme, sogar wenn die Datei nicht gelöscht wird. +% Anstatt |xetex|, können sie |dvipdfm| angeben, mit \XeLaTeX{}, +% wenn sie die Besonderheiten von dvipdfm nutzen wollen, die \XeTeX{} unterstützt. +% \item[\onlypre vtex] setzt die Maße \cs{mediawidth} und \cs{mediaheight} +% für V\TeX. Wenn dieser Treiber ausgewählt ist (explizit oder automatisch), +% wird \Gm\ den Ausgabemodus (DVI, PDF oder PS), der in V\TeX gewählt ist, selbstständig herausfinden +% und die richtigen Einstellungen für ihn machen. +% \end{Options} +% Wenn der explizit angegebene Treiber nicht zum benutzten Textsatzprogramm passt, +% dann wird der Standardtreiber |dvips| ausgewählt. +% +% \subsection{Sonstige Optionen} +% +% Die sonstigen nützlichen Optionen werden jetzt beschrieben. +% +% \begin{Options} +% \item[\onlypre verbose] zeigt die Parameterergebnisse im Terminal an. +% |verbose=false| (Standard) schreibt diese nur in die Log-Datei. +% \item[\onlypre reset] setzt die Layoutmaße zurück und nimmt die Einstellungen an, +% die vor dem Laden von \Gm\ vorgegeben waren. Die Optionen, die in +% |geometry.cfg| angegeben sind, werden auch entfernt. +% Beachten sie, dass dies nicht |pass| und |mag| mit |truedimen| zurücksetzen kann. +% |reset=false| hat keine Auswirkungen und kann ein vorheriges +% |reset|(|=true|), falls es dies gibt, nicht aufheben. Zum Beispiel, wenn sie +% \begin{quote} +% |\documentclass[landscape]{article}|\\ +% |\usepackage[twoside,reset,left=2cm]{geometry}| +% \end{quote} +% eingeben, mit |\ExecuteOptions{scale=0.9}| in |geometry.cfg|, +% dann bleiben |landscape| und |left=2cm| wirksam +% und |scale=0.9| und |twoside| sind unwirksam. +% \item[\onlypre mag] setzt den Vergrößerungswert (\cs{mag}) und modifiziert automatisch +% \cs{hoffset} und \cs{voffset} entsprechend der Vergrößerung. +% |mag=|\meta{Wert}. Beachten sie, dass \meta{Wert} ein ganzzahliger Wert sein sollte, +% wobei 1000 die Normalgröße ist. Ein Beispiel: |mag=1414| mit |a4paper| +% bietet eine erweiterte Druckgröße in |a3paper|, welches $1.414$ +% (=$\sqrt{2}$) mal größer als |a4paper| ist. Die Vergrößerung der Schriftart benötigt extra +% Speicherplatz. \textbf{Beachten sie, dass die Einstellung über jeder anderen +% Einstellung mit `true' Maßen stehen sollte, solchen Maßen wie |1.5truein|, |2truecm| +% und so weiter.} Lesen sie auch die |truedimen| Option. +% \item[\onlypre truedimen] verändert alle internen expliziten Maßwerte in +% \textit{true} Maße, z.\,B. wird |1in| zu |1truein|. +% Typischerweise wird diese Option zusammen mit der |mag| Option genutzt. Beachten sie, dass +% dies unwirksam gegenüber extern angegebenen Maßen ist. Ein Beispiel: +% Wenn sie ``\texttt{mag=1440, margin=10pt, truedimen}'' einstellen, dann sind die Ränder nicht +% `true' aber vergrößert. Wenn sie exakte Ränder wollen, dann sollten sie stattdessen wie folgt definieren +% ``\texttt{mag=1440, margin=10truept, truedimen}''. +% \item[\onlypre pass] deaktiviert alle geometry Optionen und Berechnungen, +% ausgenommen |verbose| und |showframe|. Es ist unabhängig von der Reihenfolge und kann +% für das Überprüfen des Seitenlayouts der Dokumentklasse, sonstiger Pakete +% und manuellen Einstellungen ohne \Gm\ genutzt werden. +% \item[\onlypre showframe] zeigt sichtbare Ränder um den Textbereich und die Seite +% und die Linien für den Kopf und den Fuß auf der ersten Seite. +% \item[\onlypre showcrop] druckt Schnittmarken auf jede Ecke des benutzerdefinierten +% Layoutbereichs. +% \end{Options} +% +% \section{Verarbeitungsoptionen}\label{sec:process} +% +% \subsection{Reihenfolge des Ladens}\label{sec:loadorder} +% +% Wenn es eine |geometry.cfg| gibt, irgendwo wo es \TeX{} finden kann, dann lädt \Gm\ diese +% zuerst. Ein Beispiel: In |geometry.cfg| können sie +% |\ExecuteOptions{a4paper}| schreiben, welches A4-Format als das Standardpapier angibt. +% Grundlegend können sie alle Optionen, die in \Gm\ definiert sind, mit +% |\ExecuteOptions{}| nutzen. +% +% Die Reihenfolge des Ladens in der Präambel ihres Dokuments ist wie folgt: +% \begin{enumerate} +% \item |geometry.cfg|, wenn sie existiert. +% \item Optionen, die mit |\documentclass[|\meta{Optionen}|]{...}| angegeben werden. +% \item Optionen, die mit |\usepackage[|\meta{Optionen}|]{geometry}| angegeben werden. +% \item Optionen, die mit |\geometry{|\meta{Optionen}|}| angegeben werden. Die jeweilige Option +% kann mehrfach aufgerufen werden. (Die |reset| Option wird alle Optionen, +% die in |\usepackage{geometry}| oder |\geometry| angegeben wurden, +% zurücksetzen.) +% \end{enumerate} +% +% \subsection{Reihenfolge der Optionen}\label{sec:optionorder} +% +% Die Spezifikation der \Gm\ Optionen ist unabhängig von der Reihenfolge +% und überschreibt die vorherigen gleichartigen Einstellungen. +% Ein Beispiel: +% \begin{center} +% |[left=2cm, right=3cm]| ist äquivalent zu +% |[right=3cm, left=2cm]|. +% \end{center} +% Der mehrfache Aufruf der Optionen überschreibt die jeweiligen vorherigen +% Einstellungen. Auch hier ein Beispiel: +% \begin{center} +% |[verbose=true, verbose=false]| das Ergebnis ist |verbose=false|. +% \end{center} +% |[hmargin={3cm,2cm}, left=1cm]| ist das Gleiche wie |hmargin={1cm,2cm}|, +% wobei der linke (oder innere) Rand durch |left=1cm| überschrieben wird. +% +% |reset| und |mag| sind Ausnahmen. +% Die |reset| Option entfernt alle geometry Optionen (ausgenommen |pass|) +% davor. Wenn sie +% \begin{quote} +% |\documentclass[landscape]{article}|\\ +% |\usepackage[margin=1cm,twoside]{geometry}|\\ +% |\geometry{a5paper, reset, left=2cm}| +% \end{quote} +% einstellen, dann werden |margin=1cm| (Rand), |twoside| und |a5paper| entfernt und +% ist gelegentlich äquivalent zu +% \begin{quote} +% |\documentclass[landscape]{article}|\\ +% |\usepackage[left=2cm]{geometry}| +% \end{quote} +% +% Die |mag| Option sollte vor jeder anderen Einstellungen mit +% `true' Länge, solche wie |left=1.5truecm|, |width=5truein| und so weiter, stehen. +% Die |\mag| Option kann vor dem Aufruf dieses Pakets stehen. +% +% \subsection{Priorität}\label{sec:priority} +% +% Es gibt verschiedene Wege die Maße des \gpart{Körpers} einzustellen: +% |scale|, |total|, |text| und |lines|. Das \Gm\ Paket gibt den konkreteren Spezifikationen +% eine höhere Priorität. Hier ist die Prioritätsregel +% für den \gpart{Textkörper}. +% \[\begin{array}{c} +% \textrm{Priorität:}\qquad\textrm{niedrig}\quad +% \longrightarrow\quad\textrm{hoch}\\[1em] +% \left\{\begin{array}{l}|hscale|\\|vscale|\\|scale| +% \end{array}\right\} < +% \left\{\begin{array}{l}|width|\\|height|\\|total| +% \end{array}\right\} < +% \left\{\begin{array}{l}|textwidth|\\|textheight| +% \\|text|\end{array}\right\} < |lines|. +% \end{array}\] +% Ein Beispiel: +% \begin{quote} +% |\usepackage[hscale=0.8, textwidth=7in, width=18cm]{geometry}| +% \end{quote} +% ist das Gleiche wie |\usepackage[textwidth=7in]{geometry}|. Ein weiteres Beispiel: +% \begin{quote} +% |\usepackage[lines=30, scale=0.8, text=7in]{geometry}| +% \end{quote} +% resultiert in \texttt{[lines=30, textwidth=7in]}. +% +% \subsection{Standards}\label{sec:defaults} +% +% Dieses Kapitel summiert die Standardeinstellungen für die automatische Vervollständigung, +% die später beschrieben wird. +% +% Das Standardverhältnis für den vertikalen Rand ist $2/3$, namentlich, +% \begin{equation} +% |top| : |bottom| = 2 : 3 \qquad\textit{Standard}. +% \end{equation} +% Was den horizontalen Rand betrifft, hängen die Standardwerte davon ab, +% ob das Dokument einseitig oder zweiseitig ist, +% \begin{equation} +% |left|\;(|inner|) : |right|\;(|outer|) +% = \left\{ \begin{array}{ll} +% 1 : 1 \qquad\textit{Standard für oneside},\\ +% 2 : 3 \qquad\textit{Standard für twoside}. +% \end{array}\right. +% \end{equation} +% Offensichtlich ist, dass der Standard für den horizontalen Rand für einseitig (oneside) `centering' ist. +% +% Das \Gm\ Paket besitzt folgende Standardeinstellungen für +% \textit{onesided (einseitige)} Dokumente: +% \begin{itemize}\setlength{\itemsep}{-.5\parsep} +% \item |scale=0.7| (\gpart{Textkörper} ist $0.7 \times \gpart{Papier}$) +% \item |marginratio={1:1, 2:3}| (1:1 für horizontal und 2:3 für vertikale Ränder) +% \item |ignoreall| (der Kopf, der Fuß, die Randnotizen sind ausgeschlossen, +% wenn die Größe des \gpart{Körpers (body)} berechnet wird.) +% \end{itemize} +% Für \textit{twosided (zweiseitige)} Dokumente mit der |twoside| Option, ist die Standardeinstellung +% die gleiche, wie bei \textit{onesided (einseitigen)}, ausgenommen, dass das horizontale Randverhältnis +% auf |2:3| gesetzt wird. +% +% Zusätzliche Optionen überschreiben die vorher angegebenen Maße.\\ +% +% \subsection{Autovervollständigung} \label{sec:rules} +% +% Abbildung~\ref{fig:specrule} zeigt schematisch, wie viele Spezifikationsmuster +% existieren und wie sie die Zweideutigkeiten der Spezifikationen lösen können. +% Jede Achse zeigt die Anzahl der Längen, +% die explizit für den Körper und die Ränder angegeben werden müssen. \Ss($m$,$b$) zeigt die +% Spezifikation mit einer Menge an Zahlen $(\gpart{Rand},\gpart{Körper})=(m,b)$. +% +% Ein Beispiel: Die Spezifikation |width=14cm, left=3cm| ist kategorisiert in +% \Ss(1,1), welches eine ad\-äquate Spezifikation ist. Wenn sie +% |right=4cm| hinzufügen, dann wird es \Ss(2,1) sein und überspezifiziert. +% Wenn nur |width=14cm| gegeben ist, dann ist es in \Ss(0,1) unterspezifiziert. +% +% Das \Gm\ Paket besitzt einen Autovervollständigungsmechanismus, der, wenn +% die Layoutparameter unter- oder überspezifiziert sind, +% die Unstimmigkeiten herausarbeitet und dann die Standards nutzt und andere +% Verhältnisse. Hier sind die Spezifikationen und die Vervollständigungsregeln. +% +% \begin{figure}[h] +% \centering +% {\unitlength=1pt +% \begin{picture}(400,150)(40,0) +% \put(1,49){\makebox(90,49)[r]{\large 0}} +% \put(1,1){\makebox(70,99)[r]{\large \gpart{Textkörper}}} +% \put(1,1){\makebox(90,49)[r]{\large 1}} +% \put(100,100){\makebox(99,20){\large 0}} +% \put(100,50){\framebox(99,49){}} +% \put(100,80){\makebox(99,15){\Ss(0,0)}} +% \put(100,50){\makebox(99,49){benutze |scale|}} +% {\linethickness{1pt}% +% \put(150,35){\line(0,1){30}} +% \put(150,35){\line(-1,3){4}} +% \put(150,35){\line(1,3){4}}} +% \put(100,0){\framebox(99,49){}} +% \put(100,2){\makebox(99,15){\Ss(0,1)}} +% \put(100,0){\makebox(99,49){nutze |marginratio|}} +% \put(200,120){\makebox(99,12){\large \gpart{Rand}}} +% \put(200,100){\makebox(99,20){\large 1}} +% \put(200,50){\framebox(99,49){benutze |scale|}} +% \put(200,55){\makebox(89,10)[r]{\scriptsize\shortstack[l]{wenn |ratio|\\angegeben}}} +% \put(200,2){\makebox(99,15){\Ss(1,1)}} +% {\linethickness{1pt}% +% \put(250,35){\line(0,1){30}} +% \put(250,35){\line(-1,3){4}} +% \put(250,35){\line(1,3){4}}} +% {\linethickness{1pt}% +% \put(225,25){\line(-1,0){35}} +% \put(225,25){\line(-3,-1){12}} +% \put(225,25){\line(-3,1){12}}} +% \put(200,80){\makebox(99,15){\Ss(1,0)}} +% \put(200,0){\framebox(99,49){\textcolor{red}{\textit{lösbar}}}} +% \put(300,100){\makebox(99,20){\large 2}} +% \put(300,80){\makebox(99,15){\Ss(2,0)}} +% \put(300,50){\framebox(99,49){\textcolor{red}{\textit{lösbar}}}} +% \put(300,0){\framebox(99,49){vergesse den |body|}} +% \put(300,2){\makebox(99,15){\Ss(2,1)}} +% {\linethickness{1pt}% +% \multiput(290,65)(5,0){6}{\line(1,0){3}} +% \put(320,65){\line(-3,-1){12}} +% \put(320,65){\line(-3,1){12}}} +% {\linethickness{1pt}% +% \put(350,65){\line(0,-1){30}} +% \put(350,65){\line(-1,-3){4}} +% \put(350,65){\line(1,-3){4}}} +% \end{picture}} +% \caption[Spezifikationen und Komplettierungsregeln]{% +% \begin{minipage}[t]{.7\textwidth}\raggedright\small +% Die Spezifikationen \Ss(0,0) zu \Ss(2,1) und die Komplettierungsregeln +% (Pfeile). Spalten- und Zeilennummern bezeichnen die Anzahl der explizit +% angegebenen Längen für den Rand und den Körper. \Ss($m$,$b$) bezeichnet eine +% Spezifikation mit einer Menge an Zahlen $(\gpart{Rand},\gpart{Körper})=(m,b)$. +% \end{minipage}} +% \label{fig:specrule} +% \end{figure} +% +% \begin{Spec} +% \item[\Ss(0,0)] +% Es ist nichts angegeben. Das \Gm\ Paket gibt für den \gpart{body (Körper)} den +% Standard |scale| ($=0.7$) vor. \\ Ein Beispiel: |width (Breite)| wird auf +% $|0.7|\times|layoutwidth|$ eingestellt. Beachten sie, dass standardmäßig die |layoutwidth| +% und |layoutheight| (Layoutbreite und -höhe) gleich der |\paperwidth| und |\paperheight| (Papierbreite und -höhe) +% sein werden. +% Demnach wird \Ss(0,0) zu \Ss(0,1). Siehe auch \Ss(0,1). +% \bigskip +% +% \item[\Ss(0,1)] +% Nur der \gpart{body} ist angegeben, wie z.\,B. |width=7in|, |lines=20|, +% |body={20cm,24cm}|, |scale=0.9| und so weiter. +% Dann setzt \Gm\ die Ränder mithilfe des Randverhältnisses. +% Falls kein Verhältnis angegeben ist, wird das Standardverhältnis genutzt. +% Das Standardverhältnis für das vertikale Randverhältnis ist wie folgt definiert: +% \begin{equation} +% |top| : |bottom| = 2 : 3 \qquad\textit{Standard}. +% \end{equation} +% Was das horizontale Verhältnis betrifft, hängt das Standardverhältnis davon ab, +% ob das Dokument einseitig oder zweiseitig ist. +% \begin{equation} +% |left|\;(|inner|) : |right|\;(|outer|) +% = \left\{ \begin{array}{ll} +% 1 : 1 \qquad\textit{Der Standard bei einseitig},\\ +% 2 : 3 \qquad\textit{Der Standard bei zweiseitig}. +% \end{array}\right. +% \end{equation} +% Wenn zum Beispiel auf A4-Papier die |height=22cm| angegeben ist, +% dann berechnet \Gm\ den |top (oberen)| Rand wie folgt: +% \begin{equation} +% \begin{array}{ll} +% |top| &= ( |layoutheight| - |height| ) \times 2/5 \\ +% &= (29.7-22)\times2/5 = 3.08\textrm{(cm)} +% \end{array} +% \end{equation} +% Demnach sind der |top (obere)| Rand und die |height (Höhe)| des Körpers bestimmt wurden, die +% Spezifikation für die Vertikale wird also zu \Ss(1,1) und +% alle Parameter können gelöst werden. +% \bigskip +% +% \item[\Ss(1,0)] +% Nur ein Rand ist angegeben, wie |bottom=2cm|, |left=1in|, +% |top=3cm| und so weiter. +% +% \begin{itemize} +% \item \textbf{Wenn das Randverhältnis \textit{nicht} angegeben ist}, dann nimmt \Gm\ +% den Standard für |scale| ($=0.7$) für den \gpart{body} an. +% Wenn beispielsweise |top=2.4cm| angegeben ist, dann setzt \Gm\ +% \begin{center} +% $|height|= |0.7|\times|layoutheight|$ +% ~~($=|0.7\paperheight|$ by default), +% \end{center} +% dann wird \Ss(1,0) zu \Ss(1,1), wobei der |bottom| mit +% $|layoutheight|-(|height|+|top|)$ berechnet wird und in 6.51\,cm auf A4-Papier resultiert, +% wenn die Layoutgröße gleich der Papiergröße ist. +% \medskip +% \item \textbf{Wenn das Randverhältnis angegeben ist}, wie +% |hmarginratio={1:2}|, |vratio={3:4}| und so weiter, +% dann setzt \Gm\ die anderen% Ränder mit dem gegebenen Randverhältnis. +% Falls z.\,B. eine Menge an Optionen ``|top=2.4cm,vratio={3:4}|'' spezifiziert wurde, +% dann setzt \Gm\ den |bottom| auf den berechneten Wert von |3.2cm| +% \begin{center} +% $|bottom|= |top|/3\times4 = 3.2\textrm{cm}$ +% \end{center} +% Demnach wird \Ss(1,0) zu \Ss(2,0). +% \end{itemize} +% +% Beachten sie, dass in der Version 4 oder früher das Berechnungsverfahren ein anderes war. +% Deshalb wird, wenn sie in Version 5 und 4 die gleichen Werte eingeben, +% das Ergebnis nicht gleich sein. +% Wenn nur |top=2.4cm| gegeben ist, +% dann bekommen sie in Version 4 oder früher |bottom=2.4cm|, aber sie werden +% |bottom=6.51cm| bei Version 5 erhalten. +% \bigskip +% +% \item[\Ss(2,1)] +% Der \gpart{body (Körper)} und zwei \gpart{margins (Ränder)} sind angegeben, wie z.\,B. +% |vdivide={1in,8in,1.5in}|, ``|left=3cm,width=13cm,right=4cm|'' und +% so weiter. Seit \Gm\ grundsätzlich die Priorität an die \gpart{margins} gibt, +% wenn die Maße überspezifiziert sind, vergisst \Gm\ den \gpart{body} und setzt diesen zurück. +% Ein Beispiel: Wenn sie +% \begin{center} +% |\usepackage[a4paper,left=3cm,width=13cm,right=4cm]{geometry}|, +% \end{center} +% angeben, dann wird die |width (Breite)| auf 14\,cm zurückgesetzt, da die Breite von A4-Papier 21\,cm +% ist. +% \end{Spec} +% +% \section{Verändern des Layouts innerhalb des Dokuments}\label{sec:midchange} +% +% Die Version 5 bietet die neuen Befehle \cs{newgeometry\{$\cdots$\}} und +% und \cs{restoregeometry} an, welche es ihnen erlauben, das Seitenlayout im Dokuments zu verändern. +% Nicht wie \cs{geometry} in der Präambel, +% ist \cs{newgeometry} nur nach |\begin{document}| verfügbar. +% Es setzt alle Optionen zurück, ausgenommen die, +% die sich auf die Papiergröße beziehen -- |landscape|, |portrait| -- und Papiergrößenoptionen +% (wie |papersize|, |paper=a4paper| und so weiter), die nicht +% durch \cs{newgeometry} geändert werden können. +% +% Der Befehl \cs{restoregeometry} sichert das in der Präambel (vor |\begin{document}|) angegebene Seitenlayout, +% welches mit |\usepackage{geometry}|, \cs{geometry} und deren Optionen erzeugt wurde. +% +% Beachten sie, dass beide, \cs{newgeometry} und \cs{restoregeometry}, ein +% |\clearpage| einfügen, da wo sie aufgerufen werden. +% +% Es folgt ein Beispiel für das Verändern des Layouts im Dokument. Das Layout L1 wird wie folgt angegeben: +% |hmargin=3cm| (|left (linker)| und |right (rechter)| Rand sind |3cm| +% lang), dies wird in L2 in |left=3cm|, |right=1cm| und +% |bottom=0.1cm| geändert. Das Layout L1 wird mit \cs{restoregeometry} +% gesichert. +% \begin{center} +% \begin{minipage}{.8\textwidth} +% |\usepackage[hmargin=3cm]{geometry}|\\ +% |\begin{document}|\\ +% \medskip +% \hspace{1cm}\fbox{Layout L1}\\ +% \medskip +% |\newgeometry{left=3cm,right=1cm,bottom=0.1cm}|\\ +% \medskip +% \hspace{1cm}\fbox{Layout L2 (neu)}\\ +% \medskip +% |\restoregeometry|\\ +% \medskip +% \hspace{1cm}\fbox{Layout L1 (wiederhergestellt)}\\ +% \medskip +% |\newgeometry{margin=1cm,includefoot}|\\ +% \medskip +% \hspace{1cm}\fbox{Layout L3 (neu)}\\ +% \medskip +% |\end{document}| +% \end{minipage}% +% \end{center} +% \begin{center} +% \centering\small +% {\unitlength=.8pt +% \begin{picture}(450,180)(0,0) +% \put(0,165){\makebox(95,12){(gesichert)}} +% \put(15,135){\framebox(65,10){\gpart{Kopf}}} +% \put(15,60){\framebox(65,70){\gpart{Textkörper}}} +% \put(15,45){\makebox(65,12){\gpart{Fuß}}} +% \put(15,45){\line(1,0){65}} +% \put(0,20){\framebox(95,140){}} +% \put(0,0){\makebox(95,20){L1}} +% \put(104,90){\circle*{4}} +% \put(110,90){\circle*{4}} +% \put(116,90){\circle*{4}} +% \put(125,165){\makebox(95,12){\cs{newgeometry}}} +% \put(140,135){\framebox(71,10){\gpart{Kopf}}} +% \put(140,33){\framebox(71,97){\gpart{Textkörper}}} +% \put(140,21){\makebox(71,12){\gpart{Fuß}}} +% \put(125,20){\framebox(95,140){}} +% \put(125,0){\makebox(95,20){L2 (neu)}} +% \put(229,90){\circle*{4}} +% \put(235,90){\circle*{4}} +% \put(241,90){\circle*{4}} +% \put(250,165){\makebox(95,12){\cs{restoregeometry}}} +% \put(265,135){\framebox(65,10){\gpart{Kopf}}} +% \put(265,60){\framebox(65,70){\gpart{Textkörper}}} +% \put(265,45){\makebox(65,12){\gpart{Fuß}}} +% \put(265,45){\line(1,0){65}} +% \put(250,20){\framebox(95,140){}} +% \put(250,0){\makebox(95,20){L1 (wiederhergestellt)}} +% \put(354,90){\circle*{4}} +% \put(360,90){\circle*{4}} +% \put(366,90){\circle*{4}} +% \put(375,165){\makebox(95,12){\cs{newgeometry}}} +% \put(383,41){\framebox(80,111){\gpart{Textkörper}}} +% \put(383,29){\makebox(80,12){\gpart{Fuß}}} +% \put(383,29){\line(1,0){80}} +% \put(375,20){\framebox(95,140){}} +% \put(375,0){\makebox(95,20){L3 (neu)}} +% \end{picture}} +% \end{center} +% +% Eine Menge von Befehlen |\savegeometry{|\meta{Name}|}| und +% |\loadgeometry{|\meta{Name}|}| ist nützlich, wenn sie mehrere +% verschiedene Layouts in ihrem Dokument nutzen wollen. +% Ein Beispiel: +% \begin{center} +% \begin{verbatim} +% \usepackage[hmargin=3cm]{geometry} +% \begin{document} +% L1 +% \newgeometry{left=3cm,right=1cm,bottom=0.1cm} +% \savegeometry{L2} +% L2 (neu, gespeichert) +% \restoregeometry +% L1 (wiederhergestellt) +% \newgeometry{margin=1cm,includefoot} +% L3 (neu) +% \loadgeometry{L2} +% L2 (geladen) +% \end{document} +% \end{verbatim} +% \end{center} +% +% \section{Beispiele} +% +% \begin{enumerate} +% \item Ein einseitiges Seitenlayout mit einem zentrierten Textbereich auf dem Papier:\\ +% Das sich anschließende Beispiel hat das gleiche Ergebnis, weil das horizontale Randverhältnis +% auf |1:1| gesetzt ist, wie es bei einseitigen Dokumenten der Standard ist. +% \begin{itemize} +% \item |centering| +% \item |marginratio=1:1| +% \item |vcentering| +% \end{itemize} +% +% \item Ein zweiseitiges Layout mit einem Versatz von 1\,cm für das Binden auf der Innenseite:\\ +% \begin{itemize} +% \item |twoside, bindingoffset=1cm| +% \end{itemize} +% In diesem Fall ist die |textwidth (Textbreite)| kürzer als der Standard bei zweiseitigen Dokumenten +% $0.7\times|1cm|$ ($=|0.7cm|$), weil die Standardbreite des +% \gpart{body (Körpers)} mit |scale=0.7| eingestellt ist, was bedeutet, +% $|width|=|0.7|\times|layoutwidth|$ ($=|0.7\paperwidth|$ standardmäßig). +% +% \item Ein Layout mit linkem, rechtem und oberem Rand (3\,cm, 2\,cm und +% 2.5\,in), mit einer Texthöhe von 40 Zeilen und der Einbeziehung des Kopfes +% und des Fußes auf der Seite in den \gpart{druckbaren Bereich}:\\ +% Die zwei Beispiele haben das gleiche Ergebnis. +% \begin{itemize} +% \item |left=3cm, right=2cm, lines=40, top=2.5in, includeheadfoot| +% \item |hmargin={3cm,2cm}, tmargin=2.5in, lines=40, includeheadfoot| +% \end{itemize} +% +% \item Ein Layout mit einer Höhe des \gpart{druckbaren Bereichs} von 10\,in, einem unteren Rand von +% 2\,cm und der Standardbreite:\\ Der obere Rand wird automatisch berechnet. +% Jede der unteren Lösungen erzeugt das gleiche Layout. +% \begin{itemize} +% \item |vdivide={*, 10in, 2cm}| +% \item |bmargin=2cm, height=10in| +% \item |bottom=2cm, textheight=10in| +% \end{itemize} +% Beachten sie, dass die Maße für \gpart{Kopf} and \gpart{Fuß} von der |Höhe| +% des \gpart{druckbaren Bereichs} ausgeschlossen sind. Ein zusätzliches |includefoot| sorgt dafür, +% dass der \cs{footskip (Fußbereich)} in die |totalheight (Gesamthöhe)| einbezogen wird. Deshalb ist in den unteren zwei +% Fällen die |textheight (Texthöhe)| im vorhergehenden Layout kürzer als in letzterem +% (mit exakt 10\,in) über dem \cs{footskip}. In anderen Worten, +% |height| = |textheight| + |footskip| falls |includefoot=true| ist, in diesem Falle. +% \begin{itemize} +% \item |bmargin=2cm, height=10in, includefoot| +% \item |bottom=2cm, textheight=10in, includefoot| +% \end{itemize} +% +% \item Ein Layout mit einer \glen{textwidth (Textbreite)} und \glen{textheight (Texthöhe)} von 90\% des +% Papiers und einem zentrierten \gpart{body}: +% Jede der unteren Lösungen erzeugt das gleiche Seitenlayout, sofern +% die |layoutwidth (Layoutbreite)| und die |layoutheight (Layouthöhe)| nicht geändert werden, also der Standard beibehalten +% wird. +% \begin{itemize} +% \item |scale=0.9, centering| +% \item |text={.9\paperwidth,.9\paperheight}, ratio=1:1| +% \item |width=.9\paperwidth, vmargin=.05\paperheight, marginratio=1:1| +% \item |hdivide={*,0.9\paperwidth,*}, vdivide={*,0.9\paperheight,*}| +% (für einseitige Dokumente) +% \item |margin={0.05\paperwidth,0.05\paperheight}| +% \end{itemize} +% Sie können ein |heightrounded| hinzufügen, um eine ``underfull vbox warning'' (Warnmeldung) wie +% \begin{quote}\small +% |Underfull \vbox (badness 10000) has occurred while \output is active|. +% \end{quote} +% zu vermeiden. +% Lesen sie auch Kapitel~\ref{sec:body} für eine detaillierte Beschreibung zu |heightrounded|. +% +% \item Ein Layout, bei dem die Breite für die Randnotizen auf 3\,cm eingestellt ist und in +% die Breite des \gpart{druckbaren Bereichs} einbezogen ist:\\ Die folgenden Beispiele erzeugen das Gleiche. +% \begin{itemize} +% \item |marginparwidth=3cm, includemp| +% \item |marginpar=3cm, ignoremp=false| +% \end{itemize} +% +% \item Ein Layout, bei dem der \gpart{body} das ganze Papier (A5-Papier im |landscape| Modus) einnimmt:\\ +% Die folgenden Beispiele sind gleich. +% \begin{itemize} +% \item |a5paper, landscape, scale=1.0| +% \item |landscape=TRUE, paper=a5paper, margin=0pt| +% \end{itemize} +% +% \item Ein Bildschirmgrößenlayout, verwendbar für Präsentationen mit dem PC oder dem Beamer: +% \begin{verbatim} +% \documentclass{slide} +% \usepackage[screen,margin=0.8in]{geometry} +% ... +% \begin{slide} +% ... +% \end{slide}\end{verbatim} +% \item Ein Layout mit vergrößerter Schrift und Zwischenräumen, von A4 auf A3:\\ +% Im unteren Fall ist die sich ergebende Papiergröße A3. +% \begin{itemize} +% \item |a4paper, mag=1414|. +% \end{itemize} +% Wenn sie ein Layout mit doppelt so großer Schriftgröße, aber ohne das +% Verändern der Papiergröße wollen, dann tippen sie +% \begin{itemize} +% \item |letterpaper, mag=2000, truedimen|. +% \end{itemize} +% Sie können die |dvips| Option hinzufügen, das ist nützlich, um eine Vorschau der eigenen +% Papiergröße zu betrachten, die durch |dviout| oder |xdvi| erzeugt wird. +% +% \item Verändern des Layouts auf der ersten Seite und Beibehalten der anderen Einstellungen +% vor dem Laden von \Gm:\\ Benutzen sie die |pass| Option, |\newgeometry| +% und |\restoregeometry|. +% \begin{verbatim} +% \documentclass{book} +% \usepackage[pass]{geometry} +% % 'pass' vernachlässigt das Paketlayout, +% % so wird das originale 'book' Layout gespeichert. +% \begin{document} +% \newgeometry{margin=1cm}% Verändert die Maße der ersten Seite. +% Seite 1 +% \restoregeometry % stellt das 'book' Layout wieder her. +% Seite 2 und folgende +% \end{document}\end{verbatim} +% +% \item Ein komplexes Seitenlayout: +% \begin{verbatim} +% \usepackage[a5paper, landscape, twocolumn, twoside, +% left=2cm, hmarginratio=2:1, includemp, marginparwidth=43pt, +% bottom=1cm, foot=.7cm, includefoot, textheight=11cm, heightrounded, +% columnsep=1cm, dvips, verbose]{geometry}\end{verbatim} +% Probieren sie das Layoutsetzen selbst und überprüfen sie, wie das Ergebnis ist. |:-)| +% \end{enumerate} +% +% \section{Bekannte Probleme} +% \begin{itemize} +% \item Mit |mag| $\neq 1000$ und |truedimen|, +% |paperwidth| und |paperheight| ist die Anzeige im verbose-Modus verschieden von der +% wirklichen Größe der resultierenden PDF. Die PDF ist aber korrekt. +% +% \item Mit |mag| $\neq 1000$, \textit{no} |truedimen| +% und \textsf{hyperref} sollte \textsf{hyperref} vor \Gm\ geladen werden. +% Andernfalls wird die PDF-Größe fehlerhaft. +% +% \item Mit dem \textsf{crop} Paket und |mag| $\neq 1000$ +% arbeitet die |center|-Option von \textsf{crop} nicht gut. +% +% \end{itemize} +% +% \section{Danksagungen} +% Der Autor würdigt hiermit die hilfreichen Vorschläge und Kommentare Vieler (in alphabetischer Reihenfolge ihrer +% Familennamen): +% Jean-Bernard Addor, +% Frank Bennett, +% Alexis Dimitriadis, +% Friedrich Flender, +% Adrian Heathcote, +% Stephan Hennig, +% Morten H\o{}gholm, +% Jonathan Kew, +% James Kilfiger, +% Yusuke Kuroki, +% Jean-Marc Lasgouttes, +% Wlodzimierz Macewicz, +% Frank Mittelbach, +% Eckhard Neber, +% Rolf Niepraschk, +% Hans Fr.~Nordhaug, +% Heiko Oberdiek, +% Keith Reckdahl, +% Peter Riocreux, +% Will Robertson, +% Pablo Rodriguez, +% Nico Schlöemer, +% Perry C.~Stearns, +% Frank Stengel, +% Plamen Tanovski, +% Petr Uher, +% Piet van Oostrum, +% Vladimir Volovich, +% Michael Vulis. +% +% \StopEventually{% +% } +% +% \newgeometry{hmargin={4.8cm,1.2cm}, vmargin={1cm,1cm}, includeheadfoot, marginpar=3.8cm} +% \section{Implementierung} +% \begin{macrocode} +%<*package> +% \end{macrocode} +% This package requires the following packages: +% \textsf{keyval}, \textsf{ifvtex}. +% \begin{macrocode} +\RequirePackage{keyval}% +\RequirePackage{ifvtex}% +% \end{macrocode} +% +% Internal switches are declared here. +% \begin{macrocode} +\newif\ifGm@verbose +\newif\ifGm@landscape +\newif\ifGm@swap@papersize +\newif\ifGm@includehead +\newif\ifGm@includefoot +\newif\ifGm@includemp +\newif\ifGm@hbody +\newif\ifGm@vbody +\newif\ifGm@heightrounded +\newif\ifGm@showframe +\newif\ifGm@showcrop +\newif\ifGm@pass +\newif\ifGm@resetpaper +\newif\ifGm@layout +\newif\ifGm@newgm +% \end{macrocode} +% \begin{macro}{\Gm@cnth} +% \begin{macro}{\Gm@cntv} +% The counters for horizontal and vertical partitioning patterns. +% \begin{macrocode} +\newcount\Gm@cnth +\newcount\Gm@cntv +% \end{macrocode} +% \end{macro}\end{macro} +% \begin{macro}{\c@Gm@tempcnt} +% The counter is used to set number with \textsf{calc}. +% \begin{macrocode} +\newcount\c@Gm@tempcnt +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@bindingoffset} +% The binding offset for the inner margin. +% \begin{macrocode} +\newdimen\Gm@bindingoffset +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@wd@mp} +% \begin{macro}{\Gm@odd@mp} +% \begin{macro}{\Gm@even@mp} +% Correction lengths for \cs{textwidth}, \cs{oddsidemargin} and +% \cs{evensidemargin} in |includemp| mode. +% \begin{macrocode} +\newdimen\Gm@wd@mp +\newdimen\Gm@odd@mp +\newdimen\Gm@even@mp +% \end{macrocode} +% \end{macro}\end{macro}\end{macro} +% \begin{macro}{\Gm@layoutwidth} +% \begin{macro}{\Gm@layoutheight} +% \begin{macro}{\Gm@layouthoffset} +% \begin{macro}{\Gm@layoutvoffset} +% The dimensions for the layout area. +% \begin{macrocode} +\newdimen\Gm@layoutwidth +\newdimen\Gm@layoutheight +\newdimen\Gm@layouthoffset +\newdimen\Gm@layoutvoffset +% \end{macrocode} +% \end{macro}\end{macro}\end{macro}\end{macro} +% \begin{macro}{\Gm@dimlist} +% The token in which \LaTeX{} native dimensions can be stored. +% \begin{macrocode} +\newtoks\Gm@dimlist +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@warning} +% The macro to print warning messages. +% \begin{macrocode} +\def\Gm@warning#1{\PackageWarningNoLine{geometry}{#1}}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ifGm@preamble} +% The macro executes the option given as an argument +% only if it's specified in the preamble, as the options of +% |\usepackage| and/or the argument of |\geometry|. Otherwise, +% the macro would print the warning message and ignores +% the option setting. +% \begin{macrocode} +\def\ifGm@preamble#1{% + \ifGm@newgm + \Gm@warning{`#1': not available in `\string\newgeometry'; skipped}% + \else + \expandafter\@firstofone + \fi}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@Dhratio} +% \begin{macro}{\Gm@Dhratiotwo} +% \begin{macro}{\Gm@Dvratio} +% The default values for the horizontal and vertical +% \textsl{marginalratio} are defined. \cs{Gm@Dhratiotwo} denotes the +% default value of horizontal \textsl{marginratio} for twoside +% page layout with left and right margins swapped on verso pages, +% which is set by |twoside|. +% \begin{macrocode} +\def\Gm@Dhratio{1:1}% = left:right default for oneside +\def\Gm@Dhratiotwo{2:3}% = inner:outer default for twoside. +\def\Gm@Dvratio{2:3}% = top:bottom default +% \end{macrocode} +% \end{macro}\end{macro}\end{macro} +% \begin{macro}{\Gm@Dhscale} +% \begin{macro}{\Gm@Dvscale} +% The default values for the horizontal and vertical \textsl{scale} +% are defined with $0.7$. +% \begin{macrocode} +\def\Gm@Dhscale{0.7}% +\def\Gm@Dvscale{0.7}% +% \end{macrocode} +% \end{macro}\end{macro} +% \begin{macro}{\Gm@dvips}% +% \begin{macro}{\Gm@dvipdfm}% +% \begin{macro}{\Gm@pdftex}% +% \begin{macro}{\Gm@luatex}% +% \begin{macro}{\Gm@xetex}% +% \begin{macro}{\Gm@vtex}% +% The driver names. +% \begin{macrocode} +\def\Gm@dvips{dvips}% +\def\Gm@dvipdfm{dvipdfm}% +\def\Gm@pdftex{pdftex}% +\def\Gm@luatex{luatex}% +\def\Gm@xetex{xetex}% +\def\Gm@vtex{vtex}% +% \end{macrocode} +% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro} +% \begin{macro}{\Gm@true}% +% \begin{macro}{\Gm@false}% +% The macros for |true| and |false|. +% \begin{macrocode} +\def\Gm@true{true}% +\def\Gm@false{false}% +% \end{macrocode} +% \end{macro}\end{macro} +% \begin{macro}{\Gm@orgpw} +% \begin{macro}{\Gm@orgph} +% These macros keep original paper (media) size intact. +% \begin{macrocode} +\edef\Gm@orgpw{\the\paperwidth}% +\edef\Gm@orgph{\the\paperheight}% +% \end{macrocode} +% \end{macro}\end{macro} +% \begin{macro}{\Gm@savelength} +% The macro saves the specified length to |\Gm@restore|. +% \begin{macrocode} +\def\Gm@savelength#1{% + \g@addto@macro\Gm@restore{\expandafter\noexpand\expandafter\csname + #1\endcsname\expandafter=\expandafter\the\csname #1\endcsname\relax}}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@saveboolean} +% The macro saves the specified boolean to |\Gm@restore|. +% \begin{macrocode} +\def\Gm@saveboolean#1{% + \csname if#1\endcsname + \g@addto@macro\Gm@restore{\expandafter\noexpand\csname #1true\endcsname}% + \else + \g@addto@macro\Gm@restore{\expandafter\noexpand\csname #1false\endcsname}% + \fi}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@restore} +% The initialization for |\Gm@restore|. +% \begin{macrocode} +\def\Gm@restore{}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@save} +% The definition of the macro saving the real lengths +% \LaTeX\ options. +% \begin{macrocode} +\def\Gm@save{% + \Gm@savelength{paperwidth}% + \Gm@savelength{paperheight}% + \Gm@savelength{textwidth}% + \Gm@savelength{textheight}% + \Gm@savelength{evensidemargin}% + \Gm@savelength{oddsidemargin}% + \Gm@savelength{topmargin}% + \Gm@savelength{headheight}% + \Gm@savelength{headsep}% + \Gm@savelength{topskip}% + \Gm@savelength{footskip}% + \Gm@savelength{baselineskip}% + \Gm@savelength{marginparwidth}% + \Gm@savelength{marginparsep}% + \Gm@savelength{columnsep}% + \Gm@savelength{hoffset}% + \Gm@savelength{voffset} + \Gm@savelength{Gm@layoutwidth}% + \Gm@savelength{Gm@layoutheight}% + \Gm@savelength{Gm@layouthoffset}% + \Gm@savelength{Gm@layoutvoffset}% + \Gm@saveboolean{@twocolumn}% + \Gm@saveboolean{@twoside}% + \Gm@saveboolean{@mparswitch}% + \Gm@saveboolean{@reversemargin}}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@initnewgm} +% The macro initializes the parameters for layout +% in |\newgeometry|. +% \begin{macrocode} +\def\Gm@initnewgm{% + \Gm@passfalse + \Gm@swap@papersizefalse + \Gm@dimlist={} + \Gm@hbodyfalse + \Gm@vbodyfalse + \Gm@heightroundedfalse + \Gm@includeheadfalse + \Gm@includefootfalse + \Gm@includempfalse + \let\Gm@width\@undefined + \let\Gm@height\@undefined + \let\Gm@textwidth\@undefined + \let\Gm@textheight\@undefined + \let\Gm@lines\@undefined + \let\Gm@hscale\@undefined + \let\Gm@vscale\@undefined + \let\Gm@hmarginratio\@undefined + \let\Gm@vmarginratio\@undefined + \let\Gm@lmargin\@undefined + \let\Gm@rmargin\@undefined + \let\Gm@tmargin\@undefined + \let\Gm@bmargin\@undefined + \Gm@layoutfalse + \Gm@layouthoffset\z@ + \Gm@layoutvoffset\z@ + \Gm@bindingoffset\z@}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@initall} +% This initialization is called as soon as the package is load +% It's also called as soon as |reset| option is specified. +% \begin{macrocode} +\def\Gm@initall{% + \let\Gm@driver\@empty + \let\Gm@truedimen\@empty + \let\Gm@paper\@undefined + \Gm@resetpaperfalse + \Gm@landscapefalse + \Gm@verbosefalse + \Gm@showframefalse + \Gm@showcropfalse + \Gm@newgmfalse + \Gm@initnewgm}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@setdriver} +% The macro sets the specified driver. +% \begin{macrocode} +\def\Gm@setdriver#1{% + \expandafter\let\expandafter\Gm@driver\csname Gm@#1\endcsname}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@unsetdriver} +% The macro unsets the specified driver if it has been set. +% \begin{macrocode} +\def\Gm@unsetdriver#1{% + \expandafter\ifx\csname Gm@#1\endcsname\Gm@driver\let\Gm@driver\@empty\fi}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@setbool} +% \begin{macro}{\Gm@setboolrev} +% The macros for boolean option processing. +% \begin{macrocode} +\def\Gm@setbool{\@dblarg\Gm@@setbool}% +\def\Gm@setboolrev{\@dblarg\Gm@@setboolrev}% +\def\Gm@@setbool[#1]#2#3{\Gm@doif{#1}{#3}{\csname Gm@#2\Gm@bool\endcsname}}% +\def\Gm@@setboolrev[#1]#2#3{\Gm@doifelse{#1}{#3}% + {\csname Gm@#2\Gm@false\endcsname}{\csname Gm@#2\Gm@true\endcsname}}% +% \end{macrocode} +% \end{macro}\end{macro} +% \begin{macro}{\Gm@doif} +% \begin{macro}{\Gm@doifelse} +% \cs{Gm@doif} excutes the third argument |#3| using a boolean value +% |#2| of a option |#1|. \cs{Gm@doifelse} executes the third +% argument |#3| if a boolean option |#1| with its value |#2| |true|, +% and executes the fourth argument |#4| if |false|. +% \begin{macrocode} +\def\Gm@doif#1#2#3{% + \lowercase{\def\Gm@bool{#2}}% + \ifx\Gm@bool\@empty + \let\Gm@bool\Gm@true + \fi + \ifx\Gm@bool\Gm@true + \else + \ifx\Gm@bool\Gm@false + \else + \let\Gm@bool\relax + \fi + \fi + \ifx\Gm@bool\relax + \Gm@warning{`#1' should be set to `true' or `false'}% + \else + #3 + \fi}% +\def\Gm@doifelse#1#2#3#4{% + \Gm@doif{#1}{#2}{\ifx\Gm@bool\Gm@true #3\else #4\fi}}% +% \end{macrocode} +% \end{macro}\end{macro} +% \begin{macro}{\Gm@reverse} +% The macro reverses a bool value. +% \begin{macrocode} +\def\Gm@reverse#1{% + \csname ifGm@#1\endcsname + \csname Gm@#1false\endcsname\else\csname Gm@#1true\endcsname\fi}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@defbylen} +% \begin{macro}{\Gm@defbycnt} +% Macros \cs{Gm@defbylen} and \cs{Gm@defbycnt} can be used to define +% \cs{Gm@xxxx} variables by length and counter respectively +% with \textsf{calc} package. +% \begin{macrocode} +\def\Gm@defbylen#1#2{% + \begingroup\setlength\@tempdima{#2}% + \expandafter\xdef\csname Gm@#1\endcsname{\the\@tempdima}\endgroup}% +\def\Gm@defbycnt#1#2{% + \begingroup\setcounter{Gm@tempcnt}{#2}% + \expandafter\xdef\csname Gm@#1\endcsname{\the\value{Gm@tempcnt}}\endgroup}% +% \end{macrocode} +% \end{macro}\end{macro} +% \begin{macro}{\Gm@set@ratio} +% The macro parses the value of options specifying marginal ratios, +% which is used in \cs{Gm@setbyratio} macro. +% \begin{macrocode} +\def\Gm@sep@ratio#1:#2{\@tempcnta=#1\@tempcntb=#2}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@setbyratio} +% The macro determines the dimension specified by |#4| calculating +% |#3|$\times a / b$, where $a$ and $b$ are given by \cs{Gm@mratio} +% with $a:b$ value. If |#1| in brackets is |b|, $a$ and $b$ are swapped. +% The second argument with |h| or |v| denoting horizontal or vertical +% is not used in this macro. +% \begin{macrocode} +\def\Gm@setbyratio[#1]#2#3#4{% determine #4 by ratio + \expandafter\Gm@sep@ratio\Gm@mratio\relax + \if#1b + \edef\@@tempa{\the\@tempcnta}% + \@tempcnta=\@tempcntb + \@tempcntb=\@@tempa\relax + \fi + \expandafter\setlength\expandafter\@tempdimb\expandafter + {\csname Gm@#3\endcsname}% + \ifnum\@tempcntb>\z@ + \multiply\@tempdimb\@tempcnta + \divide\@tempdimb\@tempcntb + \fi + \expandafter\edef\csname Gm@#4\endcsname{\the\@tempdimb}}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@detiv} +% This macro determines the fourth length(|#4|) from |#1|(\glen{layoutwidth} +% or \glen{layoutheight}), |#2| and |#3|. It is used in +% \cs{Gm@detall} macro. +% \begin{macrocode} +\def\Gm@detiv#1#2#3#4{% determine #4. + \expandafter\setlength\expandafter\@tempdima\expandafter + {\csname Gm@layout#1\endcsname}% + \expandafter\setlength\expandafter\@tempdimb\expandafter + {\csname Gm@#2\endcsname}% + \addtolength\@tempdima{-\@tempdimb}% + \expandafter\setlength\expandafter\@tempdimb\expandafter + {\csname Gm@#3\endcsname}% + \addtolength\@tempdima{-\@tempdimb}% + \ifdim\@tempdima<\z@ + \Gm@warning{`#4' results in NEGATIVE (\the\@tempdima).% + ^^J\@spaces `#2' or `#3' should be shortened in length}% + \fi + \expandafter\edef\csname Gm@#4\endcsname{\the\@tempdima}}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@detiiandiii} +% This macro determines |#2| and |#3| from |#1| with the first argument +% (|#1|) can be |width| or |height|, which is expanded into dimensions +% of paper and total body. It is used in \cs{Gm@detall} macro. +% \begin{macrocode} +\def\Gm@detiiandiii#1#2#3{% determine #2 and #3. + \expandafter\setlength\expandafter\@tempdima\expandafter + {\csname Gm@layout#1\endcsname}% + \expandafter\setlength\expandafter\@tempdimb\expandafter + {\csname Gm@#1\endcsname}% + \addtolength\@tempdima{-\@tempdimb}% + \ifdim\@tempdima<\z@ + \Gm@warning{`#2' and `#3' result in NEGATIVE (\the\@tempdima).% + ^^J\@spaces `#1' should be shortened in length}% + \fi + \ifx\Gm@mratio\@undefined + \expandafter\Gm@sep@ratio\Gm@Dmratio\relax + \else + \expandafter\Gm@sep@ratio\Gm@mratio\relax + \ifnum\@tempcntb>\z@\else + \Gm@warning{margin ratio a:b should be non-zero; default used}% + \expandafter\Gm@sep@ratio\Gm@Dmratio\relax + \fi + \fi + \@tempdimb=\@tempdima + \advance\@tempcntb\@tempcnta + \divide\@tempdima\@tempcntb + \multiply\@tempdima\@tempcnta + \advance\@tempdimb-\@tempdima + \expandafter\edef\csname Gm@#2\endcsname{\the\@tempdima}% + \expandafter\edef\csname Gm@#3\endcsname{\the\@tempdimb}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Gm@detall} +% This macro determines partition of each direction. +% The first argument (|#1|) should be |h| or |v|, the second (|#2|) +% |width| or |height|, the third (|#3|) |lmargin| or |top|, and +% the last (|#4|) |rmargin| or |bottom|. +% \begin{macrocode} +\def\Gm@detall#1#2#3#4{% + \@tempcnta\z@ + \if#1h + \let\Gm@mratio\Gm@hmarginratio + \edef\Gm@Dmratio{\if@twoside\Gm@Dhratiotwo\else\Gm@Dhratio\fi}% + \else + \let\Gm@mratio\Gm@vmarginratio + \edef\Gm@Dmratio{\Gm@Dvratio}% + \fi +% \end{macrocode} +% \cs{@tempcnta} is treated as a three-digit binary value with +% top, middle and bottom denoted |left|(|top|), |width|(|height|) +% and |right|(|bottom|) margins user specified respectively. +% \begin{macrocode} + \if#1h + \ifx\Gm@lmargin\@undefined\else\advance\@tempcnta4\relax\fi + \ifGm@hbody\advance\@tempcnta2\relax\fi + \ifx\Gm@rmargin\@undefined\else\advance\@tempcnta1\relax\fi + \Gm@cnth\@tempcnta + \else + \ifx\Gm@tmargin\@undefined\else\advance\@tempcnta4\relax\fi + \ifGm@vbody\advance\@tempcnta2\relax\fi + \ifx\Gm@bmargin\@undefined\else\advance\@tempcnta1\relax\fi + \Gm@cntv\@tempcnta + \fi +% \end{macrocode} +% Case the value is |000| (=0) with nothing fixed (default): +% \begin{macrocode} + \ifcase\@tempcnta + \if#1h + \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}% + \else + \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}% + \fi + \Gm@detiiandiii{#2}{#3}{#4}% +% \end{macrocode} +% Case |001| (=1) with |right|(|bottom|) fixed: +% \begin{macrocode} + \or + \ifx\Gm@mratio\@undefined + \if#1h + \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}% + \else + \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}% + \fi + \setlength\@tempdimc{\@nameuse{Gm@#4}}% + \Gm@detiiandiii{#2}{#3}{#4}% + \expandafter\let\csname Gm@#2\endcsname\@undefined + \Gm@defbylen{#4}{\@tempdimc}% + \else + \Gm@setbyratio[f]{#1}{#4}{#3}% + \fi + \Gm@detiv{#2}{#3}{#4}{#2}% +% \end{macrocode} +% Case |010| (=2) with |width|(|height|) fixed: +% \begin{macrocode} + \or\Gm@detiiandiii{#2}{#3}{#4}% +% \end{macrocode} +% Case |011| (=3) with both |width|(|height|) and |right|(|bottom|) fixed: +% \begin{macrocode} + \or\Gm@detiv{#2}{#2}{#4}{#3}% +% \end{macrocode} +% Case |100| (=4) with |left|(|top|) fixed: +% \begin{macrocode} + \or + \ifx\Gm@mratio\@undefined + \if#1h + \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}% + \else + \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}% + \fi + \setlength\@tempdimc{\@nameuse{Gm@#3}}% + \Gm@detiiandiii{#2}{#4}{#3}% + \expandafter\let\csname Gm@#2\endcsname\@undefined + \Gm@defbylen{#3}{\@tempdimc}% + \else + \Gm@setbyratio[b]{#1}{#3}{#4}% + \fi + \Gm@detiv{#2}{#3}{#4}{#2}% +% \end{macrocode} +% Case |101| (=5) with both |left|(|top|) and |right|(|bottom|) fixed: +% \begin{macrocode} + \or\Gm@detiv{#2}{#3}{#4}{#2}% +% \end{macrocode} +% Case |110| (=6) with both |left|(|top|) and |width|(|height|) fixed: +% \begin{macrocode} + \or\Gm@detiv{#2}{#2}{#3}{#4}% +% \end{macrocode} +% Case |111| (=7) with all fixed though it is over-specified: +% \begin{macrocode} + \or\Gm@warning{Over-specification in `#1'-direction.% + ^^J\@spaces `#2' (\@nameuse{Gm@#2}) is ignored}% + \Gm@detiv{#2}{#3}{#4}{#2}% + \else\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Gm@clean} +% The macro for setting unspecified dimensions to be \cs{@undefined}. +% This is used by \cs{geometry} macro. +% \begin{macrocode} +\def\Gm@clean{% + \ifnum\Gm@cnth<4\let\Gm@lmargin\@undefined\fi + \ifodd\Gm@cnth\else\let\Gm@rmargin\@undefined\fi + \ifnum\Gm@cntv<4\let\Gm@tmargin\@undefined\fi + \ifodd\Gm@cntv\else\let\Gm@bmargin\@undefined\fi + \ifGm@hbody\else + \let\Gm@hscale\@undefined + \let\Gm@width\@undefined + \let\Gm@textwidth\@undefined + \fi + \ifGm@vbody\else + \let\Gm@vscale\@undefined + \let\Gm@height\@undefined + \let\Gm@textheight\@undefined + \fi + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Gm@parse@divide} +% The macro parses (|h|,|v|)|divide| options. +% \begin{macrocode} +\def\Gm@parse@divide#1#2#3#4{% + \def\Gm@star{*}% + \@tempcnta\z@ + \@for\Gm@tmp:=#1\do{% + \expandafter\KV@@sp@def\expandafter\Gm@frag\expandafter{\Gm@tmp}% + \edef\Gm@value{\Gm@frag}% + \ifcase\@tempcnta\relax\edef\Gm@key{#2}% + \or\edef\Gm@key{#3}% + \else\edef\Gm@key{#4}% + \fi + \@nameuse{Gm@set\Gm@key false}% + \ifx\empty\Gm@value\else + \ifx\Gm@star\Gm@value\else + \setkeys{Gm}{\Gm@key=\Gm@value}% + \fi\fi + \advance\@tempcnta\@ne}% + \let\Gm@star\relax}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Gm@branch} +% The macro splits a value into the same two values. +% \begin{macrocode} +\def\Gm@branch#1#2#3{% + \@tempcnta\z@ + \@for\Gm@tmp:=#1\do{% + \KV@@sp@def\Gm@frag{\Gm@tmp}% + \edef\Gm@value{\Gm@frag}% + \ifcase\@tempcnta\relax% cnta == 0 + \setkeys{Gm}{#2=\Gm@value}% + \or% cnta == 1 + \setkeys{Gm}{#3=\Gm@value}% + \else\fi + \advance\@tempcnta\@ne}% + \ifnum\@tempcnta=\@ne + \setkeys{Gm}{#3=\Gm@value}% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Gm@magtooffset} +% This macro is used to adjust offsets by \cs{mag}. +% \begin{macrocode} +\def\Gm@magtooffset{% + \@tempdima=\mag\Gm@truedimen sp% + \@tempdimb=1\Gm@truedimen in% + \divide\@tempdimb\@tempdima + \multiply\@tempdimb\@m + \addtolength{\hoffset}{1\Gm@truedimen in}% + \addtolength{\voffset}{1\Gm@truedimen in}% + \addtolength{\hoffset}{-\the\@tempdimb}% + \addtolength{\voffset}{-\the\@tempdimb}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Gm@setlength} +% This macro stores \LaTeX{} native dimensions, which are stored and +% set afterwards. +% \begin{macrocode} +\def\Gm@setlength#1#2{% + \let\Gm@len=\relax\let\Gm@td=\relax + \edef\addtolist{\noexpand\Gm@dimlist=% + {\the\Gm@dimlist \Gm@len{#1}{#2}}}\addtolist}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@expandlengths} +% This macro processes \cs{Gm@dimlist}. +% \begin{macrocode} +\def\Gm@expandlengths{% + \def\Gm@td{\Gm@truedimen}% + \def\Gm@len##1##2{\setlength{##1}{##2}}% + \the\Gm@dimlist}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Gm@setsize} +% The macro sets |paperwidth| and |paperheight| dimensions +% using \cs{Gm@setlength} macro. +% \begin{macrocode} +\def\Gm@setsize#1(#2,#3)#4{% + \let\Gm@td\relax + \expandafter\Gm@setlength\csname #1width\endcsname{#2\Gm@td #4}% + \expandafter\Gm@setlength\csname #1height\endcsname{#3\Gm@td #4}% + \ifGm@landscape\Gm@swap@papersizetrue\else\Gm@swap@papersizefalse\fi}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@setpaper@ifpre} +% The macro changes the paper size. +% \begin{macrocode} +\def\Gm@setpaper@ifpre#1{% + \ifGm@preamble{#1}{\def\Gm@paper{#1}\@nameuse{Gm@#1}{paper}}}% +% \end{macrocode} +% \end{macro} +% Various paper size are defined here. +% \begin{macrocode} +\@namedef{Gm@a0paper}#1{\Gm@setsize{#1}(841,1189){mm}}% ISO A0 +\@namedef{Gm@a1paper}#1{\Gm@setsize{#1}(594,841){mm}}% ISO A1 +\@namedef{Gm@a2paper}#1{\Gm@setsize{#1}(420,594){mm}}% ISO A2 +\@namedef{Gm@a3paper}#1{\Gm@setsize{#1}(297,420){mm}}% ISO A3 +\@namedef{Gm@a4paper}#1{\Gm@setsize{#1}(210,297){mm}}% ISO A4 +\@namedef{Gm@a5paper}#1{\Gm@setsize{#1}(148,210){mm}}% ISO A5 +\@namedef{Gm@a6paper}#1{\Gm@setsize{#1}(105,148){mm}}% ISO A6 +\@namedef{Gm@b0paper}#1{\Gm@setsize{#1}(1000,1414){mm}}% ISO B0 +\@namedef{Gm@b1paper}#1{\Gm@setsize{#1}(707,1000){mm}}% ISO B1 +\@namedef{Gm@b2paper}#1{\Gm@setsize{#1}(500,707){mm}}% ISO B2 +\@namedef{Gm@b3paper}#1{\Gm@setsize{#1}(353,500){mm}}% ISO B3 +\@namedef{Gm@b4paper}#1{\Gm@setsize{#1}(250,353){mm}}% ISO B4 +\@namedef{Gm@b5paper}#1{\Gm@setsize{#1}(176,250){mm}}% ISO B5 +\@namedef{Gm@b6paper}#1{\Gm@setsize{#1}(125,176){mm}}% ISO B6 +\@namedef{Gm@c0paper}#1{\Gm@setsize{#1}(917,1297){mm}}% ISO C0 +\@namedef{Gm@c1paper}#1{\Gm@setsize{#1}(648,917){mm}}% ISO C1 +\@namedef{Gm@c2paper}#1{\Gm@setsize{#1}(458,648){mm}}% ISO C2 +\@namedef{Gm@c3paper}#1{\Gm@setsize{#1}(324,458){mm}}% ISO C3 +\@namedef{Gm@c4paper}#1{\Gm@setsize{#1}(229,324){mm}}% ISO C4 +\@namedef{Gm@c5paper}#1{\Gm@setsize{#1}(162,229){mm}}% ISO C5 +\@namedef{Gm@c6paper}#1{\Gm@setsize{#1}(114,162){mm}}% ISO C6 +\@namedef{Gm@b0j}#1{\Gm@setsize{#1}(1030,1456){mm}}% JIS B0 +\@namedef{Gm@b1j}#1{\Gm@setsize{#1}(728,1030){mm}}% JIS B1 +\@namedef{Gm@b2j}#1{\Gm@setsize{#1}(515,728){mm}}% JIS B2 +\@namedef{Gm@b3j}#1{\Gm@setsize{#1}(364,515){mm}}% JIS B3 +\@namedef{Gm@b4j}#1{\Gm@setsize{#1}(257,364){mm}}% JIS B4 +\@namedef{Gm@b5j}#1{\Gm@setsize{#1}(182,257){mm}}% JIS B5 +\@namedef{Gm@b6j}#1{\Gm@setsize{#1}(128,182){mm}}% JIS B6 +\@namedef{Gm@ansiapaper}#1{\Gm@setsize{#1}(8.5,11){in}}% +\@namedef{Gm@ansibpaper}#1{\Gm@setsize{#1}(11,17){in}}% +\@namedef{Gm@ansicpaper}#1{\Gm@setsize{#1}(17,22){in}}% +\@namedef{Gm@ansidpaper}#1{\Gm@setsize{#1}(22,34){in}}% +\@namedef{Gm@ansiepaper}#1{\Gm@setsize{#1}(34,44){in}}% +\@namedef{Gm@letterpaper}#1{\Gm@setsize{#1}(8.5,11){in}}% +\@namedef{Gm@legalpaper}#1{\Gm@setsize{#1}(8.5,14){in}}% +\@namedef{Gm@executivepaper}#1{\Gm@setsize{#1}(7.25,10.5){in}}% +\@namedef{Gm@screen}#1{\Gm@setsize{#1}(225,180){mm}}% +% \end{macrocode} +% +% \begin{key}{Gm}{paper} +% |paper| takes a paper name as its value. +% \begin{macrocode} +\define@key{Gm}{paper}{\setkeys{Gm}{#1}}% +\let\KV@Gm@papername\KV@Gm@paper +% \end{macrocode} +% \end{key} +% \begin{key}{Gm}{a[0-6]paper} +% \begin{key}{Gm}{b[0-6]paper} +% \begin{key}{Gm}{b[0-6]j} +% \begin{key}{Gm}{ansi[a-e]paper} +% \begin{key}{Gm}{letterpaper} +% \begin{key}{Gm}{legalpaper} +% \begin{key}{Gm}{executivepaper} +% \begin{key}{Gm}{screen} +% The following paper names are available. +% \begin{macrocode} +\define@key{Gm}{a0paper}[true]{\Gm@setpaper@ifpre{a0paper}}% +\define@key{Gm}{a1paper}[true]{\Gm@setpaper@ifpre{a1paper}}% +\define@key{Gm}{a2paper}[true]{\Gm@setpaper@ifpre{a2paper}}% +\define@key{Gm}{a3paper}[true]{\Gm@setpaper@ifpre{a3paper}}% +\define@key{Gm}{a4paper}[true]{\Gm@setpaper@ifpre{a4paper}}% +\define@key{Gm}{a5paper}[true]{\Gm@setpaper@ifpre{a5paper}}% +\define@key{Gm}{a6paper}[true]{\Gm@setpaper@ifpre{a6paper}}% +\define@key{Gm}{b0paper}[true]{\Gm@setpaper@ifpre{b0paper}}% +\define@key{Gm}{b1paper}[true]{\Gm@setpaper@ifpre{b1paper}}% +\define@key{Gm}{b2paper}[true]{\Gm@setpaper@ifpre{b2paper}}% +\define@key{Gm}{b3paper}[true]{\Gm@setpaper@ifpre{b3paper}}% +\define@key{Gm}{b4paper}[true]{\Gm@setpaper@ifpre{b4paper}}% +\define@key{Gm}{b5paper}[true]{\Gm@setpaper@ifpre{b5paper}}% +\define@key{Gm}{b6paper}[true]{\Gm@setpaper@ifpre{b6paper}}% +\define@key{Gm}{c0paper}[true]{\Gm@setpaper@ifpre{c0paper}}% +\define@key{Gm}{c1paper}[true]{\Gm@setpaper@ifpre{c1paper}}% +\define@key{Gm}{c2paper}[true]{\Gm@setpaper@ifpre{c2paper}}% +\define@key{Gm}{c3paper}[true]{\Gm@setpaper@ifpre{c3paper}}% +\define@key{Gm}{c4paper}[true]{\Gm@setpaper@ifpre{c4paper}}% +\define@key{Gm}{c5paper}[true]{\Gm@setpaper@ifpre{c5paper}}% +\define@key{Gm}{c6paper}[true]{\Gm@setpaper@ifpre{c6paper}}% +\define@key{Gm}{b0j}[true]{\Gm@setpaper@ifpre{b0j}}% +\define@key{Gm}{b1j}[true]{\Gm@setpaper@ifpre{b1j}}% +\define@key{Gm}{b2j}[true]{\Gm@setpaper@ifpre{b2j}}% +\define@key{Gm}{b3j}[true]{\Gm@setpaper@ifpre{b3j}}% +\define@key{Gm}{b4j}[true]{\Gm@setpaper@ifpre{b4j}}% +\define@key{Gm}{b5j}[true]{\Gm@setpaper@ifpre{b5j}}% +\define@key{Gm}{b6j}[true]{\Gm@setpaper@ifpre{b6j}}% +\define@key{Gm}{ansiapaper}[true]{\Gm@setpaper@ifpre{ansiapaper}}% +\define@key{Gm}{ansibpaper}[true]{\Gm@setpaper@ifpre{ansibpaper}}% +\define@key{Gm}{ansicpaper}[true]{\Gm@setpaper@ifpre{ansicpaper}}% +\define@key{Gm}{ansidpaper}[true]{\Gm@setpaper@ifpre{ansidpaper}}% +\define@key{Gm}{ansiepaper}[true]{\Gm@setpaper@ifpre{ansiepaper}}% +\define@key{Gm}{letterpaper}[true]{\Gm@setpaper@ifpre{letterpaper}}% +\define@key{Gm}{legalpaper}[true]{\Gm@setpaper@ifpre{legalpaper}}% +\define@key{Gm}{executivepaper}[true]{\Gm@setpaper@ifpre{executivepaper}}% +\define@key{Gm}{screen}[true]{\Gm@setpaper@ifpre{screen}}% +% \end{macrocode} +% \end{key}\end{key}\end{key}\end{key}\end{key} +% \end{key}\end{key}\end{key} +% \begin{key}{Gm}{paperwidth} +% \begin{key}{Gm}{paperheight} +% \begin{key}{Gm}{papersize} +% Direct specification for paper size is also possible. +% \begin{macrocode} +\define@key{Gm}{paperwidth}{\ifGm@preamble{paperwidth}{% + \def\Gm@paper{custom}\Gm@setlength\paperwidth{#1}}}% +\define@key{Gm}{paperheight}{\ifGm@preamble{paperheight}{% + \def\Gm@paper{custom}\Gm@setlength\paperheight{#1}}}% +\define@key{Gm}{papersize}{\ifGm@preamble{papersize}{% + \def\Gm@paper{custom}\Gm@branch{#1}{paperwidth}{paperheight}}}% +% \end{macrocode} +% \end{key}\end{key}\end{key} +% \begin{key}{Gm}{layout} +% \begin{key}{Gm}{layoutwidth} +% \begin{key}{Gm}{layoutheight} +% \begin{key}{Gm}{layoutsize} +% Direct specification for layout size is also possible. +% \begin{macrocode} +\define@key{Gm}{layout}{\Gm@layouttrue\@nameuse{Gm@#1}{Gm@layout}}% +\let\KV@Gm@layoutname\KV@Gm@layout +\define@key{Gm}{layoutwidth}{\Gm@layouttrue\Gm@setlength\Gm@layoutwidth{#1}}% +\define@key{Gm}{layoutheight}{\Gm@layouttrue\Gm@setlength\Gm@layoutheight{#1}}% +\define@key{Gm}{layoutsize}{\Gm@branch{#1}{layoutwidth}{layoutheight}}% +% \end{macrocode} +% \end{key}\end{key}\end{key}\end{key} +% \begin{key}{Gm}{landscape} +% \begin{key}{Gm}{portrait} +% Paper orientation setting. +% \begin{macrocode} +\define@key{Gm}{landscape}[true]{\ifGm@preamble{landscape}{% + \Gm@doifelse{landscape}{#1}% + {\ifGm@landscape\else\Gm@landscapetrue\Gm@reverse{swap@papersize}\fi}% + {\ifGm@landscape\Gm@landscapefalse\Gm@reverse{swap@papersize}\fi}}}% +\define@key{Gm}{portrait}[true]{\ifGm@preamble{portrait}{% + \Gm@doifelse{portrait}{#1}% + {\ifGm@landscape\Gm@landscapefalse\Gm@reverse{swap@papersize}\fi}% + {\ifGm@landscape\else\Gm@landscapetrue\Gm@reverse{swap@papersize}\fi}}}% +% \end{macrocode} +% \end{key}\end{key} +% \begin{key}{Gm}{hscale} +% \begin{key}{Gm}{vscale} +% \begin{key}{Gm}{scale} +% These options can determine the length(s) of \gpart{total body} +% giving \textit{scale(s)} against the paper size. +% \begin{macrocode} +\define@key{Gm}{hscale}{\Gm@hbodytrue\edef\Gm@hscale{#1}}% +\define@key{Gm}{vscale}{\Gm@vbodytrue\edef\Gm@vscale{#1}}% +\define@key{Gm}{scale}{\Gm@branch{#1}{hscale}{vscale}}% +% \end{macrocode} +% \end{key}\end{key}\end{key} +% \begin{key}{Gm}{width} +% \begin{key}{Gm}{height} +% \begin{key}{Gm}{total} +% \begin{key}{Gm}{totalwidth} +% \begin{key}{Gm}{totalheight} +% These options give concrete dimension(s) of \gpart{total body}. +% |totalwidth| and |totalheight| are aliases of |width| and |height| +% respectively. +% \begin{macrocode} +\define@key{Gm}{width}{\Gm@hbodytrue\Gm@defbylen{width}{#1}}% +\define@key{Gm}{height}{\Gm@vbodytrue\Gm@defbylen{height}{#1}}% +\define@key{Gm}{total}{\Gm@branch{#1}{width}{height}}% +\let\KV@Gm@totalwidth\KV@Gm@width +\let\KV@Gm@totalheight\KV@Gm@height +% \end{macrocode} +% \end{key}\end{key}\end{key}\end{key}\end{key} +% \begin{key}{Gm}{textwidth} +% \begin{key}{Gm}{textheight} +% \begin{key}{Gm}{text} +% \begin{key}{Gm}{body} +% These options directly sets the dimensions \cs{textwidth} and +% \cs{textheight}. |body| is an alias of |text|. +% \begin{macrocode} +\define@key{Gm}{textwidth}{\Gm@hbodytrue\Gm@defbylen{textwidth}{#1}}% +\define@key{Gm}{textheight}{\Gm@vbodytrue\Gm@defbylen{textheight}{#1}}% +\define@key{Gm}{text}{\Gm@branch{#1}{textwidth}{textheight}}% +\let\KV@Gm@body\KV@Gm@text +% \end{macrocode} +% \end{key}\end{key}\end{key}\end{key} +% \begin{key}{Gm}{lines} +% The option sets \cs{textheight} with the number of lines. +% \begin{macrocode} +\define@key{Gm}{lines}{\Gm@vbodytrue\Gm@defbycnt{lines}{#1}}% +% \end{macrocode} +% \end{key} +% \begin{key}{Gm}{includehead} +% \begin{key}{Gm}{includefoot} +% \begin{key}{Gm}{includeheadfoot} +% \begin{key}{Gm}{includemp} +% \begin{key}{Gm}{includeall} +% The options take the corresponding dimensions as part of +% \gpart{body}. +% \begin{macrocode} +\define@key{Gm}{includehead}[true]{\Gm@setbool{includehead}{#1}}% +\define@key{Gm}{includefoot}[true]{\Gm@setbool{includefoot}{#1}}% +\define@key{Gm}{includeheadfoot}[true]{\Gm@doifelse{includeheadfoot}{#1}% + {\Gm@includeheadtrue\Gm@includefoottrue}% + {\Gm@includeheadfalse\Gm@includefootfalse}}% +\define@key{Gm}{includemp}[true]{\Gm@setbool{includemp}{#1}}% +\define@key{Gm}{includeall}[true]{\Gm@doifelse{includeall}{#1}% + {\Gm@includeheadtrue\Gm@includefoottrue\Gm@includemptrue}% + {\Gm@includeheadfalse\Gm@includefootfalse\Gm@includempfalse}}% +% \end{macrocode} +% \end{key}\end{key}\end{key}\end{key}\end{key} +% \begin{key}{Gm}{ignorehead} +% \begin{key}{Gm}{ignorefoot} +% \begin{key}{Gm}{ignoreheadfoot} +% \begin{key}{Gm}{ignoremp} +% \begin{key}{Gm}{ignoreall} +% These options exclude \gpart{head}, \gpart{foot} +% and \gpart{marginpars} when determining \gpart{body}. +% \begin{macrocode} +\define@key{Gm}{ignorehead}[true]{% + \Gm@setboolrev[ignorehead]{includehead}{#1}}% +\define@key{Gm}{ignorefoot}[true]{% + \Gm@setboolrev[ignorefoot]{includefoot}{#1}}% +\define@key{Gm}{ignoreheadfoot}[true]{\Gm@doifelse{ignoreheadfoot}{#1}% + {\Gm@includeheadfalse\Gm@includefootfalse}% + {\Gm@includeheadtrue\Gm@includefoottrue}}% +\define@key{Gm}{ignoremp}[true]{% + \Gm@setboolrev[ignoremp]{includemp}{#1}}% +\define@key{Gm}{ignoreall}[true]{\Gm@doifelse{ignoreall}{#1}% + {\Gm@includeheadfalse\Gm@includefootfalse\Gm@includempfalse}% + {\Gm@includeheadtrue\Gm@includefoottrue\Gm@includemptrue}}% +% \end{macrocode} +% \end{key}\end{key}\end{key}\end{key}\end{key} +% \begin{key}{Gm}{heightrounded} +% The option rounds \cs{textheight} to n-times of \cs{baselineskip} +% plus \cs{topskip}. +% \begin{macrocode} +\define@key{Gm}{heightrounded}[true]{\Gm@setbool{heightrounded}{#1}}% +% \end{macrocode} +% \end{key} +% \begin{key}{Gm}{hdivide} +% \begin{key}{Gm}{vdivide} +% \begin{key}{Gm}{divide} +% The options are useful to specify partitioning +% in each direction of the paper. +% \begin{macrocode} +\define@key{Gm}{hdivide}{\Gm@parse@divide{#1}{lmargin}{width}{rmargin}}% +\define@key{Gm}{vdivide}{\Gm@parse@divide{#1}{tmargin}{height}{bmargin}}% +\define@key{Gm}{divide}{\Gm@parse@divide{#1}{lmargin}{width}{rmargin}% + \Gm@parse@divide{#1}{tmargin}{height}{bmargin}}% +% \end{macrocode} +% \end{key}\end{key}\end{key} +% +% \begin{key}{Gm}{lmargin} +% \begin{key}{Gm}{rmargin} +% \begin{key}{Gm}{tmargin} +% \begin{key}{Gm}{bmargin} +% \begin{key}{Gm}{left} +% \begin{key}{Gm}{inner} +% \begin{key}{Gm}{innermargin} +% \begin{key}{Gm}{right} +% \begin{key}{Gm}{outer} +% \begin{key}{Gm}{outermargin} +% \begin{key}{Gm}{top} +% \begin{key}{Gm}{bottom} +% These options set \gpart{margins}. +% |left|, |inner|, |innermargin| are aliases of |lmargin|. +% |right|, |outer|, |outermargin| are aliases of |rmargin|. +% |top| and |bottom| are aliases of |tmargin| and |bmargin| respectively. +% \begin{macrocode} +\define@key{Gm}{lmargin}{\Gm@defbylen{lmargin}{#1}}% +\define@key{Gm}{rmargin}{\Gm@defbylen{rmargin}{#1}}% +\let\KV@Gm@left\KV@Gm@lmargin +\let\KV@Gm@inner\KV@Gm@lmargin +\let\KV@Gm@innermargin\KV@Gm@lmargin +\let\KV@Gm@right\KV@Gm@rmargin +\let\KV@Gm@outer\KV@Gm@rmargin +\let\KV@Gm@outermargin\KV@Gm@rmargin +\define@key{Gm}{tmargin}{\Gm@defbylen{tmargin}{#1}}% +\define@key{Gm}{bmargin}{\Gm@defbylen{bmargin}{#1}}% +\let\KV@Gm@top\KV@Gm@tmargin +\let\KV@Gm@bottom\KV@Gm@bmargin +% \end{macrocode} +% \end{key}\end{key}\end{key}\end{key}\end{key} +% \end{key}\end{key}\end{key}\end{key}\end{key} +% \end{key}\end{key} +% \begin{key}{Gm}{hmargin} +% \begin{key}{Gm}{vmargin} +% \begin{key}{Gm}{margin} +% These options are shorthands for setting \gpart{margins}. +% \begin{macrocode} +\define@key{Gm}{hmargin}{\Gm@branch{#1}{lmargin}{rmargin}}% +\define@key{Gm}{vmargin}{\Gm@branch{#1}{tmargin}{bmargin}}% +\define@key{Gm}{margin}{\Gm@branch{#1}{lmargin}{tmargin}% + \Gm@branch{#1}{rmargin}{bmargin}}% +% \end{macrocode} +% \end{key}\end{key}\end{key} +% \begin{key}{Gm}{hmarginratio} +% \begin{key}{Gm}{vmarginratio} +% \begin{key}{Gm}{marginratio} +% \begin{key}{Gm}{hratio} +% \begin{key}{Gm}{vratio} +% \begin{key}{Gm}{ratio} +% Options specifying the margin ratios. +% \begin{macrocode} +\define@key{Gm}{hmarginratio}{\edef\Gm@hmarginratio{#1}}% +\define@key{Gm}{vmarginratio}{\edef\Gm@vmarginratio{#1}}% +\define@key{Gm}{marginratio}{\Gm@branch{#1}{hmarginratio}{vmarginratio}}% +\let\KV@Gm@hratio\KV@Gm@hmarginratio +\let\KV@Gm@vratio\KV@Gm@vmarginratio +\let\KV@Gm@ratio\KV@Gm@marginratio +% \end{macrocode} +% \end{key}\end{key}\end{key} +% \end{key}\end{key}\end{key} +% \begin{key}{Gm}{hcentering} +% \begin{key}{Gm}{vcentering} +% \begin{key}{Gm}{centering} +% Useful shorthands to place \gpart{body} centered. +% \begin{macrocode} +\define@key{Gm}{hcentering}[true]{\Gm@doifelse{hcentering}{#1}% + {\def\Gm@hmarginratio{1:1}}{}}% +\define@key{Gm}{vcentering}[true]{\Gm@doifelse{vcentering}{#1}% + {\def\Gm@vmarginratio{1:1}}{}}% +\define@key{Gm}{centering}[true]{\Gm@doifelse{centering}{#1}% + {\def\Gm@hmarginratio{1:1}\def\Gm@vmarginratio{1:1}}{}}% +% \end{macrocode} +% \end{key}\end{key}\end{key} +% \begin{key}{Gm}{twoside} +% If |twoside=true|, \cs{@twoside} and \cs{@mparswitch} is set to |true|. +% \begin{macrocode} +\define@key{Gm}{twoside}[true]{\Gm@doifelse{twoside}{#1}% + {\@twosidetrue\@mparswitchtrue}{\@twosidefalse\@mparswitchfalse}}% +% \end{macrocode} +% \end{key} +% \begin{key}{Gm}{asymmetric} +% |asymmetric| sets \cs{@mparswitchfalse} and \cs{@twosidetrue} +% A |asymmetric=false| has no effect. +% \begin{macrocode} +\define@key{Gm}{asymmetric}[true]{\Gm@doifelse{asymmetric}{#1}% + {\@twosidetrue\@mparswitchfalse}{}}% +% \end{macrocode} +% \end{key} +% \begin{key}{Gm}{bindingoffset} +% The macro adds the specified space to the inner margin. +% \begin{macrocode} +\define@key{Gm}{bindingoffset}{\Gm@setlength\Gm@bindingoffset{#1}}% +% \end{macrocode} +% \end{key} +% \begin{key}{Gm}{headheight} +% \begin{key}{Gm}{headsep} +% \begin{key}{Gm}{footskip} +% \begin{key}{Gm}{head} +% \begin{key}{Gm}{foot} +% The direct settings of \gpart{head} and/or \gpart{foot} dimensions. +% \begin{macrocode} +\define@key{Gm}{headheight}{\Gm@setlength\headheight{#1}}% +\define@key{Gm}{headsep}{\Gm@setlength\headsep{#1}}% +\define@key{Gm}{footskip}{\Gm@setlength\footskip{#1}}% +\let\KV@Gm@head\KV@Gm@headheight +\let\KV@Gm@foot\KV@Gm@footskip +% \end{macrocode} +% \end{key}\end{key}\end{key}\end{key}\end{key} +% \begin{key}{Gm}{nohead} +% \begin{key}{Gm}{nofoot} +% \begin{key}{Gm}{noheadfoot} +% They are only shorthands to set \gpart{head} and/or \gpart{foot} +% to be |0pt|. +% \begin{macrocode} +\define@key{Gm}{nohead}[true]{\Gm@doifelse{nohead}{#1}% + {\Gm@setlength\headheight\z@\Gm@setlength\headsep\z@}{}}% +\define@key{Gm}{nofoot}[true]{\Gm@doifelse{nofoot}{#1}% + {\Gm@setlength\footskip\z@}{}}% +\define@key{Gm}{noheadfoot}[true]{\Gm@doifelse{noheadfoot}{#1}% + {\Gm@setlength\headheight\z@\Gm@setlength\headsep + \z@\Gm@setlength\footskip\z@}{}}% +% \end{macrocode} +% \end{key}\end{key}\end{key} +% \begin{key}{Gm}{footnotesep} +% The option directly sets a native dimension \cs{footnotesep}. +% \begin{macrocode} +\define@key{Gm}{footnotesep}{\Gm@setlength{\skip\footins}{#1}}% +% \end{macrocode} +% \end{key} +% \begin{key}{Gm}{marginparwidth} +% \begin{key}{Gm}{marginpar} +% \begin{key}{Gm}{marginparsep} +% They directly set native dimensions \cs{marginparwidth} and +% \cs{marginparsep}. +% \begin{macrocode} +\define@key{Gm}{marginparwidth}{\Gm@setlength\marginparwidth{#1}}% +\let\KV@Gm@marginpar\KV@Gm@marginparwidth +\define@key{Gm}{marginparsep}{\Gm@setlength\marginparsep{#1}}% +% \end{macrocode} +% \end{key}\end{key}\end{key} +% \begin{key}{Gm}{nomarginpar} +% The macro is a shorthand for \cs{marginparwidth}|=0pt| and +% \cs{marginparsep}|=0pt|. +% \begin{macrocode} +\define@key{Gm}{nomarginpar}[true]{\Gm@doifelse{nomarginpar}{#1}% + {\Gm@setlength\marginparwidth\z@\Gm@setlength\marginparsep\z@}{}}% +% \end{macrocode} +% \end{key} +% \begin{key}{Gm}{columnsep} +% The option sets a native dimension \cs{columnsep}. +% \begin{macrocode} +\define@key{Gm}{columnsep}{\Gm@setlength\columnsep{#1}}% +% \end{macrocode} +% \end{key} +% \begin{key}{Gm}{hoffset} +% \begin{key}{Gm}{voffset} +% \begin{key}{Gm}{offset} +% The former two options set native dimensions \cs{hoffset} and +% \cs{voffset}. |offset| can set both of them with the same value. +% \begin{macrocode} +\define@key{Gm}{hoffset}{\Gm@setlength\hoffset{#1}}% +\define@key{Gm}{voffset}{\Gm@setlength\voffset{#1}}% +\define@key{Gm}{offset}{\Gm@branch{#1}{hoffset}{voffset}}% +% \end{macrocode} +% \end{key}\end{key}\end{key} +% \begin{key}{Gm}{layouthoffset} +% \begin{key}{Gm}{layoutvoffset} +% \begin{key}{Gm}{layoutoffset} +% \begin{macrocode} +\define@key{Gm}{layouthoffset}{\Gm@setlength\Gm@layouthoffset{#1}}% +\define@key{Gm}{layoutvoffset}{\Gm@setlength\Gm@layoutvoffset{#1}}% +\define@key{Gm}{layoutoffset}{\Gm@branch{#1}{layouthoffset}{layoutvoffset}}% +% \end{macrocode} +% \end{key}\end{key}\end{key} +% \begin{key}{Gm}{twocolumn} +% The option sets \cs{twocolumn} switch. +% \begin{macrocode} +\define@key{Gm}{twocolumn}[true]{% + \Gm@doif{twocolumn}{#1}{\csname @twocolumn\Gm@bool\endcsname}}% +% \end{macrocode} +% \end{key} +% \begin{key}{Gm}{onecolumn} +% This option has the reverse effect of |twocolumn| option. +% \begin{macrocode} +\define@key{Gm}{onecolumn}[true]{% + \Gm@doifelse{onecolumn}{#1}{\@twocolumnfalse}{\@twocolumntrue}}% +% \end{macrocode} +% \end{key} +% \begin{key}{Gm}{reversemp} +% \begin{key}{Gm}{reversemarginpar} +% The both options set \cs{reversemargin}. +% \begin{macrocode} +\define@key{Gm}{reversemp}[true]{% + \Gm@doif{reversemp}{#1}{\csname @reversemargin\Gm@bool\endcsname}}% +\define@key{Gm}{reversemarginpar}[true]{% + \Gm@doif{reversemarginpar}{#1}{\csname @reversemargin\Gm@bool\endcsname}}% +% \end{macrocode} +% \end{key}\end{key} +% \begin{key}{Gm}{dviver} +% \begin{macrocode} +\define@key{Gm}{driver}{\ifGm@preamble{driver}{% + \edef\@@tempa{#1}\edef\@@auto{auto}\edef\@@none{none}% + \ifx\@@tempa\@empty\let\Gm@driver\relax\else + \ifx\@@tempa\@@none\let\Gm@driver\relax\else + \ifx\@@tempa\@@auto\let\Gm@driver\@empty\else + \setkeys{Gm}{#1}\fi\fi\fi\let\@@auto\relax\let\@@none\relax}}% +% \end{macrocode} +% \end{key} +% \begin{key}{Gm}{dvips} +% \begin{key}{Gm}{dvipdfm}\begin{key}{Gm}{dvipdfmx}\begin{key}{Gm}{xdvipdfmx} +% \begin{key}{Gm}{pdftex} +% \begin{key}{Gm}{luatex} +% \begin{key}{Gm}{xetex} +% \begin{key}{Gm}{vtex} +% The \Gm\ package supports |dvips|, |dvipdfm|, +% |pdflatex|, |luatex| and |vtex|. |dvipdfm| works like |dvips|. +% \begin{macrocode} +\define@key{Gm}{dvips}[true]{\ifGm@preamble{dvips}{% + \Gm@doifelse{dvips}{#1}{\Gm@setdriver{dvips}}{\Gm@unsetdriver{dvips}}}}% +\define@key{Gm}{dvipdfm}[true]{\ifGm@preamble{dvipdfm}{% + \Gm@doifelse{dvipdfm}{#1}{\Gm@setdriver{dvipdfm}}{\Gm@unsetdriver{dvipdfm}}}}% +\define@key{Gm}{dvipdfmx}[true]{\ifGm@preamble{dvipdfm}{% + \Gm@doifelse{dvipdfm}{#1}{\Gm@setdriver{dvipdfm}}{\Gm@unsetdriver{dvipdfm}}}}% +\define@key{Gm}{xdvipdfmx}[true]{\ifGm@preamble{dvipdfm}{% + \Gm@doifelse{dvipdfm}{#1}{\Gm@setdriver{dvipdfm}}{\Gm@unsetdriver{dvipdfm}}}}% +\define@key{Gm}{pdftex}[true]{\ifGm@preamble{pdftex}{% + \Gm@doifelse{pdftex}{#1}{\Gm@setdriver{pdftex}}{\Gm@unsetdriver{pdftex}}}}% +\define@key{Gm}{luatex}[true]{\ifGm@preamble{luatex}{% + \Gm@doifelse{luatex}{#1}{\Gm@setdriver{luatex}}{\Gm@unsetdriver{luatex}}}}% +\define@key{Gm}{xetex}[true]{\ifGm@preamble{xetex}{% + \Gm@doifelse{xetex}{#1}{\Gm@setdriver{xetex}}{\Gm@unsetdriver{xetex}}}}% +\define@key{Gm}{vtex}[true]{\ifGm@preamble{vtex}{% + \Gm@doifelse{vtex}{#1}{\Gm@setdriver{vtex}}{\Gm@unsetdriver{vtex}}}}% +% \end{macrocode} +% \end{key}\end{key}\end{key}\end{key}\end{key}\end{key}\end{key}\end{key} +% \begin{key}{Gm}{verbose} +% The verbose mode. +% \begin{macrocode} +\define@key{Gm}{verbose}[true]{\ifGm@preamble{verbose}{\Gm@setbool{verbose}{#1}}}% +% \end{macrocode} +% \end{key} +% \begin{key}{Gm}{reset} +% The option cancels all the options specified before |reset|, +% except |pass|. |mag| ($\neq1000$) with |truedimen| cannot be also +% reset. +% \begin{macrocode} +\define@key{Gm}{reset}[true]{\ifGm@preamble{reset}{% + \Gm@doifelse{reset}{#1}{\Gm@restore@org\Gm@initall + \ProcessOptionsKV[c]{Gm}\Gm@setdefaultpaper}{}}}% +% \end{macrocode} +% \end{key} +% \begin{key}{Gm}{resetpaper} +% If |resetpaper| is set to |true|, the paper size redefined in the package +% is discarded and the original one is restored. This option may be useful +% to print nonstandard sized documents with normal printers and papers. +% \begin{macrocode} +\define@key{Gm}{resetpaper}[true]{\ifGm@preamble{resetpaper}{% + \Gm@setbool{resetpaper}{#1}}}% +% \end{macrocode} +% \end{key} +% \begin{key}{Gm}{mag} +% |mag| is expanded immediately when it is specified. So |reset| can't +% reset |mag| when it is set with |truedimen|. +% \begin{macrocode} +\define@key{Gm}{mag}{\ifGm@preamble{mag}{\mag=#1}}% +% \end{macrocode} +% \end{key} +% \begin{key}{Gm}{truedimen} +% If |truedimen| is set to |true|, all of the internal +% explicit dimensions is changed to \textit{true} dimensions, +% e.g., |1in| is changed to |1truein|. +% \begin{macrocode} +\define@key{Gm}{truedimen}[true]{\ifGm@preamble{truedimen}{% + \Gm@doifelse{truedimen}{#1}{\let\Gm@truedimen\Gm@true}% + {\let\Gm@truedimen\@empty}}}% +% \end{macrocode} +% \end{key} +% \begin{key}{Gm}{pass} +% The option makes all the options specified ineffective except +% verbose switch. +% \begin{macrocode} +\define@key{Gm}{pass}[true]{\ifGm@preamble{pass}{\Gm@setbool{pass}{#1}}}% +% \end{macrocode} +% \end{key} +% \begin{key}{Gm}{showframe} +% The showframe option prints page frames to help you understand +% what the resulting layout is like. +% \begin{macrocode} +\define@key{Gm}{showframe}[true]{\Gm@setbool{showframe}{#1}}% +% \end{macrocode} +% \end{key} +% \begin{key}{Gm}{showcrop} +% The showcrop option prints crop marks at each corner of the layout area. +% \begin{macrocode} +\define@key{Gm}{showcrop}[true]{\Gm@setbool{showcrop}{#1}}% +% \end{macrocode} +% \end{key} +% \begin{macro}{\Gm@setdefaultpaper} +% The macro stores paper dimensions. +% This macro should be called after |\ProcessOptionsKV[c]{Gm}|. +% If the |landscape| option in |\documentclass| is +% specified, the class immediately swaps the paper dimensions. +% \begin{macrocode} +\def\Gm@setdefaultpaper{% + \ifx\Gm@paper\@undefined + \Gm@setsize{paper}(\strip@pt\paperwidth,\strip@pt\paperheight){pt}% + \Gm@setsize{Gm@layout}(\strip@pt\paperwidth,\strip@pt\paperheight){pt}% + \Gm@swap@papersizefalse + \fi}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@adjustpaper} +% The macro checks if paperwidth/height is larger than 0pt, +% which is used in \cs{Gm@process}. +% The paper dimensions can be swapped when paper orientation +% is changed over by |landscape| and |portrait| options. +% \begin{macrocode} +\def\Gm@adjustpaper{% + \ifdim\paperwidth>\p@\else + \PackageError{geometry}{% + \string\paperwidth\space(\the\paperwidth) too short}{% + Set a paper type (e.g., `a4paper').}% + \fi + \ifdim\paperheight>\p@\else + \PackageError{geometry}{% + \string\paperheight\space(\the\paperheight) too short}{% + Set a paper type (e.g., `a4paper').}% + \fi + \ifGm@swap@papersize + \setlength\@tempdima{\paperwidth}% + \setlength\paperwidth{\paperheight}% + \setlength\paperheight{\@tempdima}% + \fi + \ifGm@layout\else + \setlength\Gm@layoutwidth{\paperwidth}% + \setlength\Gm@layoutheight{\paperheight}% + \fi}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@checkmp} +% The macro checks whether or not the marginpars overrun the page. +% \begin{macrocode} +\def\Gm@checkmp{% + \ifGm@includemp\else + \@tempcnta\z@\@tempcntb\@ne + \if@twocolumn + \@tempcnta\@ne + \else + \if@reversemargin + \@tempcnta\@ne\@tempcntb\z@ + \fi + \fi + \@tempdima\marginparwidth + \advance\@tempdima\marginparsep + \ifnum\@tempcnta=\@ne + \@tempdimc\@tempdima + \setlength\@tempdimb{\Gm@lmargin}% + \advance\@tempdimc-\@tempdimb + \ifdim\@tempdimc>\z@ + \Gm@warning{The marginal notes overrun the paper edge.^^J + \@spaces Add \the\@tempdimc\space and more to the left margin}% + \fi + \fi + \ifnum\@tempcntb=\@ne + \@tempdimc\@tempdima + \setlength\@tempdimb{\Gm@rmargin}% + \advance\@tempdimc-\@tempdimb + \ifdim\@tempdimc>\z@ + \Gm@warning{The marginal notes overrun the paper.^^J + \@spaces Add \the\@tempdimc\space and more to the right margin}% + \fi + \fi + \fi}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@adjustmp} +% The macro sets marginpar correction when |includemp| is set, +% which is used in \cs{Gm@process}. The variables \cs{Gm@wd@mp}, +% \cs{Gm@odd@mp} and \cs{Gm@even@mp} are set here. +% Note that \cs{Gm@even@mp} should be used only for twoside layout. +% \begin{macrocode} +\def\Gm@adjustmp{% + \ifGm@includemp + \@tempdimb\marginparwidth + \advance\@tempdimb\marginparsep + \Gm@wd@mp\@tempdimb + \Gm@odd@mp\z@ + \Gm@even@mp\z@ + \if@twocolumn + \Gm@wd@mp2\@tempdimb + \Gm@odd@mp\@tempdimb + \Gm@even@mp\@tempdimb + \else + \if@reversemargin + \Gm@odd@mp\@tempdimb + \if@mparswitch\else + \Gm@even@mp\@tempdimb + \fi + \else + \if@mparswitch + \Gm@even@mp\@tempdimb + \fi + \fi + \fi + \fi}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@adjustbody} +% If the horizontal dimension of \gpart{body} is specified by user, +% \cs{Gm@width} is set properly here. +% \begin{macrocode} +\def\Gm@adjustbody{ + \ifGm@hbody + \ifx\Gm@width\@undefined + \ifx\Gm@hscale\@undefined + \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}% + \else + \Gm@defbylen{width}{\Gm@hscale\Gm@layoutwidth}% + \fi + \fi + \ifx\Gm@textwidth\@undefined\else + \setlength\@tempdima{\Gm@textwidth}% + \ifGm@includemp + \advance\@tempdima\Gm@wd@mp + \fi + \edef\Gm@width{\the\@tempdima}% + \fi + \fi +% \end{macrocode} +% If the vertical dimension of \gpart{body} is specified by user, +% \cs{Gm@height} is set properly here. +% \begin{macrocode} + \ifGm@vbody + \ifx\Gm@height\@undefined + \ifx\Gm@vscale\@undefined + \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}% + \else + \Gm@defbylen{height}{\Gm@vscale\Gm@layoutheight}% + \fi + \fi + \ifx\Gm@lines\@undefined\else +% \end{macrocode} +% \cs{topskip} has to be adjusted so that the formula +% ``$\cs{textheight} = (lines - 1) \times \cs{baselineskip} + \cs{topskip}$'' +% to be correct even if large font sizes are specified by users. +% If \cs{topskip} is smaller than \cs{ht}\cs{strutbox}, then \cs{topskip} +% is set to \cs{ht}\cs{strutbox}. +% \begin{macrocode} + \ifdim\topskip<\ht\strutbox + \setlength\@tempdima{\topskip}% + \setlength\topskip{\ht\strutbox}% + \Gm@warning{\noexpand\topskip was changed from \the\@tempdima\space + to \the\topskip}% + \fi + \setlength\@tempdima{\baselineskip}% + \multiply\@tempdima\Gm@lines + \addtolength\@tempdima{\topskip}% + \addtolength\@tempdima{-\baselineskip}% + \edef\Gm@textheight{\the\@tempdima}% + \fi + \ifx\Gm@textheight\@undefined\else + \setlength\@tempdima{\Gm@textheight}% + \ifGm@includehead + \addtolength\@tempdima{\headheight}% + \addtolength\@tempdima{\headsep}% + \fi + \ifGm@includefoot + \addtolength\@tempdima{\footskip}% + \fi + \edef\Gm@height{\the\@tempdima}% + \fi + \fi}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@process} +% The main macro processing the specified dimensions is defined. +% \begin{macrocode} +\def\Gm@process{% +% \end{macrocode} +% If |pass| is set, the original dimensions and switches are restored +% and process is ended here. +% \begin{macrocode} + \ifGm@pass + \Gm@restore@org + \else + \Gm@@process + \fi}% +% \end{macrocode} +% The main processing macro. +% \begin{macrocode} +\def\Gm@@process{% + \Gm@expandlengths + \Gm@adjustpaper + \addtolength\Gm@layoutwidth{-\Gm@bindingoffset}% + \Gm@adjustmp + \Gm@adjustbody + \Gm@detall{h}{width}{lmargin}{rmargin}% + \Gm@detall{v}{height}{tmargin}{bmargin}% +% \end{macrocode} +% The real dimensions are set properly according to the result +% of the auto-completion calculation. +% \begin{macrocode} + \setlength\textwidth{\Gm@width}% + \setlength\textheight{\Gm@height}% + \setlength\topmargin{\Gm@tmargin}% + \setlength\oddsidemargin{\Gm@lmargin}% + \addtolength\oddsidemargin{-1\Gm@truedimen in}% +% \end{macrocode} +% If |includemp| is set to |true|, \cs{textwidth} and \cs{oddsidemargin} +% are adjusted. +% \begin{macrocode} + \ifGm@includemp + \advance\textwidth-\Gm@wd@mp + \advance\oddsidemargin\Gm@odd@mp + \fi +% \end{macrocode} +% Determining \cs{evensidemargin}. +% In the twoside page layout, the right margin value \cs{Gm@rmargin} is used. +% If the marginal note width is included, +% \cs{evensidemargin} should be corrected by \cs{Gm@even@mp}. +% \begin{macrocode} + \if@mparswitch + \setlength\evensidemargin{\Gm@rmargin}% + \addtolength\evensidemargin{-1\Gm@truedimen in}% + \ifGm@includemp + \advance\evensidemargin\Gm@even@mp + \fi + \else + \evensidemargin\oddsidemargin + \fi +% \end{macrocode} +% The bindingoffset correction for \cs{oddsidemargin}. +% \begin{macrocode} + \advance\oddsidemargin\Gm@bindingoffset + \addtolength\topmargin{-1\Gm@truedimen in}% +% \end{macrocode} +% If the head of the page is included in \gpart{total body}, +% \cs{headheight} and \cs{headsep} are removed from \cs{textheight}, +% otherwise from \cs{topmargin}. +% \begin{macrocode} + \ifGm@includehead + \addtolength\textheight{-\headheight}% + \addtolength\textheight{-\headsep}% + \else + \addtolength\topmargin{-\headheight}% + \addtolength\topmargin{-\headsep}% + \fi +% \end{macrocode} +% If the foot of the page is included in \gpart{total body}, +% \cs{footskip} is removed from \cs{textheight}. +% \begin{macrocode} + \ifGm@includefoot + \addtolength\textheight{-\footskip}% + \fi +% \end{macrocode} +% If |heightrounded| is set, \cs{textheight} is rounded. +% \begin{macrocode} + \ifGm@heightrounded + \setlength\@tempdima{\textheight}% + \addtolength\@tempdima{-\topskip}% + \@tempcnta\@tempdima + \@tempcntb\baselineskip + \divide\@tempcnta\@tempcntb + \setlength\@tempdimb{\baselineskip}% + \multiply\@tempdimb\@tempcnta + \advance\@tempdima-\@tempdimb + \multiply\@tempdima\tw@ + \ifdim\@tempdima>\baselineskip + \addtolength\@tempdimb{\baselineskip}% + \fi + \addtolength\@tempdimb{\topskip}% + \textheight\@tempdimb + \fi +% \end{macrocode} +% The paper width is set back by adding \cs{Gm@bindingoffset}. +% \begin{macrocode} + \advance\oddsidemargin\Gm@layouthoffset% + \advance\evensidemargin\Gm@layouthoffset% + \advance\topmargin\Gm@layoutvoffset% + \addtolength\Gm@layoutwidth{\Gm@bindingoffset}% + }% end of \Gm@@process +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Gm@detectdriver} +% The macro checks the typeset environment and changes the driver option +% if necessary. To make the engine detection more robust, the macro is +% rewritten with packages \textsf{ifpdf}, \textsf{ifvtex} and +% \textsf{ifxetex}. +% \begin{macrocode} +\def\Gm@detectdriver{% +% \end{macrocode} +% If the driver option is not specified explicitly, then driver +% auto-detection works. +% \begin{macrocode} + \ifx\Gm@driver\@empty + \typeout{*geometry* driver: auto-detecting}% +% \end{macrocode} +% \cs{ifpdf} is defined in \textsf{ifpdf} package in `oberdiek' bundle. +% \begin{macrocode} + \ifpdf + \ifx\pdfextension\@undefined + \Gm@setdriver{pdftex}% + \else + \Gm@setdriver{luatex}% + \fi + \else + \Gm@setdriver{dvips}% + \fi +% \end{macrocode} +% \cs{ifvtex} is defined in \textsf{ifvtex} package in `oberdiek' +% bundle. +% \begin{macrocode} + \ifvtex + \Gm@setdriver{vtex}% + \fi +% \end{macrocode} +% \cs{ifxetex} is defined in \textsf{ifxetex} package written by +% Will Robertson. +% \begin{macrocode} + \ifxetex + \Gm@setdriver{xetex} + \fi +% \end{macrocode} +% When the driver option is set by the user, check if it is valid or not. +% \begin{macrocode} + \else + \ifx\Gm@driver\Gm@xetex %% + \ifxetex\else + \Gm@warning{Wrong driver setting: `xetex'; trying `pdftex' driver}% + \Gm@setdriver{pdftex} + \fi + \fi + \ifx\Gm@driver\Gm@vtex + \ifvtex\else + \Gm@warning{Wrong driver setting: `vtex'; trying `dvips' driver}% + \Gm@setdriver{dvips}% + \fi + \fi + \fi + \ifx\Gm@driver\relax + \typeout{*geometry* detected driver: }% + \else + \typeout{*geometry* detected driver: \Gm@driver}% + \fi}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@showparams} +% Prints the resulted parammeters and dimensions to STDOUT +% if |verbose| is true. +% |\Gm@width| and |\Gm@height| are expanded to get the real size. +% \begin{macrocode} +\def\Gm@showparams#1{% + \ifGm@verbose\expandafter\typeout\else\expandafter\wlog\fi + {\Gm@logcontent{#1}}}% +\def\Gm@showdim#1{* \string#1=\the#1^^J}% +\def\Gm@showbool#1{\@nameuse{ifGm@#1}#1\space\fi}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@logcontent} +% The content of geometry paramenters and native dimensions for the +% page layout. +% \begin{macrocode} +\def\Gm@logcontent#1{% + *geometry* verbose mode - [ #1 ] result:^^J% + \ifGm@pass * pass: disregarded the geometry package!^^J% + \else + * driver: \if\Gm@driver\else\Gm@driver\fi^^J% + * paper: \ifx\Gm@paper\@undefined\else\Gm@paper\fi^^J% + * layout: \ifGm@layout\else\fi^^J% + \ifGm@layout + * layout(width,height): (\the\Gm@layoutwidth,\the\Gm@layoutheight)^^J% + \fi + * layoutoffset:(h,v)=(\the\Gm@layouthoffset,\the\Gm@layoutvoffset)^^J% + \@ifundefined{Gm@lines}{}{* lines: \Gm@lines^^J}% + \@ifundefined{Gm@hmarginratio}{}{* hratio: \Gm@hmarginratio^^J}% + \@ifundefined{Gm@vmarginratio}{}{* vratio: \Gm@vmarginratio^^J}% + \ifdim\Gm@bindingoffset=\z@\else + * bindingoffset: \the\Gm@bindingoffset^^J\fi + * modes: % + \Gm@showbool{landscape}% + \Gm@showbool{includehead}% + \Gm@showbool{includefoot}% + \Gm@showbool{includemp}% + \if@twoside twoside\space\fi% + \if@mparswitch\else\if@twoside asymmetric\space\fi\fi% + \Gm@showbool{heightrounded}% + \ifx\Gm@truedimen\@empty\else truedimen\space\fi% + \Gm@showbool{showframe}% + \Gm@showbool{showcrop}% + ^^J% + * h-part:(L,W,R)=(\Gm@lmargin, \Gm@width, \Gm@rmargin)^^J% + * v-part:(T,H,B)=(\Gm@tmargin, \Gm@height, \Gm@bmargin)^^J% + \fi + \Gm@showdim{\paperwidth}% + \Gm@showdim{\paperheight}% + \Gm@showdim{\textwidth}% + \Gm@showdim{\textheight}% + \Gm@showdim{\oddsidemargin}% + \Gm@showdim{\evensidemargin}% + \Gm@showdim{\topmargin}% + \Gm@showdim{\headheight}% + \Gm@showdim{\headsep}% + \Gm@showdim{\topskip}% + \Gm@showdim{\footskip}% + \Gm@showdim{\marginparwidth}% + \Gm@showdim{\marginparsep}% + \Gm@showdim{\columnsep}% + * \string\skip\string\footins=\the\skip\footins^^J% + \Gm@showdim{\hoffset}% + \Gm@showdim{\voffset}% + \Gm@showdim{\mag}% + * \string\@twocolumn\if@twocolumn true\else false\fi^^J% + * \string\@twoside\if@twoside true\else false\fi^^J% + * \string\@mparswitch\if@mparswitch true\else false\fi^^J% + * \string\@reversemargin\if@reversemargin true\else false\fi^^J% + * (1in=72.27pt=25.4mm, 1cm=28.453pt)^^J}% +% \end{macrocode} +% \end{macro} +% +% Macros for the page frames and cropmarks. +% \begin{macrocode} +\def\Gm@cropmark(#1,#2,#3,#4){% + \begin{picture}(0,0) + \setlength\unitlength{1truemm}% + \linethickness{0.25pt}% + \put(#3,0){\line(#1,0){17}}% + \put(0,#4){\line(0,#2){17}}% + \end{picture}}% +\providecommand*\vb@xt@{\vbox to}% +\def\Gm@vrule{\vrule width 0.2pt height\textheight depth\z@}% +\def\Gm@hrule{\hrule height 0.2pt depth\z@ width\textwidth}% +\def\Gm@hruled{\hrule height\z@ depth0.2pt width\textwidth}% +\newcommand*{\Gm@vrules@mpi}{% + \hb@xt@\@tempdima{\llap{\Gm@vrule}\ignorespaces + \hskip \textwidth\Gm@vrule\hskip \marginparsep + \llap{\Gm@vrule}\hfil\Gm@vrule}}% +\newcommand*{\Gm@vrules@mpii}{% + \hb@xt@\@tempdima{\hskip-\marginparwidth\hskip-\marginparsep + \llap{\Gm@vrule}\ignorespaces + \hskip \marginparwidth\rlap{\Gm@vrule}\hskip \marginparsep + \llap{\Gm@vrule}\hskip\textwidth\rlap{\Gm@vrule}\hss}}% +\newcommand*{\Gm@pageframes}{% + \vb@xt@\z@{% + \ifGm@showcrop + \vb@xt@\z@{\vskip-1\Gm@truedimen in\vskip\Gm@layoutvoffset% + \hb@xt@\z@{\hskip-1\Gm@truedimen in\hskip\Gm@layouthoffset% + \vb@xt@\Gm@layoutheight{% + \let\protect\relax + \hb@xt@\Gm@layoutwidth{\Gm@cropmark(-1,1,-3,3)\hfil\Gm@cropmark(1,1,3,3)}% + \vfil + \hb@xt@\Gm@layoutwidth{\Gm@cropmark(-1,-1,-3,-3)\hfil\Gm@cropmark(1,-1,3,-3)}}% + \hss}% + \vss}% + \fi% + \ifGm@showframe + \if@twoside + \ifodd\count\z@ + \let\@themargin\oddsidemargin + \else + \let\@themargin\evensidemargin + \fi + \fi + \moveright\@themargin% + \vb@xt@\z@{% + \vskip\topmargin\vb@xt@\z@{\vss\Gm@hrule}% + \vskip\headheight\vb@xt@\z@{\vss\Gm@hruled}% + \vskip\headsep\vb@xt@\z@{\vss\Gm@hrule}% + \@tempdima\textwidth + \advance\@tempdima by \marginparsep + \advance\@tempdima by \marginparwidth + \if@mparswitch + \ifodd\count\z@ + \Gm@vrules@mpi + \else + \Gm@vrules@mpii + \fi + \else + \Gm@vrules@mpi + \fi + \vb@xt@\z@{\vss\Gm@hrule}% + \vskip\footskip\vb@xt@\z@{\vss\Gm@hruled}% + \vss}% + \fi% + }}% +% \end{macrocode} +% +% \begin{macro}{\ProcessOptionsKV} +% This macro can process class and package options using `key=value' +% scheme. Only class options are processed with an optional argument +% `|c|', package options with `|p|' , and both of them by default. +% \begin{macrocode} +\def\ProcessOptionsKV{\@ifnextchar[%] + {\@ProcessOptionsKV}{\@ProcessOptionsKV[]}}% +\def\@ProcessOptionsKV[#1]#2{% + \let\@tempa\@empty + \@tempcnta\z@ + \if#1p\@tempcnta\@ne\else\if#1c\@tempcnta\tw@\fi\fi + \ifodd\@tempcnta + \edef\@tempa{\@ptionlist{\@currname.\@currext}}% + \else + \@for\CurrentOption:=\@classoptionslist\do{% + \@ifundefined{KV@#2@\CurrentOption}% + {}{\edef\@tempa{\@tempa,\CurrentOption,}}}% + \ifnum\@tempcnta=\z@ + \edef\@tempa{\@tempa,\@ptionlist{\@currname.\@currext}}% + \fi + \fi + \edef\@tempa{\noexpand\setkeys{#2}{\@tempa}}% + \@tempa + \AtEndOfPackage{\let\@unprocessedoptions\relax}}% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\def\Gm@setkeys{\setkeys{Gm}}% +% \end{macrocode} +% \begin{macro}{\Gm@processconf} +% \cs{ExecuteOptions} is replaced with \cs{Gm@setkey} to make it +% possible to deal with '\meta{key}=\meta{value}' as its argument. +% \begin{macrocode} +\def\Gm@processconfig{% + \let\Gm@origExecuteOptions\ExecuteOptions + \let\ExecuteOptions\Gm@setkeys + \InputIfFileExists{geometry.cfg}{}{} + \let\ExecuteOptions\Gm@origExecuteOptions}% +% \end{macrocode} +% \end{macro} +% +% The original page layout before loading \Gm\ is saved here. +% |\Gm@restore@org| is defined here for |reset| option. +% \begin{macrocode} +\Gm@save +\edef\Gm@restore@org{\Gm@restore}% +\Gm@initall +% \end{macrocode} +% Processing config file. +% \begin{macrocode} +\Gm@processconfig +% \end{macrocode} +% The optional arguments to \cs{documentclass} are processed here. +% \begin{macrocode} +\ProcessOptionsKV[c]{Gm}% +% \end{macrocode} +% Paper dimensions given by class default are stored. +% \begin{macrocode} +\Gm@setdefaultpaper +% \end{macrocode} +% The optional arguments to \cs{usepackage} are processed here. +% \begin{macrocode} +\ProcessOptionsKV[p]{Gm}% +% \end{macrocode} +% Actual settings and calculation for layout dimensions are processed. +% \begin{macrocode} +\Gm@process +% \end{macrocode} +% +% \begin{macro}{\AtBeginDocument} +% The processes for |verbose|, |showframe| and drivers are added to +% |\AtBeginDocument|. +% |\Gm@restore@org| is redefined here with the paper size specified +% in the preamble for |\newgeometry| to use it. This should be done +% before magnifying the paper size with |\mag| because the layout +% calculation would be affected by changing the paper size. +% \begin{macrocode} +\AtBeginDocument{% + \Gm@savelength{paperwidth}% + \Gm@savelength{paperheight}% + \edef\Gm@restore@org{\Gm@restore}% +% \end{macrocode} +% The original paper size is used if |resetpaper|. +% \begin{macrocode} + \ifGm@resetpaper + \edef\Gm@pw{\Gm@orgpw}% + \edef\Gm@ph{\Gm@orgph}% + \else + \edef\Gm@pw{\the\paperwidth}% + \edef\Gm@ph{\the\paperheight}% + \fi +% \end{macrocode} +% If |pass| is not set, the paper size is multiplied +% according to the specified |mag|. +% \begin{macrocode} + \ifGm@pass\else + \ifnum\mag=\@m\else + \Gm@magtooffset + \divide\paperwidth\@m + \multiply\paperwidth\the\mag + \divide\paperheight\@m + \multiply\paperheight\the\mag + \fi + \fi +% \end{macrocode} +% Checking the driver options. +% \begin{macrocode} + \Gm@detectdriver +% \end{macrocode} +% If |xetex| and |\pdfpagewidth| is defined, +% |\pdfpagewidth| and |\pdfpageheight| would be set. +% \begin{macrocode} + \ifx\Gm@driver\Gm@xetex + \@ifundefined{pdfpagewidth}{}{% + \setlength\pdfpagewidth{\Gm@pw}% + \setlength\pdfpageheight{\Gm@ph}}% + \ifnum\mag=\@m\else + \ifx\Gm@truedimen\Gm@true + \setlength\paperwidth{\Gm@pw}% + \setlength\paperheight{\Gm@ph}% + \fi + \fi + \fi +% \end{macrocode} +% If |pdftex| is set to |true|, pdf-commands are set properly. +% To avoid |pdftex| magnification problem, \cs{pdfhorigin} and +% \cs{pdfvorigin} are adjusted for \cs{mag}. +% \begin{macrocode} + \ifx\Gm@driver\Gm@pdftex + \@ifundefined{pdfpagewidth}{}{% + \setlength\pdfpagewidth{\Gm@pw}% + \setlength\pdfpageheight{\Gm@ph}}% + \ifnum\mag=\@m\else + \@tempdima=\mag sp% + \@ifundefined{pdfhorigin}{}{% + \divide\pdfhorigin\@tempdima + \multiply\pdfhorigin\@m + \divide\pdfvorigin\@tempdima + \multiply\pdfvorigin\@m}% + \ifx\Gm@truedimen\Gm@true + \setlength\paperwidth{\Gm@pw}% + \setlength\paperheight{\Gm@ph}% + \fi + \fi + \fi +% \end{macrocode} +% If |luatex| is set to |true|, pdf-commands are set properly. +% To avoid |luatex| magnification problem, \cs{horigin} and +% \cs{vorigin} are adjusted for \cs{mag}. +% \begin{macrocode} + \ifx\Gm@driver\Gm@luatex + \setlength\pagewidth{\Gm@pw}% + \setlength\pageheight{\Gm@ph}% + \ifnum\mag=\@m\else + \@tempdima=\mag sp + \edef\Gm@horigin{\pdfvariable horigin}% + \edef\Gm@vorigin{\pdfvariable vorigin}% + \divide\Gm@horigin\@tempdima + \multiply\Gm@horigin\@m + \divide\Gm@vorigin\@tempdima + \multiply\Gm@vorigin\@m + \ifx\Gm@truedimen\Gm@true + \setlength\paperwidth{\Gm@pw}% + \setlength\paperheight{\Gm@ph}% + \fi + \fi + \fi +% \end{macrocode} +% With V\TeX{} environment, V\TeX{} variables are set here. +% \begin{macrocode} + \ifx\Gm@driver\Gm@vtex + \@ifundefined{mediawidth}{}{% + \mediawidth=\paperwidth + \mediaheight=\paperheight}% + \ifvtexdvi + \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}% + \fi + \fi +% \end{macrocode} +% If |dvips| or |dvipdfm| is specified, paper size is embedded in dvi +% file with \cs{special}. For dvips, a landscape correction is added +% because a landscape document converted by dvips is upside-down in +% PostScript viewers. +% \begin{macrocode} + \ifx\Gm@driver\Gm@dvips + \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}% + \ifx\Gm@driver\Gm@dvips\ifGm@landscape + \AtBeginDvi{\special{! /landplus90 true store}}% + \fi\fi +% \end{macrocode} +% If |dvipdfm| is specified and \textsf{atbegshi} package in +% `oberdiek' bundle is loaded, \cs{AtBeginShipoutFirst} is used +% instead of \cs{AtBeginDvi} for compatibility with \textsf{hyperref} +% and |dvipdfm| program. +% \begin{macrocode} + \else\ifx\Gm@driver\Gm@dvipdfm + \ifcase\ifx\AtBeginShipoutFirst\relax\@ne\else + \ifx\AtBeginShipoutFirst\@undefined\@ne\else\z@\fi\fi + \AtBeginShipoutFirst{\special{papersize=\the\paperwidth,\the\paperheight}}% + \or + \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}% + \fi + \fi\fi +% \end{macrocode} +% Page frames are shipped out when |showframe=true|, cropmarks for |showcrop=true| +% on each page. The \textsf{atbegshi} package is used for overloading |\shipout|. +% \begin{macrocode} + \@tempswafalse + \ifGm@showframe + \@tempswatrue + \else\ifGm@showcrop + \@tempswatrue + \fi\fi + \if@tempswa + \RequirePackage{atbegshi}% + \AtBeginShipout{\setbox\AtBeginShipoutBox=\vbox{% + \baselineskip\z@skip\lineskip\z@skip\lineskiplimit\z@ + \Gm@pageframes\box\AtBeginShipoutBox}}% + \fi +% \end{macrocode} +% The layout dimensions for \cs{restoregeometry} are saved +% at the end of the \cs{AtBeginDocument}. +% \begin{macrocode} + \Gm@save + \edef\Gm@restore@pkg{\Gm@restore}% +% \end{macrocode} +% The package checks whether or not the marginpars overrun the page, +% if |verbose| and unless |pass|. +% \begin{macrocode} + \ifGm@verbose\ifGm@pass\else\Gm@checkmp\fi\fi +% \end{macrocode} +% |\Gm@showparams| puts the resulting parameters and dimensions +% into the log file. With |verbose|, they are shown on the terminal +% as well. +% \begin{macrocode} + \Gm@showparams{preamble}% +% \end{macrocode} +% The following lines free the memories no longer needed. +% \begin{macrocode} + \let\Gm@pw\relax + \let\Gm@ph\relax + }% end of \AtBeginDocument +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\geometry} +% The macro \cs{geometry} can be called multiple times +% in the preamble (before |\begin{document}|). +% \begin{macrocode} +\newcommand{\geometry}[1]{% + \Gm@clean + \setkeys{Gm}{#1}% + \Gm@process}% +\@onlypreamble\geometry +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Gm@changelayout} +% The macro, which can be called from |\newgeometry|, +% |\restoregeometry| and |\loadgeometry|, changes the layout +% in the middle of the document. +% \begin{macrocode} +\DeclareRobustCommand\Gm@changelayout{% + \setlength{\@colht}{\textheight} + \setlength{\@colroom}{\textheight}% + \setlength{\vsize}{\textheight} + \setlength{\columnwidth}{\textwidth}% + \if@twocolumn% + \advance\columnwidth-\columnsep + \divide\columnwidth\tw@% + \@firstcolumntrue% + \fi% + \setlength{\hsize}{\columnwidth}% + \setlength{\linewidth}{\hsize}}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\newgeometry} +% The macro |\newgeometry|, which changes the layout, +% can be used only in the document. +% It would reset the options specified in the preamble except for +% paper size options and |\mag|. +% \begin{macrocode} +\newcommand{\newgeometry}[1]{% + \clearpage + \Gm@restore@org + \Gm@initnewgm + \Gm@newgmtrue + \setkeys{Gm}{#1}% + \Gm@newgmfalse + \Gm@process + \ifnum\mag=\@m\else\Gm@magtooffset\fi + \Gm@changelayout + \Gm@showparams{newgeometry}}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\restoregeometry} +% The macro restores the resulting layout specified in the preamble, +% namely the first-page layout right after |\begin{document}|. +% \begin{macrocode} +\newcommand{\restoregeometry}{% + \clearpage + \Gm@restore@pkg + \Gm@changelayout}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\savegeometry} +% The macro saves the layout with the name specified +% with the argument. The saved layout can be loaded +% with |\loadgeometry{|\meta{name}|}|. +% \begin{macrocode} +\newcommand*{\savegeometry}[1]{% + \Gm@save + \expandafter\edef\csname Gm@restore@@#1\endcsname{\Gm@restore}}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\loadgeometry} +% The macro loads the layout saved with |\savegeometry{|\meta{name}|}|. +% If the name is not found, the macro would warn it and +% do nothing for the layout. +% \begin{macrocode} +\newcommand*{\loadgeometry}[1]{% + \clearpage + \@ifundefined{Gm@restore@@#1}{% + \PackageError{geometry}{% + \string\loadgeometry : name `#1' undefined}{% + The name `#1' should be predefined with \string\savegeometry}% + }{\@nameuse{Gm@restore@@#1}% + \Gm@changelayout}}% +% +% \end{macrocode} +% \end{macro} +% +% \section{Config file} +% In the configuration file |geometry.cfg|, one can use +% \cs{ExecuteOptions} to set the site or user default settings. +% \begin{macrocode} +%<*config> +%< +% \end{macrocode} +% +% \section{Sample file} +% Here is a sample document for the \Gm\ package. +% \begin{macrocode} +%<*samples> +%< +% \end{macrocode} +% +% \Finale +% +\endinput diff --git a/macros/latex/contrib/geometry/geometry-de.pdf b/macros/latex/contrib/geometry/geometry-de.pdf new file mode 100644 index 0000000000..d3b6408dd2 Binary files /dev/null and b/macros/latex/contrib/geometry/geometry-de.pdf differ diff --git a/macros/latex/contrib/geometry/geometry-samples.tex b/macros/latex/contrib/geometry/geometry-samples.tex deleted file mode 100644 index 7425041e29..0000000000 --- a/macros/latex/contrib/geometry/geometry-samples.tex +++ /dev/null @@ -1,73 +0,0 @@ -%% -%% This is file `geometry-samples.tex', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% geometry.dtx (with options: `samples') -%% -%% Copyright (C) 1996-2010 -%% by Hideo Umeki -%% Copyright (C) 2018 -%% by Hideo Umeki and David Carlisle https://github.com/davidcarlisle/geometry -%% -%% This work may be distributed and/or modified under the conditions of -%% the LaTeX Project Public License, either version 1.3c 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.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This work is "maintained" (as per the LPPL maintenance status) -%% by David Carlisle. -%% -%% This work consists of the files geometry.dtx and -%% the derived files: geometry.{sty,ins,drv}, geometry-samples.tex. -%% -\documentclass[12pt]{article}% uses letterpaper by default -% \documentclass[12pt,a4paper]{article}% for A4 paper -%--------------------------------------------------------------- -% Edit and uncomment one of the settings below -%--------------------------------------------------------------- -% \usepackage{geometry} -% \usepackage[centering]{geometry} -% \usepackage[width=10cm,vscale=.7]{geometry} -% \usepackage[margin=1cm, papersize={12cm,19cm}, resetpaper]{geometry} -% \usepackage[margin=1cm,includeheadfoot]{geometry} -\usepackage[margin=1cm,includeheadfoot,includemp]{geometry} -% \usepackage[margin=1cm,bindingoffset=1cm,twoside]{geometry} -% \usepackage[hmarginratio=2:1, vmargin=2cm]{geometry} -% \usepackage[hscale=0.5,twoside]{geometry} -% \usepackage[hscale=0.5,asymmetric]{geometry} -% \usepackage[hscale=0.5,heightrounded]{geometry} -% \usepackage[left=1cm,right=4cm,top=2cm,includefoot]{geometry} -% \usepackage[lines=20,left=2cm,right=6cm,top=2cm,twoside]{geometry} -% \usepackage[width=15cm, marginparwidth=3cm, includemp]{geometry} -% \usepackage[hdivide={1cm,,2cm}, vdivide={3cm,8in,}, nohead]{geometry} -% \usepackage[headsep=20pt, head=40pt,foot=20pt,includeheadfoot]{geometry} -% \usepackage[text={6in,8in}, top=2cm, left=2cm]{geometry} -% \usepackage[centering,includemp,twoside,landscape]{geometry} -% \usepackage[mag=1414,margin=2cm]{geometry} -% \usepackage[mag=1414,margin=2truecm,truedimen]{geometry} -% \usepackage[a5paper, landscape, twocolumn, twoside, -% left=2cm, hmarginratio=2:1, includemp, marginparwidth=43pt, -% bottom=1cm, foot=.7cm, includefoot, textheight=11cm, heightrounded, -% columnsep=1cm,verbose]{geometry} -%--------------------------------------------------------------- -% No need to change below -%--------------------------------------------------------------- -\geometry{verbose,showframe}% the options appended. -\usepackage{lipsum}% for dummy text of 150 paragraphs -\newcommand\mynote{\marginpar[\raggedright -A sample margin note in the left side.]% -{\raggedright A sample margin note.}}% -\newcommand\myfootnote{\footnote{This is a sample footnote text.}} -\begin{document} -\lipsum[1-2]\mynote\lipsum[3-4]\mynote -\lipsum[5-11]\mynote\lipsum[12]\myfootnote -\lipsum[13-22]\mynote\lipsum[23-32] -\end{document} -\endinput -%% -%% End of file `geometry-samples.tex'. diff --git a/macros/latex/contrib/geometry/geometry.dtx b/macros/latex/contrib/geometry/geometry.dtx index 964b901888..aea76ff55b 100644 --- a/macros/latex/contrib/geometry/geometry.dtx +++ b/macros/latex/contrib/geometry/geometry.dtx @@ -26,6 +26,8 @@ % CTAN: macros/latex/contrib/geometry/geometry.ins % CTAN: macros/latex/contrib/geometry/geometry.dtx % CTAN: macros/latex/contrib/geometry/geometry.pdf +% CTAN: macros/latex/contrib/geometry/geometry-de.dtx +% CTAN: macros/latex/contrib/geometry/geometry-de.pdf % % * See README for installation. % @@ -40,12 +42,12 @@ % %\NeedsTeXFormat{LaTeX2e} %\ProvidesPackage{geometry} -% [2018/04/16 v5.8 Page Geometry] +% [2020/01/02 v5.9 Page Geometry] %<*install> \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: geometry 2018/04/16 v5.8 Page Geometry} +\Msg{* Package: geometry 2020/01/02 v5.9 Page Geometry} \Msg{************************************************************************} \keepsilent @@ -54,7 +56,7 @@ Copyright (C) 1996-2010 by Hideo Umeki -Copyright (C) 2018 +Copyright (C) 2018-2020 by Hideo Umeki and David Carlisle https://github.com/davidcarlisle/geometry This work may be distributed and/or modified under the conditions of @@ -125,7 +127,7 @@ the derived files: geometry.{sty,ins,drv}, geometry-samples.tex. % % \title{The \textsf{geometry} package} % \date{\filedate\ \fileversion} -% \author{Hideo Umeki\\\texttt{latexgeometry@gmail.com}} +% \author{Hideo Umeki\\\url{https://github.com/davidcarlisle/geometry}} % % \MakeShortVerb{|} % @@ -1118,7 +1120,9 @@ the derived files: geometry.{sty,ins,drv}, geometry-samples.tex. % % The package supports drivers |dvips|, |dvipdfm|, |pdftex|, |luatex|, % |xetex| and |vtex|. You can also set |dvipdfm| for \textsf{dvipdfmx} and -% \textsf{xdvipdfmx}. |pdftex| for \textsf{pdflatex}, and |vtex| for +% \textsf{xdvipdfmx} The options |dvipdfmx| and |xdvipdfmx| are also supported +% as aliases for the |dvipdfm| option. +% |pdftex| for \textsf{pdflatex}, and |vtex| for % V\TeX{} environment. % The driver options are exclusive. The driver can be set by either % |driver=|\meta{driver name} or any of the drivers directly like |pdftex|. @@ -1785,12 +1789,10 @@ the derived files: geometry.{sty,ins,drv}, geometry-samples.tex. %<*package> % \end{macrocode} % This package requires the following packages: -% \textsf{keyval}, \textsf{ifpdf}, \textsf{ifvtex} and \textsf{ifxetex}. +% \textsf{keyval}, \textsf{ifvtex}. % \begin{macrocode} \RequirePackage{keyval}% -\RequirePackage{ifpdf}% \RequirePackage{ifvtex}% -\RequirePackage{ifxetex}% % \end{macrocode} % % Internal switches are declared here. @@ -3591,7 +3593,7 @@ the derived files: geometry.{sty,ins,drv}, geometry-samples.tex. \setlength\pdfpagewidth{\Gm@pw}% \setlength\pdfpageheight{\Gm@ph}}% \ifnum\mag=\@m\else - \@tempdima=\mag sp + \@tempdima=\mag sp% \@ifundefined{pdfhorigin}{}{% \divide\pdfhorigin\@tempdima \multiply\pdfhorigin\@m diff --git a/macros/latex/contrib/geometry/geometry.pdf b/macros/latex/contrib/geometry/geometry.pdf index 66f3c55c4e..8bb0d97210 100644 Binary files a/macros/latex/contrib/geometry/geometry.pdf and b/macros/latex/contrib/geometry/geometry.pdf differ diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.pdf b/macros/latex/contrib/nicematrix/nicematrix-french.pdf index a9c1b2a350..02b227ed0d 100644 Binary files a/macros/latex/contrib/nicematrix/nicematrix-french.pdf and b/macros/latex/contrib/nicematrix/nicematrix-french.pdf differ diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.tex b/macros/latex/contrib/nicematrix/nicematrix-french.tex index 12d403c379..883a1acf69 100644 --- a/macros/latex/contrib/nicematrix/nicematrix-french.tex +++ b/macros/latex/contrib/nicematrix/nicematrix-french.tex @@ -1,3 +1,4 @@ +% -*- coding: utf-8 ; -*- \documentclass[dvipsnames]{article}% dvipsnames is for xcolor (loaded by Tikz, loaded by nicematrix) \usepackage{xltxtra} \usepackage[french]{babel} @@ -1191,6 +1192,10 @@ $\begin{pNiceMatrix} \section{Les matrices par blocs} +Cette partie, qui introduit une commande |\Block|, n'a pas de rapport direct avec l'environnement +|{NiceMatrixBlock}| présenté dans la section précédente. + +\smallskip Dans les environnements de \pkg{nicematrix}, on peut utiliser la commande |\Block| pour placer un élément au centre d'un rectangle de cases fusionnées. @@ -1661,8 +1666,10 @@ obsolètes : \end{itemize} \medskip -Une message est affiché dans le fichier |log| à chaque fois que l'un d'entre eux est utilisé. Néanmoins, il faut -avoir conscience que ces environnements seront sans doute supprimés dans une version future de \pkg{nicematrix}. +Depuis la version 3.8 de \pkg{nicematrix}, une erreur est levée dès qu'un de ces environnements est utilisé. +Néanmoins, pour le moment, il reste possible de les utiliser si on charge l'extension \pkg{nicematrix} avec +l'option |obsolete-environments|. Il faut toutefois avoir conscience que ces environnements seront sans doute +supprimés dans une version future de \pkg{nicematrix}. diff --git a/macros/latex/contrib/nicematrix/nicematrix.dtx b/macros/latex/contrib/nicematrix/nicematrix.dtx index 5aa6211092..3b0f3fcad4 100644 --- a/macros/latex/contrib/nicematrix/nicematrix.dtx +++ b/macros/latex/contrib/nicematrix/nicematrix.dtx @@ -15,8 +15,8 @@ % % \fi % \iffalse -\def\myfileversion{3.7} -\def\myfiledate{2019/11/11} +\def\myfileversion{3.8} +\def\myfiledate{2020/01/02} % % %<*batchfile> @@ -1240,6 +1240,9 @@ c & c & b & a & e % % \section{Block matrices} % +% This section has no direct link with the previous one where an environment +% |{NiceMatrixBlock}| was introduced. +% % In the environments of \pkg{nicematrix}, it's possible to use the command % |\Block| in order to place an element in the center of a rectangle of merged % cells of the array. @@ -1364,7 +1367,7 @@ c & c & b & a & e % In the cells of the array, it's possible to use the LaTeX counters |iRow| and % |jCol| which represent the number of the current row and the number of the % current col\footnote{We recall that the first row (if it exists) has the -% number~$0$ and that the first col (if it exists) has also the number~$0$).}. +% number~$0$ and that the first col (if it exists) has also the number~$0$.}. % Of course, the user must not change the value of these counters which are used % internally by \pkg{nicematrix}. % @@ -1740,7 +1743,12 @@ c & c & b & a & e % |{VNiceArrayRC}|. % \end{itemize} % -% They might be deleted in a future version of \pkg{nicematrix}. +% Since the version 3.8, an error is raised when one of these environments is +% used. It's still possible to use these environments by loading +% \pkg{nicematrix} with the option |obsolete-environments|. +% +% However, these environments will probably be completely deleted in future +% version of \pkg{nicematrix}. % % \section{Examples} % @@ -2401,9 +2409,7 @@ c & c & b & a & e % |expl3| code fails.\footnote{cf. % |tex.stackexchange.com/questions/57424/using-of-usetikzlibrary-in-an-expl3-package-fails|} % -% \begin{macrocode} -%<@@=nm> -% \end{macrocode} +%<@@=nicematrix> % % \begin{macrocode} \RequirePackage{tikz} @@ -2970,13 +2976,9 @@ c & c & b & a & e \keys_define:nn { NiceMatrix / Global } { code-for-first-col .tl_set:N = \l_@@_code_for_first_col_tl , - code-for-first-col .value_required:n = true , code-for-last-col .tl_set:N = \l_@@_code_for_last_col_tl , - code-for-last-col .value_required:n = true , code-for-first-row .tl_set:N = \l_@@_code_for_first_row_tl , - code-for-first-row .value_required:n = true , code-for-last-row .tl_set:N = \l_@@_code_for_last_row_tl , - code-for-last-row .value_required:n = true , small .bool_set:N = \l_@@_small_bool , hlines .bool_set:N = \l_@@_hlines_bool , parallelize-diags .bool_set:N = \l_@@_parallelize_diags_bool , @@ -2988,7 +2990,7 @@ c & c & b & a & e % |\Vdots| and |\Ddots|. % \begin{macrocode} renew-dots .bool_set:N = \l_@@_renew_dots_bool , - renew-dots .value_forbidden:n = true , + nullify-dots .bool_set:N = \l_@@_nullify_dots_bool , % \end{macrocode} % @@ -3009,6 +3011,20 @@ c & c & b & a & e extra-right-margin .dim_set:N = \l_@@_extra_right_margin_dim , extra-margin .meta:n = { extra-left-margin = #1 , extra-right-margin = #1 } , +% \end{macrocode} +% The following lines are the properties |.value_required:n| and +% |.value_forbidden:n| or the keys. These properties have no effect because they +% are not transmitted by inheritance (unfortunately). We maintain these lines in +% the \textsc{dtx} only for the case of a modification of |l3keys|. +% +% \begin{macrocode} +%<*comment> + code-for-first-col .value_required:n = true , + code-for-last-col .value_required:n = true , + code-for-first-row .value_required:n = true , + code-for-last-row .value_required:n = true , + renew-dots .value_forbidden:n = true , +% } % \end{macrocode} % @@ -3022,7 +3038,6 @@ c & c & b & a & e \str_if_eq:nnTF { #1 } { auto } { \bool_set_true:N \l_@@_auto_columns_width_bool } { \dim_set:Nn \l_@@_columns_width_dim { #1 } } , - columns-width .value_required:n = true , name .code:n = \unless \ifmeasuring@ \str_set:Nn \l_tmpa_str { #1 } @@ -3031,13 +3046,23 @@ c & c & b & a & e { \seq_gput_left:NV \g_@@_names_seq \l_tmpa_str } \str_set_eq:NN \l_@@_name_str \l_tmpa_str \fi , - name .value_required:n = true , code-after .tl_gset:N = \g_@@_code_after_tl , - code-after .value_required:n = true , first-col .code:n = \int_zero:N \l_@@_first_col_int , first-row .code:n = \int_zero:N \l_@@_first_row_int , last-row .int_set:N = \l_@@_last_row_int , last-row .default:n = -1 , +% \end{macrocode} +% The following lines are the properties |.value_required:n| and +% |.value_forbidden:n| or the keys. These properties have no effect because they +% are not transmitted by inheritance (unfortunately). We maintain these lines in +% the \textsc{dtx} only for the case of a modification of |l3keys|. +% +% \begin{macrocode} +%<*comment> + columns-width .value_required:n = true , + name .value_required:n = true , + code-after .value_required:n = true , +% } % \end{macrocode} % @@ -5124,10 +5149,7 @@ c & c & b & a & e { \begin { tikzpicture } [ remember~picture ] \tikz@parse@node \pgfutil@firstofone - ( - nm - \int_use:N \g_@@_env_int - col - - \int_use:N \c@jCol - ) + ( nm - \int_use:N \g_@@_env_int - col - \int_use:N \c@jCol ) \dim_gset:Nn \g_@@_x_final_dim \pgf@x \end { tikzpicture } } @@ -6477,13 +6499,12 @@ c & c & b & a & e % has no direct link with the environment |{NiceMatrixBlock}|. % % The following command will be linked to |\Block| in the environments of -% \pkg{nicematrix}. We define it with |\NewExpandableDocumentCommand| of -% \pkg{xparse} because it has an optionnal argument between |<| and |>| (for TeX -% instructions put before the math mode of the label) and because it must be -% expandable since it reduces (in the case of a block of only one row) to a -% command |\multicolumn|. +% \pkg{nicematrix}. We define it with |\NewDocumentCommand| of \pkg{xparse} +% because it has an optionnal argument between |<| and |>| (for TeX instructions +% put before the math mode of the label) +% % \begin{macrocode} -\NewExpandableDocumentCommand \@@_Block: { m D < > { } m } +\NewDocumentCommand \@@_Block: { m D < > { } m } { \@@_Block_i #1 \q_stop { #2 } { #3 } } % \end{macrocode} % @@ -6507,25 +6528,20 @@ c & c & b & a & e % \end{macrocode} % % \medskip -% In the case of a block of only one row, we use a |\multicolumn| and not the -% general technique because, in this case, we want the label perfectly aligned -% with the base line of that row of the array. +% In the case of a block of only one row, we create a special node of shape +% |coordinate| in order to remember the $y$-value of the baseline of the current +% row. % \begin{macrocode} - \int_compare:nNnTF { #1 } = 1 + \int_compare:nNnT { #1 } = 1 { - \multicolumn { #2 } { C } { \hbox:n { #3 $#4$ } } - \@@_gobble_ampersands:n { #2 - 1 } + \begin { tikzpicture } [ remember~picture , baseline ] + \coordinate + ( nm - \int_use:N \g_@@_env_int + - Block + - \int_use:N \c@iRow + - \int_use:N \c@jCol ) ; + \end { tikzpicture } } - { \@@_Block_iii:nnnn { #1 } { #2 } { #3 } { #4 } } - } -% \end{macrocode} -% -% \medskip -% The command |\@@_Block_iii:nnnn| is for the case of a block of $n$~rows with -% $n>1$. -% \begin{macrocode} -\cs_new_protected:Npn \@@_Block_iii:nnnn #1 #2 #3 #4 - { \bool_gset_true:N \g_@@_extra_nodes_bool % \end{macrocode} % We write an instruction in the |code-after|. We write the instruction in the @@ -6536,7 +6552,7 @@ c & c & b & a & e % \begin{macrocode} \tl_gput_left:Nx \g_@@_code_after_tl { - \@@_Block_iv:nnnnn + \@@_Block_iii:nnnnn { \int_use:N \c@iRow } { \int_use:N \c@jCol } { \int_eval:n { \c@iRow + #1 - 1 } } @@ -6546,31 +6562,12 @@ c & c & b & a & e } % \end{macrocode} % -% \medskip -% The command |\@@_gobble_ampersands:n| will gobble $n$ ampersands (and also the -% spaces) where $n$ is the argument of the command. This command is fully -% expandable and we need this feature. -% \begin{macrocode} -\group_begin: - \char_set_catcode_letter:N \& - \cs_new:Npn \@@_gobble_ampersands:n #1 - { - \int_compare:nNnT { #1 } > 0 - { - \peek_charcode_remove_ignore_spaces:NT & - { \@@_gobble_ampersands:n { #1 - 1 } } - } - } -\group_end: -% \end{macrocode} -% +% % % \medskip % The following command |\@@_Block_iii:nnnnn| will be used in the |code-after|. -% It's necessary to create two Tikz nodes because we want the label |#5| really -% drawn in the \emph{center} of the node. % \begin{macrocode} -\cs_new_protected:Npn \@@_Block_iv:nnnnn #1 #2 #3 #4 #5 +\cs_new_protected:Npn \@@_Block_iii:nnnnn #1 #2 #3 #4 #5 { \bool_if:nTF { @@ -6579,23 +6576,59 @@ c & c & b & a & e } { \msg_error:nnnn { nicematrix } { Block~too~large } { #1 } { #2 } } { - \begin{tikzpicture} - \node - [ - fit = ( #1 - #2 - medium . north~west ) - ( #3 - #4 - medium . south~east ) , - inner~sep = 0 pt , - ] +% \end{macrocode} +% If the block has only one row, we have to do a special work in order to have +% the contains of the node aligned with the contents of the other rows of the array. +% +% \begin{macrocode} + \int_compare:nNnTF { #1 } = { #3 } + { + \begin { tikzpicture } +% \end{macrocode} +% First, we compute in |\l_tmpa_dim| the $y$-value of the baseline of the row. +% We have constructed a special node of shape |coordinate| in this order. +% \begin{macrocode} + \tikz@parse@node \pgfutil@firstofone (Block-#1-#2) + \dim_set:Nn \l_tmpa_dim \pgf@y + \node + [ + fit = ( #1 - #2 - medium . north~west ) + ( #3 - #4 - medium . south~east ) , + inner~sep = 0 pt , + ] + (#1-#2) { } ; +% \end{macrocode} +% With the following instruction, we retrieve the $x$-value and the $y$-value of +% the center of the block. We will only use the $x$-value, available in |\pgf@x|. +% \begin{macrocode} + \tikz@parse@node \pgfutil@firstofone (#1-#2) + \path (\pgf@x,\l_tmpa_dim) node [ anchor = base ] { #5 } ; + \end { tikzpicture } + } +% \end{macrocode} +% If the number of rows is different of $1$, it's necessary to create two Tikz +% nodes because we want the label |#5| really drawn in the \emph{center} of the node. +% \begin{macrocode} + { + \begin { tikzpicture } + \node + [ + fit = ( #1 - #2 - medium . north~west ) + ( #3 - #4 - medium . south~east ) , + inner~sep = 0 pt , + ] % \end{macrocode} % We don't forget the name of the node because the user may wish to use it. % \begin{macrocode} - (#1-#2) { } ; - \node at (#1-#2.center) { #5 } ; - \end{tikzpicture} + (#1-#2) { } ; + \node at (#1-#2.center) { #5 } ; + \end { tikzpicture } + } } } % \end{macrocode} % +% % \subsection{How to draw the dotted lines transparently} % \begin{macrocode} \cs_set_protected:Npn \@@_renew_matrix: @@ -6678,7 +6711,7 @@ c & c & b & a & e \AutoNiceMatrixWithDelims { #2 } { #3 } } } -% \end{document} +% \end{macrocode} % \begin{macrocode} \@@_define_com:nnn p ( ) \@@_define_com:nnn b [ ] @@ -6708,6 +6741,8 @@ c & c & b & a & e renew-matrix .value_forbidden:n = true , transparent .meta:n = { renew-dots , renew-matrix } , transparent .value_forbidden:n = true, + obsolete-environments .code:n = + \@@_msg_redirect_name:nn { Obsolete~environment } { none } } \ProcessKeysOptions { NiceMatrix / Package } % \end{macrocode} @@ -6973,15 +7008,17 @@ c & c & b & a & e % \begin{macrocode} \@@_msg_new:nn { Obsolete~environment } { - The~environment~\{\@currenvir\}~is~obsolete~and~will~be~deleted~in~future~version.~ - We~should~use~#1~instead. + The~environment~\{\@currenvir\}~is~obsolete.~We~should~use~#1~instead.~ + However,~you~can~go~on~for~this~time.~ + If~you~don't~want~to~see~this~error~again,~you~should~load~'nicematrix'~ + with~the~option~'obsolete-environments'. } % \end{macrocode} % % \begin{macrocode} \NewDocumentEnvironment { pNiceArrayC } { } { - \msg_info:nnn { nicematrix } { Obsolete~environment } + \@@_error:nn { Obsolete~environment } { the~option~'last-col' } \int_set:Nn \l_@@_last_col_int \c_zero_dim \pNiceArray @@ -6992,7 +7029,7 @@ c & c & b & a & e % \begin{macrocode} \NewDocumentEnvironment { bNiceArrayC } { } { - \msg_info:nnn { nicematrix } { Obsolete~environment } + \@@_error:nn { Obsolete~environment } { the~option~'last-col' } \int_set:Nn \l_@@_last_col_int \c_zero_dim \bNiceArray @@ -7003,7 +7040,7 @@ c & c & b & a & e % \begin{macrocode} \NewDocumentEnvironment { BNiceArrayC } { } { - \msg_info:nnn { nicematrix } { Obsolete~environment } + \@@_error:nn { Obsolete~environment } { the~option~'last-col' } \int_set:Nn \l_@@_last_col_int \c_zero_dim \BNiceArray @@ -7014,7 +7051,7 @@ c & c & b & a & e % \begin{macrocode} \NewDocumentEnvironment { vNiceArrayC } { } { - \msg_info:nnn { nicematrix } { Obsolete~environment } + \@@_error:nn { Obsolete~environment } { the~option~'last-col' } \int_set:Nn \l_@@_last_col_int \c_zero_dim \vNiceArray @@ -7025,7 +7062,7 @@ c & c & b & a & e % \begin{macrocode} \NewDocumentEnvironment { VNiceArrayC } { } { - \msg_info:nnn { nicematrix } { Obsolete~environment } + \@@_error:nn { Obsolete~environment } { the~option~'last-col' } \int_set:Nn \l_@@_last_col_int \c_zero_dim \VNiceArray @@ -7036,7 +7073,7 @@ c & c & b & a & e % \begin{macrocode} \NewDocumentEnvironment { pNiceArrayRC } { } { - \msg_info:nnn { nicematrix } { Obsolete~environment } + \@@_error:nn { Obsolete~environment } { the~options~'last-col'~and~'first-row' } \int_set:Nn \l_@@_last_col_int \c_zero_dim \int_set:Nn \l_@@_first_row_int \c_zero_int @@ -7048,7 +7085,7 @@ c & c & b & a & e % \begin{macrocode} \NewDocumentEnvironment { bNiceArrayRC } { } { - \msg_info:nnn { nicematrix } { Obsolete~environment } + \@@_error:nn { Obsolete~environment } { the~options~'last-col'~and~'first-row' } \int_set:Nn \l_@@_last_col_int \c_zero_dim \int_set:Nn \l_@@_first_row_int \c_zero_int @@ -7060,7 +7097,7 @@ c & c & b & a & e % \begin{macrocode} \NewDocumentEnvironment { BNiceArrayRC } { } { - \msg_info:nnn { nicematrix } { Obsolete~environment } + \@@_error:nn { Obsolete~environment } { the~options~'last-col'~and~'first-row' } \int_set:Nn \l_@@_last_col_int \c_zero_dim \int_set:Nn \l_@@_first_row_int \c_zero_int @@ -7072,7 +7109,7 @@ c & c & b & a & e % \begin{macrocode} \NewDocumentEnvironment { vNiceArrayRC } { } { - \msg_info:nnn { nicematrix } { Obsolete~environment } + \@@_error:nn { Obsolete~environment } { the~options~'last-col'~and~'first-row' } \bool_set_true:N \l_@@_last_col_bool \int_set:Nn \l_@@_first_row_int \c_zero_int @@ -7084,7 +7121,7 @@ c & c & b & a & e % \begin{macrocode} \NewDocumentEnvironment { VNiceArrayRC } { } { - \msg_info:nnn { nicematrix } { Obsolete~environment } + \@@_error:nn { Obsolete~environment } { the~options~'last-col'~and~'first-row' } \int_set:Nn \l_@@_last_col_int \c_zero_dim \int_set:Nn \l_@@_first_row_int \c_zero_int @@ -7096,7 +7133,7 @@ c & c & b & a & e % \begin{macrocode} \NewDocumentEnvironment { NiceArrayCwithDelims } { } { - \msg_info:nnn { nicematrix } { Obsolete~environment } + \@@_error:nn { Obsolete~environment } { the~option~'last-col' } \int_set:Nn \l_@@_last_col_int \c_zero_dim \NiceArrayWithDelims @@ -7107,7 +7144,7 @@ c & c & b & a & e % \begin{macrocode} \NewDocumentEnvironment { NiceArrayRCwithDelims } { } { - \msg_info:nnn { nicematrix } { Obsolete~environment } + \@@_error:nn { Obsolete~environment } { the~options~'last-col'~and~'first-row' } \int_set:Nn \l_@@_last_col_int \c_zero_dim \int_set:Nn \l_@@_first_row_int \c_zero_int @@ -7324,7 +7361,18 @@ c & c & b & a & e % codes: |code-for-first-col|, |code-for-last-col|, |code-for-first-row| and % |code-for-last-row|. % -% New command |\pAutoNiceMatrix| and its variants (suggestion of Christophe Bal). +% New command |\pAutoNiceMatrix| and its variants (suggestion of Christophe +% Bal). +% +% \subsection*{Changes between version 3.7 and 3.8} +% +% New programmation for the command |\Block| when the block has only one row. +% With this programmation, the vertical rules drawn by the specifier +% ``\verb+|+'' at the end of the block is actually drawn. In previous versions, +% they were not because the block of one row was constructed with +% |\multicolumn|. +% +% An error is raised when an obsolete environment is used. % % \PrintIndex % diff --git a/macros/latex/contrib/nicematrix/nicematrix.pdf b/macros/latex/contrib/nicematrix/nicematrix.pdf index f8b8f28703..da9bd49dc6 100644 Binary files a/macros/latex/contrib/nicematrix/nicematrix.pdf and b/macros/latex/contrib/nicematrix/nicematrix.pdf differ diff --git a/macros/latex/contrib/schwalbe-chess/README b/macros/latex/contrib/schwalbe-chess/README index 0d726ff1d8..e4bd960505 100644 --- a/macros/latex/contrib/schwalbe-chess/README +++ b/macros/latex/contrib/schwalbe-chess/README @@ -1,5 +1,5 @@ schwalbe --- A package for typesetting chessproblems -Version v2.3 / Stefan Hoening 2012-2018 +Version v2.7 / Stefan Hoening 2012-2018 CONTENTS diff --git a/macros/latex/contrib/schwalbe-chess/schwalbe.dtx b/macros/latex/contrib/schwalbe-chess/schwalbe.dtx index eda9fc3fc9..0850bb8e04 100644 --- a/macros/latex/contrib/schwalbe-chess/schwalbe.dtx +++ b/macros/latex/contrib/schwalbe-chess/schwalbe.dtx @@ -13,9 +13,9 @@ %% %% % \fi -% \def\fileversion{v2.3} -% \def\docdate{2018/12/20} -% \CheckSum{2056} +% \def\fileversion{v2.7} +% \def\docdate{2019/12/28} +% \CheckSum{2122} % \changes{v1.1}{03 June 2011}{Reflecting change in command % @writename inside diagram.sty} % \changes{v1.2}{01 July 2011}{Added parameter for Band to Heft @@ -46,6 +46,12 @@ % avoid problems when including further packages inside 'schwalbe.tex'.\\ % Added Abteilung commands in Urdrucke- und Loesungen-environments.} % \changes{v2.3}{18 December 2018}{Added commands Loeser and LoeserListe to collect abbreviations of solvernames in different sections of Loesungen} +% \changes{v2.4}{21 September 2019}{Changed parameter in Heft command to be numeric.\\ +% Added command LoesungenBis to calculate the month to send solutions.} +% \changes{v2.5}{29 September 2019}{Changed Loesungen environment to calculate issue month and year of solutions from +% values given in Heft command.} +% \changes{v2.6}{16 October 2019}{Moved do@dia@job redefinition to schwalbe.cls.} +% \changes{v2.7}{28 December 2019}{Used new begin/end diagram hook command to deactivate/activate solslash before/after diagrams.} % % \DoNotIndex{\@arabic,\def,\@idxitem,\@ifnextchar,\@ifstar, % \@ne,\@ptsize,\ ,\advance,\AtEndOfPackage,\begin,\begingroup, @@ -97,16 +103,16 @@ % \begin{enumerate} % \item der Band, zu dem das Heft geh"ort % \item die Nummer des Heftes -% \item der Monat des Erscheinens +% \item der Monat des Erscheinens als Zahl % \item das Jahr des Erscheinens % \item die Seitennummer der ersten Seite des Heftes % \end{enumerate} % -% Das August Heft 2011, das die fortlaufende Nummer 250 hat und mit -% der Seitenummmer 177 beginnt wird demzufolge folgendermassen +% Das Dezember Heft 2019, das die fortlaufende Nummer 299 hat und mit +% der Seitenummmer 361 beginnt wird demzufolge folgendermassen % eingeleitet: % -% \verb+\Heft{XXX}{250}{August}{2011}{177}+ +% \verb+\Heft{XXXIV}{299}{12}{2019}{361}+ % % \DescribeEnv{Editorial} % Die \verb+Editorial+ Umgebung ben"otigt einen Parameter, der @@ -198,9 +204,10 @@ % \verb+retroart+ erläutert. % % \DescribeEnv{Loesungen} -% Die Umgebung \verb+Loesungen+, innerhalb der die -% L"osungsbesprechungen beschrieben werden, ben"otigt 2 -% Parameter: +% Von der \verb+Loesungen+ Umgebung, gibt es eine *-Form, die sonst keine weiteren Parameter erwartet. +% Heftnummer, Monat und Jahr der Lösung werden in diesem Fall automatisch aus +% den Angaben des aktuellen Hefts ermittelt (3 Hefte bzw. 6 Monate zurück). +% Ohne * benötigt die Umgebung \verb+Loesungen+ 2 Parameter: % \begin{enumerate} % \item die Nummer des Hefts mit den Urdrucken % \item Monat und Jahr dieses Hefts @@ -424,9 +431,9 @@ % \begin{macrocode} %<*class> \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{schwalbe}[2017/01/31] +\ProvidesClass{schwalbe}[2019/12/28] \LoadClass[11pt,a4paper]{article} -\RequirePackage[12pt]{schwalbe} +\RequirePackage[12pt]{schwalbe}[2019/12/28] \RequirePackage[T2A,T1]{fontenc}% fsRUS 140121 \RequirePackage[koi8-r,utf8]{inputenc}% fsRUS 140121 \RequirePackage[russian,german,english,ngerman]{babel} @@ -531,23 +538,37 @@ } % \end{macrocode} % +% Im Titel sowie bei den Urdrucken und L"osungen werden die Namen der Monate benötigt. +% +% \begin{macrocode} +\newcommand{\sw@monat}[1]{% +\ifcase#1\relax% +\or Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or Juli\or August\or September\or Oktober\or November\or Dezember\fi% +}% +% \end{macrocode} +% % Der Befehl \verb+\Heft+ leitet jedes Heft ein. Damit werden % Band, Heftnummer, Monat, Jahr und erste Seitennummer des Heftes % spezifiziert. % \begin{macrocode} +\newcounter{sw@issue}% +\newcounter{sw@month}% +\newcounter{sw@year}% \newcommand{\Heft}[5]{% \def\heft@band{#1}% - \def\heft@nr{#2}% - \def\heft@monat{#3}% - \def\heft@year{#4}% + \setcounter{sw@issue}{#2}% + \setcounter{sw@month}{#3}% + \setcounter{sw@year}{#4}% \setcounter{page}{#5}% \hbox to \textwidth{\vbox to 60mm{\vfill}\hfill}% \hbox to \textwidth{% - {\large\bfseries HEFT~#2}% + {\large\bfseries% + HEFT~#2% \hfill% - {\large\bfseries BAND #1}% + BAND #1% \hfill% - {\large\bfseries #3~#4}% + \sw@monat{\value{sw@month}}~#4% + }% }% \vskip2mm% \hrule width \textwidth height 1\p@% @@ -728,6 +749,28 @@ }{} % \end{macrocode} % +% Das Kommando \verb+\LoesungenBis+ gibt den Monat (und ggfs. das Jahr) aus, bis zu dem Lösungen einzusenden sind. +% +% \begin{macrocode} +\newcounter{sw@loesungen@bis@monat} +\newcounter{sw@loesungen@bis@jahr} +% +\newcommand{\LoesungenBis}{% + \setcounter{sw@loesungen@bis@monat}{\value{sw@month}}% + \setcounter{sw@loesungen@bis@jahr}{\value{sw@year}}% + \addtocounter{sw@loesungen@bis@monat}{3}% + \ifthenelse{\value{sw@loesungen@bis@monat} > 12}% + {% + \addtocounter{sw@loesungen@bis@monat}{-12}% + \addtocounter{sw@loesungen@bis@jahr}{1}% + \sw@monat{\value{sw@loesungen@bis@monat}}\ \arabic{sw@loesungen@bis@jahr}% + }% + {% + \sw@monat{\value{sw@loesungen@bis@monat}}% + }% +}% +% \end{macrocode} +% % Innerhalb der Umgebung \verb+Urdrucke+ werden % die Diagramme immer zu dritt nebeneinander gesetzt - % sofern dies pa"st. Au"serdem werden von jedem Diagramm @@ -784,7 +827,12 @@ }{} % \end{macrocode} % -% Die Umgebung f"ur L"osungen ben"otigt 2 Parameter: +% Von der Umbgebung für Lösungen gibt es 2 Varianten: +% \begin{itemize} +% \item gefolgt von einem Stern werden Heft, Monat und Jahr automatisch gesetzt. +% \item ohne Stern werden 2 Parameter benötigt: +% \end{itemize} +% % \begin{enumerate} % \item die Nummer des Heftes mit den Urdrucken % \item Monat und Jahr @@ -803,8 +851,8 @@ \newcommand{\@sw@lsg@abteilung}[4]{% \textbf{#1 Nr. #2-#3} (Bearbeiter = #4)% } -\newenvironment{Loesungen}[2]{% - \begingroup% +\newcommand{\sw@loesungen}[2]{% + \begingroup% \ttitel@skip% \centerline{\Large\bfseries L\"osungen der Urdrucke aus Heft #1, #2}% \titel@skip% @@ -820,8 +868,8 @@ \edef\@tempa{ \write\sw@contents{% \@nearverbatim\@tempb{% - {\@nearverbatim\@tempc}% - {\@nearverbatim\@tempd}% + {\@tempc}% + {\@tempd}% {\@nearverbatim\pageref{inhalt\@nameuse{the@inhalt}}}% }% }% @@ -829,6 +877,26 @@ \expandafter\egroup\@tempa% \parskip.5ex plus 2ex% \catcode`/=\active% +} +\newcounter{sw@loesungen@aus@heft} +\newcounter{sw@loesungen@aus@monat} +\newcounter{sw@loesungen@aus@jahr} +\newcommand{\sw@loesungen@star}{% + \setcounter{sw@loesungen@aus@heft}{\value{sw@issue}}% + \addtocounter{sw@loesungen@aus@heft}{-3}% + \setcounter{sw@loesungen@aus@jahr}{\value{sw@year}}% + \setcounter{sw@loesungen@aus@monat}{\value{sw@month}}% + \addtocounter{sw@loesungen@aus@monat}{-6}% + \ifthenelse{\value{sw@loesungen@aus@monat} < 1}% + {% + \addtocounter{sw@loesungen@aus@monat}{12}% + \addtocounter{sw@loesungen@aus@jahr}{-1}% + }{}% + \sw@loesungen{\arabic{sw@loesungen@aus@heft}}{\sw@monat{\value{sw@loesungen@aus@monat}} \arabic{sw@loesungen@aus@jahr}}% +} + +\newenvironment{Loesungen}{% + \@ifstar{\sw@loesungen@star}{\sw@loesungen}% }{% \catcode`/=12% \endgroup% @@ -941,7 +1009,7 @@ } % \end{macrocode} % -% Die folgenden werden benutzt im Titel zu setzen und ggfs\@. entsprechende +% Die folgenden werden benutzt um Titel zu setzen und ggfs\@. entsprechende % \verb+\label+ zu registrieren. % \begin{macrocode} \let\titel@ext\relax @@ -1598,6 +1666,11 @@ \expandafter\l@@klist\the\aut@tk; \e@list% \egroup% } +% Wenn das Diagramm ausgegeben wird, sollen auch die Informationen ausgegeben werden. +\def\do@dia@job{% + \@write@sol\ifvmode\noindent\fi\unhbox\dia@box% + \sw@problem% +} % Schreiben eines einzelnen Autors in das Inhaltsverzeichnis % \def\sw@problemAuthor#1; {% @@ -1746,12 +1819,13 @@ % Zeichen / aktiviert. % \begin{macrocode} \def\sol@slash{\nobreak\hskip\z@ plus 2\p@\char`/\hskip\z@ plus 2\p@\discretionary{}{}{}} -% \catcode`/=\active\relax\let/\sol@slash\relax\catcode`/=12% -% \def\bsol{\catcode`/=\active\relax} \def\esol{\catcode`/=12\relax} \bsol +\renewcommand{\cpd@begindiagram@hook}{\esol} +\renewcommand{\cpd@enddiagram@hook}{\bsol} + \renewcommand{\section}{\@startsection{section}{1}{\z@}{2ex}{.5ex}{\normalfont\large\bfseries}} \renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}{1ex}{.3ex}{\normalfont\bfseries}} @@ -1768,7 +1842,7 @@ % \begin{macrocode} %<*style> \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{schwalbe}[2017/01/31] +\ProvidesPackage{schwalbe}[2019/12/28] % \end{macrocode} % % Der \textit{Schwalbe-Style} ist eine Erweiterung des @@ -1783,10 +1857,10 @@ % \end{macrocode} % % \begin{macrocode} -\RequirePackage{diagram} +\RequirePackage{diagram}[2019/12/28] % % -% Wir definieren das Diagrammlayout ein wenig um +% Wir definieren das Diagrammlayout ein wenig um. % \newcommand{\rb}[1]{\raisebox{0.4ex}{#1}} \nocomputer @@ -1814,11 +1888,6 @@ \diagramx% \setboardwidth% } - -\def\do@dia@job{% - \@write@sol\ifvmode\noindent\fi\unhbox\dia@box% - \sw@problem% -} % \end{macrocode} % % In der \Schwalbe{} setzen wir keine akademischen Titel. diff --git a/macros/latex/contrib/schwalbe-chess/schwalbe.pdf b/macros/latex/contrib/schwalbe-chess/schwalbe.pdf index 1cb49ee8ea..35cf6524fa 100644 Binary files a/macros/latex/contrib/schwalbe-chess/schwalbe.pdf and b/macros/latex/contrib/schwalbe-chess/schwalbe.pdf differ diff --git a/macros/latex/contrib/verifica/README b/macros/latex/contrib/verifica/README new file mode 100644 index 0000000000..08a900cd50 --- /dev/null +++ b/macros/latex/contrib/verifica/README @@ -0,0 +1,84 @@ +The verifica document class v1.0 2020/01/02 +--------------------------------------------------------------------- +Riccardo Dossena Email: riccardo.dossena@gmail.com +--------------------------------------------------------------------- +copyright 2020 by Riccardo Dossena + +This LaTeX document class is intended for teachers who must write +out the text of a test or an exam. It provides various environments +and commands to produce the typical exercises contained in this +type of document. It is mainly intended for Italian high school +teachers, as the style is probably more in line with Italian high +school tests. For this reason the documentation is mainly written +in Italian. + +This work 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 2005/12/01 or later. + +This work has the LPPL maintenance status "maintained". + +The Current Maintainer of this work is Riccardo Dossena. + +This work consists of the files: + + README (this file) + verifica.dtx + verifica.ins + verifica.pdf + example1.tex + example1.pdf + example2.tex + example2.pdf + example3.tex + example3.pdf + example4.tex + example4.pdf + example5.tex + example5.pdf + verifica-template.tex + +and the derived files: + + verifica.cls + ver-doc.sty + +"ver-doc.sty" is meant only for the documentation of the verifica +document class. Support will not be guaranteed. + +To install the distribution: + +- run "latex verifica.ins" +- move "verifica.cls" to locations where LaTeX can find it + (see the TeX FAQ at https://texfaq.org/FAQ-inst-wlcf) +- you can test the document class by running + "pdflatex example1.tex" ... + "latex example1.tex" ... + "xelatex example1.tex" ... + (compile each of the five examples) + +To reproduce the complete documentation, run + +pdflatex verifica.dtx +makeindex -s gind verifica +pdflatex verifica.dtx +pdflatex verifica.dtx + +Additional Packages +------------------- +The verifica document class loads the following packages: +enumitem, graphicx, mathtools, amssymb, geometry, nccmath, multido, +setspace, multicol, gensymb, newunicodechar, textcomp, eurosym, +tabto, tabularx, lineno, bm, cmbright. +If the option "14pt" is set, it loads the extarticle class document. + +2020/01/02 +Riccardo Dossena +--------------------------------------------------------------------- +If you have any ideas, questions, suggestions, feedback or bugs to +report, please feel free to contact me. +--------------------------------------------------------------------- diff --git a/macros/latex/contrib/verifica/example1.pdf b/macros/latex/contrib/verifica/example1.pdf new file mode 100644 index 0000000000..245dd6aa59 Binary files /dev/null and b/macros/latex/contrib/verifica/example1.pdf differ diff --git a/macros/latex/contrib/verifica/example1.tex b/macros/latex/contrib/verifica/example1.tex new file mode 100644 index 0000000000..80e663c67b --- /dev/null +++ b/macros/latex/contrib/verifica/example1.tex @@ -0,0 +1,106 @@ +\documentclass{verifica} + +\usepackage[utf8]{inputenc} +\usepackage[italian]{babel} +\usepackage[T1]{fontenc} +\usepackage{lmodern} + +\begin{document} + +\tipologia{prova orale} +\disciplina{matematica} +\istituto{Liceo ``G. Novello'' -- Codogno} +\classe{5\tsa B} +\data{11 novembre 2019} +\tempo{60 minuti} + +\intestazione + +\begin{esercizi} + +\item La soluzione dell'equazione $x+1=0$ è: +\begin{test-orizz} + \item $1$; + \item $-1$; + \item $0$; + \item $+\infty$. +\end{test-orizz} +\punti{5} + +\item Quale fra le seguenti è la derivata di $3x^2$? \punti{5} +\begin{test-orizz-newline} +\item $3x$; +\item $3$; +\item $3x^2$; +\item $6x$. +\end{test-orizz-newline} + +\medskip + +{\setlength\columnsep{2.5cm} % lo spazio tra le colonne si può modificare +\begin{multicols}{2} +\item Indicate con $p$ e $q$ due generiche proposizioni, quattro delle + seguenti affermazioni sono tra loro logicamente equivalenti, mentre + una non lo è con le altre. Quale? +\begin{test} +\item $p$ implica $q$ +\item $q$ è condizione necessaria per $p$ +\item $p$ segue dal verificarsi di $q$ +\item $p$ solo se $q$ +\item $p$ è condizione sufficiente per~$q$\\ \punti{5} +\end{test} + +\columnbreak + +\item Quale delle seguenti frasi è equivalente a + +\emph{non è vero che Mario studia e ascolta la radio} + +\begin{test} +\item Mario studia e ascolta la radio +\item Mario studia o ascolta la radio +\item Mario non studia né ascolta la radio +\item Mario non studia o non ascolta la radio \punti{5} +\end{test} + +\end{multicols}} + +\item Vero o falso? \punti[per ognuna]{2} + +{\setlength\columnsep{1.3cm} % lo spazio tra le colonne si può modificare +\begin{multicols}{3} +\begin{enumerate}[a)] + \item $1+1=2$ \vf + \item $3+0=0$ \vf + \item $3\times 3=9$ \vf + \item $0:3=1$ \vf + \item $\lim_{x\to 2}x^2=4$ \vf + \item $\sum_{n=0}^{1}n^2=1$ \vf +\end{enumerate} +\end{multicols}} + +\item Enuncia il teorema di Weierstrass. \punti{8} + +\riga{2} + +\item \emph{Completa.} \doublespacing In un triangolo \dotword{rettangolo} + il quadrato costruito sull' \dotword{ipotenusa} è uguale alla + \dotword{somma} dei \dotword{quadrati} costruiti sui + \dotword{cateti}. \punti{20} \par\singlespacing + +\item Stabilisci se le seguenti affermazioni sono vere o + false. \punti[per ognuna]{10} + +\begin{enumerate}[a)] + \item \verofalso[.8]{Il coefficiente angolare di una retta si deve + \emph{sempre} indicare con la lettera $m$ e l'ordinata all'origine + \emph{sempre} con la lettera $q$.} + \item \verofalso[.8]{Se una funzione derivabile in un intervallo ha + derivata positiva, allora la funzione è crescente in tale intervallo.} +\end{enumerate} + +\end{esercizi} + +\totpunti[/10+2] + +\end{document} diff --git a/macros/latex/contrib/verifica/example2.pdf b/macros/latex/contrib/verifica/example2.pdf new file mode 100644 index 0000000000..96b31f56cb Binary files /dev/null and b/macros/latex/contrib/verifica/example2.pdf differ diff --git a/macros/latex/contrib/verifica/example2.tex b/macros/latex/contrib/verifica/example2.tex new file mode 100644 index 0000000000..4cad4f3de2 --- /dev/null +++ b/macros/latex/contrib/verifica/example2.tex @@ -0,0 +1,105 @@ +\documentclass[senzagrazie]{verifica} + +\usepackage[utf8]{inputenc} +\usepackage[italian]{babel} +\usepackage[T1]{fontenc} + +\begin{document} + +\tipologia{prova orale} +\disciplina{matematica} +\istituto{Liceo ``G. Novello'' -- Codogno} +\classe{5\tsa B} +\data{11 novembre 2019} +\tempo{60 minuti} + +\intestazione + +\begin{esercizi} + +\item La soluzione dell'equazione $x+1=0$ è: +\begin{test-orizz} + \item $1$; + \item $-1$; + \item $0$; + \item $+\infty$. +\end{test-orizz} +\punti{5} + +\item Quale fra le seguenti è la derivata di $3x^2$? \punti{5} +\begin{test-orizz-newline} +\item $3x$; +\item $3$; +\item $3x^2$; +\item $6x$. +\end{test-orizz-newline} + +\medskip + +{\setlength\columnsep{2.5cm} % lo spazio tra le colonne si può modificare +\begin{multicols}{2} +\item Indicate con $p$ e $q$ due generiche proposizioni, quattro delle + seguenti affermazioni sono tra loro logicamente equivalenti, mentre + una non lo è con le altre. Quale? +\begin{test} +\item $p$ implica $q$ +\item $q$ è condizione necessaria per $p$ +\item $p$ segue dal verificarsi di $q$ +\item $p$ solo se $q$ +\item $p$ è condizione sufficiente per~$q$\\ \punti{5} +\end{test} + +\columnbreak + +\item Quale delle seguenti frasi è equivalente a + +\emph{non è vero che Mario studia e ascolta la radio} + +\begin{test} +\item Mario studia e ascolta la radio +\item Mario studia o ascolta la radio +\item Mario non studia né ascolta la radio +\item Mario non studia o non ascolta la radio \punti{5} +\end{test} + +\end{multicols}} + +\item Vero o falso? \punti[per ognuna]{2} + +{\setlength\columnsep{1.3cm} % lo spazio tra le colonne si può modificare +\begin{multicols}{3} +\begin{enumerate}[a)] + \item $1+1=2$ \vf + \item $3+0=0$ \vf + \item $3\times 3=9$ \vf + \item $0:3=1$ \vf + \item $\lim_{x\to 2}x^2=4$ \vf + \item $\sum_{n=0}^{1}n^2=1$ \vf +\end{enumerate} +\end{multicols}} + +\item Enuncia il teorema di Weierstrass. \punti{8} + +\riga{2} + +\item \emph{Completa.} \doublespacing In un triangolo \dotword{rettangolo} + il quadrato costruito sull' \dotword{ipotenusa} è uguale alla + \dotword{somma} dei \dotword{quadrati} costruiti sui + \dotword{cateti}. \punti{20} \par\singlespacing + +\item Stabilisci se le seguenti affermazioni sono vere o + false. \punti[per ognuna]{10} + +\begin{enumerate}[a)] + \item \verofalso[.8]{Il coefficiente angolare di una retta si deve + \emph{sempre} indicare con la lettera $m$ e l'ordinata all'origine + \emph{sempre} con la lettera $q$.} + \item \verofalso[.8]{Se una funzione derivabile in un intervallo ha + derivata positiva, allora la funzione è crescente in tale intervallo.} +\end{enumerate} + +\end{esercizi} + +\totpunti[/10+2] + +\end{document} diff --git a/macros/latex/contrib/verifica/example3.pdf b/macros/latex/contrib/verifica/example3.pdf new file mode 100644 index 0000000000..18e6637d2d Binary files /dev/null and b/macros/latex/contrib/verifica/example3.pdf differ diff --git a/macros/latex/contrib/verifica/example3.tex b/macros/latex/contrib/verifica/example3.tex new file mode 100644 index 0000000000..6486db2043 --- /dev/null +++ b/macros/latex/contrib/verifica/example3.tex @@ -0,0 +1,89 @@ +\documentclass[senzagrazie,14pt]{verifica} + +\usepackage[utf8]{inputenc} +\usepackage[italian]{babel} +\usepackage[T1]{fontenc} + +\begin{document} + +\tipologia{prova orale} +\disciplina{matematica} +\istituto{Liceo ``G. Novello'' -- Codogno} +\classe{5\tsa B} +\data{11 novembre 2019} +\tempo{60 minuti} + +\intestazione + +\begin{esercizi}[itemsep=1.5em] + +\item La soluzione dell'equazione $x+1=0$ è: +\begin{test-orizz} + \item $1$; + \item $-1$; + \item $0$; + \item $+\infty$. +\end{test-orizz} +\punti{10} + +\item Quale fra le seguenti è la derivata di $3x^2$? \punti{10} +\begin{test-orizz-newline} +\item $3x$; +\item $3$; +\item $3x^2$; +\item $6x$. +\end{test-orizz-newline} + +\bigskip + +{\setlength\columnsep{2.5cm} % lo spazio tra le colonne si può modificare +\begin{multicols}{2} +\item Indicate con $p$ e $q$ due generiche proposizioni, quattro delle + seguenti affermazioni sono tra loro logicamente equivalenti, mentre + una non lo è con le altre. Quale? +\begin{test} +\item $p$ implica $q$ +\item $q$ è condizione necessaria per $p$ +\item $p$ segue dal verificarsi di $q$ +\item $p$ solo se $q$ +\item $p$ è condizione sufficiente per~$q$ \punti{10} +\end{test} + +\columnbreak + +\item Quale delle seguenti frasi è equivalente a + +\emph{non è vero che Mario studia e ascolta la radio} + +\begin{test} +\item Mario studia e ascolta la radio +\item Mario studia o ascolta la radio +\item Mario non studia né ascolta la radio +\item Mario non studia o non ascolta la radio\\ \punti{10} +\end{test} + +\end{multicols}} + +\item Vero o falso? \punti[per ognuna]{5} + +{\setlength\columnsep{1.3cm} % lo spazio tra le colonne si può modificare +\begin{multicols}{2} +\begin{enumerate}[a),wide=0pt] + \item $1+1=2$ \vf + \item $3+0=0$ \vf + \item $3\times 3=9$ \vf + \item $0:3=1$ \vf + \item $\lim_{x\to 2}x^2=4$ \vf + \item $\sum_{n=0}^{1}n^2=1$ \vf +\end{enumerate} +\end{multicols}} + +\item Enuncia il teorema di Weierstrass. \punti{10} + +\riga{2} + +\end{esercizi} + +\totpunti[/10+2] + +\end{document} diff --git a/macros/latex/contrib/verifica/example4.pdf b/macros/latex/contrib/verifica/example4.pdf new file mode 100644 index 0000000000..4e43feb98f Binary files /dev/null and b/macros/latex/contrib/verifica/example4.pdf differ diff --git a/macros/latex/contrib/verifica/example4.tex b/macros/latex/contrib/verifica/example4.tex new file mode 100644 index 0000000000..74fed68e56 --- /dev/null +++ b/macros/latex/contrib/verifica/example4.tex @@ -0,0 +1,97 @@ +\documentclass{verifica} + +\usepackage[utf8]{inputenc} +\usepackage[english,italian]{babel} +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage{tasks} + +\begin{document} + +\tipologia{verifica} +\disciplina{matematica e fisica} +\istituto{Liceo ``G. Novello'' -- Codogno} +\classe{4\tsa C} +\data{10 ottobre 2019} +\tempo{55 minuti} + +\intestazionerighe + +\begin{esercizi} + +\item Data l'ellisse +\[ + 9x^2+y^2+36x-4y+4=0 +\] +calcola il suo centro, i valori dei semiassi, i fuochi e l'eccentricità. + +\item Un aereo di linea ha una potenza sonora di circa + $4,8\times 10^4\unit{W}$. Un operatore aeroportuale si trova + a $25\unit{m}$ di distanza. +\begin{itemize} + \item Calcola l'intensità e il livello sonoro percepiti dall'operatore. + \item Calcola l'intensità e il livello sonoro a $1,5\times 10^3\unit{m}$ + di distanza. +\end{itemize} + +\item Data l'equazione +\[ + \frac{x^2}{25}+\frac{y^2}{12-k}=1 +\] +determina per quale valore di $k$ essa rappresenta +\begin{enumerate}[a)] + \item un'ellisse; + \item un'ellisse coi fuochi sull'asse $x$; + \item un'ellisse coi fuochi sull'asse $y$; + \item un'ellisse passante per il punto $(-2, 1)$; + \item un'ellisse passante per il punto $(5\sqrt{2},-1)$. +\end{enumerate} + +\item Risolvi le seguenti equazioni e disequazioni. +\begin{tasks}[after-item-skip=2em,column-sep=2em,item-indent=2em](2) + \task $\dss{2\cos^2 x +3\sin^2 x=\frac{5}{2}\sin 2x}$ + \task $\dss{\frac{1 -\cos 2x}{\sqrt{3}\sin x}=\frac{\tan x}{2\cos x}}$ + \task $\dss{2\sin^2 x +3\cos x -2 \le 0}$ + \task $\dss{3\sin^2 x -2\sqrt{3}\sin x\cos x > 3\cos^2 x}$ +\end{tasks} + +\item \begin{otherlanguage}{english} +True or false? +\begin{enumerate}[a)] + \item The speed of light in vacuum is approximately + $3.0\times 10^8\unitx{m/s}$. \vf + \item \verofalso{The gravitational acceleration of an object in + vacuum, near the surface of the Earth, is denoted by $g$ + and is approximately $9.8\unitx{m/s^2}$. At different + points, $g$ changes depending on altitude and latitude.} +\end{enumerate} +\end{otherlanguage} + +\end{esercizi} + +\vfill + +% tabella per l'attribuzione dei singoli punteggi +% consultare la documentazione del pacchetto tabularx +\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}} +\begin{flushright} +{\renewcommand{\arraystretch}{1.2} +\begin{tabularx}{\textwidth}{|X|*{12}{P{.75cm}|}} +\hline +\textbf{Esercizio} & \textbf{1} & \textbf{2} & \multicolumn{5}{c|}{\textbf{3}} + & \multicolumn{4}{c|}{\textbf{4}} + & \textbf{5} \\ +\cline{4-12} + & & & a & b & c & d & e & a & b & c & d & \\ +\hline +\hline +Punteggio & 9 & 9 & 6 & 6 & 6 & 6 & 6 & 10 & 10 & 12 & 12 & 4 \\ +\hline +Totalizzato & & & & & & & & & & & &\\ +\hline +\end{tabularx}} +\end{flushright} + +\vartotpunti[/12+2] + +\end{document} diff --git a/macros/latex/contrib/verifica/example5.pdf b/macros/latex/contrib/verifica/example5.pdf new file mode 100644 index 0000000000..4c0c29ef0a Binary files /dev/null and b/macros/latex/contrib/verifica/example5.pdf differ diff --git a/macros/latex/contrib/verifica/example5.tex b/macros/latex/contrib/verifica/example5.tex new file mode 100644 index 0000000000..be9f3e0700 --- /dev/null +++ b/macros/latex/contrib/verifica/example5.tex @@ -0,0 +1,96 @@ +\documentclass[senzagrazie]{verifica} + +\usepackage[utf8]{inputenc} +\usepackage[english,italian]{babel} +\usepackage[T1]{fontenc} +\usepackage{tasks} + +\begin{document} + +\tipologia{verifica} +\disciplina{matematica e fisica} +\istituto{Liceo ``G. Novello'' -- Codogno} +\classe{4\tsa C} +\data{10 ottobre 2019} +\tempo{55 minuti} + +\intestazionerighe + +\begin{esercizi} + +\item Data l'ellisse +\[ + 9x^2+y^2+36x-4y+4=0 +\] +calcola il suo centro, i valori dei semiassi, i fuochi e l'eccentricità. + +\item Un aereo di linea ha una potenza sonora di circa + $4,8\times 10^4\unit{W}$. Un operatore aeroportuale si trova + a $25\unit{m}$ di distanza. +\begin{itemize} + \item Calcola l'intensità e il livello sonoro percepiti dall'operatore. + \item Calcola l'intensità e il livello sonoro a $1,5\times 10^3\unit{m}$ + di distanza. +\end{itemize} + +\item Data l'equazione +\[ + \frac{x^2}{25}+\frac{y^2}{12-k}=1 +\] +determina per quale valore di $k$ essa rappresenta +\begin{enumerate}[a)] + \item un'ellisse; + \item un'ellisse coi fuochi sull'asse $x$; + \item un'ellisse coi fuochi sull'asse $y$; + \item un'ellisse passante per il punto $(-2, 1)$; + \item un'ellisse passante per il punto $(5\sqrt{2},-1)$. +\end{enumerate} + +\item Risolvi le seguenti equazioni e disequazioni. +\begin{tasks}[after-item-skip=2em,column-sep=2em,item-indent=2em](2) + \task $\dss{2\cos^2 x +3\sin^2 x=\frac{5}{2}\sin 2x}$ + \task $\dss{\frac{1 -\cos 2x}{\sqrt{3}\sin x}=\frac{\tan x}{2\cos x}}$ + \task $\dss{2\sin^2 x +3\cos x -2 \le 0}$ + \task $\dss{3\sin^2 x -2\sqrt{3}\sin x\cos x > 3\cos^2 x}$ +\end{tasks} + +\item \begin{otherlanguage}{english} +True or false? +\begin{enumerate}[a)] + \item The speed of light in vacuum is approximately + $3.0\times 10^8\unitx{m/s}$. \vf + \item \verofalso{The gravitational acceleration of an object in + vacuum, near the surface of the Earth, is denoted by $g$ + and is approximately $9.8\unitx{m/s^2}$. At different + points, $g$ changes depending on altitude and latitude.} +\end{enumerate} +\end{otherlanguage} + +\end{esercizi} + +\vfill + +% tabella per l'attribuzione dei singoli punteggi +% consultare la documentazione del pacchetto tabularx +\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}} +\begin{flushright} +{\renewcommand{\arraystretch}{1.2} +\begin{tabularx}{\textwidth}{|X|*{12}{P{.75cm}|}} +\hline +\textbf{Esercizio} & \textbf{1} & \textbf{2} & \multicolumn{5}{c|}{\textbf{3}} + & \multicolumn{4}{c|}{\textbf{4}} + & \textbf{5} \\ +\cline{4-12} + & & & a & b & c & d & e & a & b & c & d & \\ +\hline +\hline +Punteggio & 9 & 9 & 6 & 6 & 6 & 6 & 6 & 10 & 10 & 12 & 12 & 4 \\ +\hline +Totalizzato & & & & & & & & & & & &\\ +\hline +\end{tabularx}} +\end{flushright} + +\vartotpunti[/12+2] + +\end{document} diff --git a/macros/latex/contrib/verifica/verifica-template.tex b/macros/latex/contrib/verifica/verifica-template.tex new file mode 100644 index 0000000000..eebd0791bc --- /dev/null +++ b/macros/latex/contrib/verifica/verifica-template.tex @@ -0,0 +1,29 @@ +\documentclass{verifica} + +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage[italian]{babel} +\usepackage{lmodern} + +\begin{document} + +% decommentare i comandi seguenti e ridefinirli come si desidera + +%\tipologia{verifica} +%\disciplina{matematica} +%\istituto{Liceo ``G. Novello'' -- Codogno} +%\classe{5\tsa W} +%\data{11 novembre 2019} +%\tempo{2 ore} + +\intestazione % alernative: \intestazionesemplice \intestazionerighe + +\begin{esercizi} + +\item + +\end{esercizi} + +\totpunti % se il calcolo è diverso da /10+1 usare \totpunti[] + +\end{document} diff --git a/macros/latex/contrib/verifica/verifica.dtx b/macros/latex/contrib/verifica/verifica.dtx new file mode 100644 index 0000000000..2b0b735edc --- /dev/null +++ b/macros/latex/contrib/verifica/verifica.dtx @@ -0,0 +1,2477 @@ +% \iffalse meta-comment +% +% verifica.cls. Version: 1.0 - January 2, 2020. +% Author: Riccardo DOSSENA +% +% Questa è una classe per comporre le verifiche +%-------------------------------------------------------------------------------- +% Copyright 2020 R. Dossena +% +% This work 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 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is R. Dossena. +%-------------------------------------------------------------------------------- +% +% \fi +% \iffalse +%<*driver> +\ProvidesFile{verifica.dtx} +% +%\NeedsTeXFormat{LaTeX2e} +%\ProvidesClass{verifica} +%\ProvidesPackage{ver-doc} +%<*class|package> + [2020/01/02 v1.0 Riccardo Dossena] +% +% +%<*driver> +\PassOptionsToClass{a4paper}{article} +\documentclass{ltxdoc} +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage[english,italian]{babel} +\usepackage{lmodern} +\usepackage{microtype} +\usepackage{indentfirst} +\usepackage{ver-doc} +\usepackage[numbered]{hypdoc} % after ver-doc 'cause setspace interferes +\usepackage[all]{hypcap} % needed to help hyperlinks direct correctly; +\usepackage{booktabs} +\usepackage[dvipsnames]{xcolor} +\usepackage{listings} + +\newcommand{\pack}[1]{\mbox{\sffamily#1}} +\newcommand{\opt}[1]{``\texttt{#1}''} +\newcommand{\env}{\texttt} +\def\labelitemi{\small $\blacktriangleright$} + +\setISOcompliance + +\definecolor{lightergray}{gray}{0.99} +\definecolor{mathgreen}{RGB}{2,112,10} + +\lstset{language=[LaTeX]TeX, + keywordstyle=\color{RoyalBlue}, + aboveskip=\bigskipamount, + belowskip=\medskipamount, + basicstyle=\ttfamily, + commentstyle=\color{Emerald}\ttfamily, + stringstyle=\rmfamily, + numberstyle=\scriptsize, + showstringspaces=false, + breaklines=true, + frame=lines, + backgroundcolor=\color{lightergray}, + flexiblecolumns=true, + escapeinside={?*}{*)}, + firstnumber=last, + inputencoding=utf8, + keepspaces=true, + literate={à}{{\`a}}1 {è}{{\`e}}1 {é}{{\'e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 + {ù}{{\`u}}1 {È}{{\`E}}1 {°}{{\degree}}1 + {}{\{\color{green!60!black}}1 {}{\}\normalcolor}1, + % keyword highlighting + keywordstyle=[2]{\color{RedOrange}}, + keywordstyle=[3]{\color{Mahogany}}, + otherkeywords={$,\\[,\\],&}, + morekeywords=[2]{$,\\[,\\],&}, + morekeywords=[3]{intestazione,tipologia,disciplina,istituto, + data,classe,tempo,intestazionesemplice, + intestazionerighe,dss,vf,verofalso,fattorevf,punti, + puntiadestra,puntipt,totpunti,vartotpunti, + riga,dotword,dotrule,ddfrac,numfrac,denfrac, + arc,vararc,eps,del,Del,R,N,Z,Q,tsa,tso, + restorephi,restoretheta,abs,labeltest,labelbox, + biglabelbox,unitx}, +} + +\lstset{morekeywords=% + {setlength,subsection,part,chapter,dfrac,varto, + ointclockwise,iint,iiint,oiint,IntelligentComma,NoIntelligentComma, + setISOcompliance,unit,text,SI,DeclareMathOperator,mathbb, + mathcal,varnothing,lvert,rvert,lVert,rVert,implies,boldsymbol, + binom,hdotsfor,ap,ped,notag,eqref,theoremstyle,swapnumbers, + qedhere,qedsymbol,blacksquare,newunicodechar,foreignlanguage, + setactivedoublequote,maketitle,euro,EUR,includegraphics, + tableofcontents,refname,bibname,setbibliographyfont,btxauthorcolon, + addbibresource,printbibliography,printindex,indexprologue, + appendix,listoffigures,listoftables,graphicspath,RequirePackage, + toprule,midrule,bottomrule,sisetup,multirow,cmidrule,rowcolors, + scalebox,resizebox,rotatebox,reflectbox,cancel,bcancel,xcancel, + setstretch,doublespacing,onehalfspacing,singlespacing,textcolor, + color,url,href,DeclareFontEncoding,DeclareFontSubstitution, + DeclareMathAlphabet,bm,pmb,columnbreak,tag,cfrac,micro,selectlanguage}} + +\usepackage{tcolorbox} +\newenvironment{riquadro}[1][]{% +\begin{tcolorbox}[arc=0mm,colback=SkyBlue!10,colframe=black,boxrule=.6pt,% + before={\par\medskip\pagebreak[0]\noindent},% + after={\smallskip},#1]}% +{\end{tcolorbox}} + +\newlist{options}{description}{1} +\setlist[options]{leftmargin=10em,font=\ttfamily,style=sameline} + +\newcommand{\Mcmd}[1]{\texttt{\textbackslash\color{Mahogany}#1}} +\newcommand{\Bcmd}[1]{\texttt{\textbackslash\color{RoyalBlue}#1}} + +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{verifica.dtx} +\end{document} +% +% \fi +% +% \CheckSum{0} +% +% \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}{2019/11/28}{First public release} +% +% \GetFileInfo{verifica.dtx} +% +% \DoNotIndex{\newcommand,\newenvironment,\def,\begin,\end,\par} +% \DoNotIndex{\DeclareOption,\ExecuteOptions,\ProcessOptions,\RequirePackage} +% \DoNotIndex{\LoadClass,\AtBeginDocument,\SetSymbolFont} +% \DoNotIndex{\newif,\geometry,\pagestyle,\setISOcompliance,\IntelligentComma} +% \DoNotIndex{\relax,\let,\phi,\theta,\varphi,\vartheta,\else,\fi,\undefined} +% \DoNotIndex{\renewcommand,\newlength,\hline,\textbf,\textit,\\,\setlength} +% \DoNotIndex{\DeclarePairedDelimiter,\MakeUppercase,\MessageBreak,\ClassError} +% \DoNotIndex{\widthof,\textwidth,\ifdefined,\null,\vspace,\noindent,\hfill} +% \DoNotIndex{\hrulefill,\makebox,\linewidth,\small,\centering,\lvert,\rvert} +% \DoNotIndex{\newunicodechar,\ensuremath,\circ,\textsuperscript,\,} +% \DoNotIndex{\varepsilon,\delta,\Delta,\displaystyle,\mathbb,\arraystretch} +% \DoNotIndex{\bm,\box,\DeclareFontShape,\DeclareFontFamily,\DeclareMathAccent} +% \DoNotIndex{\DeclareSymbolFont,\doublespacing,\frac,\mathstrut,\bfseries} +% \DoNotIndex{\usefont,\symbol,\mathpalette,\sbox,\vbox,\hbox,\box} +% \DoNotIndex{\m@th,\wd,\resizebox,\height,\nointerlineskip,\mathord} +% \DoNotIndex{\mathrm,\labelitemi,\blacktriangleright,\textup,\fbox,\parbox} +% \DoNotIndex{\alph,\newlist,\renewlist,\setlist,\hspace,\iflanguage,\protect} +% \DoNotIndex{\ifdim,\newcounter,\newsavebox,\savebox,\setcounter,\linenumbers} +% \DoNotIndex{\thelinenumbers,\addtocounter,\multido,\i,\phantom,\newline} +% \DoNotIndex{\value,\leavevmode,\leaders,\hss,\kern,\real,\tabcolsep,\space} +% \DoNotIndex{\doublespacing,\singlespacing,\@nil,\@nnil,\vphantom,\today} +% \DoNotIndex{\nolinebreak,\null,\textsc,\ifx,\tmp,\mbox,\vfill,\LARGE,\Huge} +% +% \title{La classe \pack{verifica}} +% \author{Riccardo Dossena\thanks{% +% E-mail: \href{mailto:riccardo.dossena@gmail.com}% +% {\ttfamily riccardo.dossena@gmail.com}}} +% +% \maketitle +% +% \pagestyle{plain} +% +% \selectlanguage{english} +% \begin{abstract} +% This LaTeX document class is intended for teachers who must write +% out the text of a test or an exam. It provides various environments +% and commands to produce the typical exercises contained in this +% type of document. It is mainly intended for Italian high school teachers, +% as the style is probably more in line with Italian high school tests. +% \end{abstract} +% +% \selectlanguage{italian} +% +% \tableofcontents +% +% \section{Introduzione} +% +% Questa classe di documento è rivolta principalmente agli insegnanti delle +% scuole superiori italiane che devono comporre il testo di una verifica, di un +% esame o di un test. Essa mette a disposizione vari ambienti e comandi per +% produrre gli esercizi tipici contenuti in questo tipo di documento. +% +% Il codice è stato abbozzato in occasione dell'ultima lezione del Corso \LaTeX\ +% tenuto al Liceo Novello di Codogno (LO) +% fra ottobre e novembre 2019, prima sotto forma di pacchetto e in seguito di +% classe. L'intento era di fornire ai partecipanti uno strumento +% concreto e utile per la realizzazione di uno fra i documenti più +% frequentemente utilizzati: il test, comunemente chiamato ``verifica''. +% Le attente osservazioni dei miei ottimi colleghi mi hanno spinto in seguito +% a potenziare la classe, al fine di permettere una migliore personalizzazione +% e un più efficace utilizzo degli ambienti definiti. +% +% \section{Licenza} +% +% Il codice \LaTeX\ di questa classe è rilasciato sotto la \LaTeX\ Project +% Public License, v1.3. +% +% \section{Come usare la classe \pack{verifica}} +% +% Per usare la classe è sufficiente copiare il file \texttt{verifica.cls} nella +% stessa cartella dove risiede il file sorgente del documento che si +% vuole comporre, oppure installarlo secondo le procedure standard in una +% directory opportuna della propria distribuzione \TeX\footnote{Si vedano, nel +% caso, le \TeX\ FAQ alla pagina \url{https://texfaq.org/FAQ-inst-wlcf}.}. +% Per iniziare a editare un documento si può digitare direttamente il file +% \texttt{verifica-template.tex}, che contiene alcuni comandi già impostati. +% +% Per caricare la classe, il comando da dare nel preambolo è +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\documentclass{verifica} +\end{lstlisting} +%\iffalse +% +%\fi +% \subsection{Opzioni di classe} +% +% Le opzioni di default per il corpo del testo e per il formato della pagina +% sono \opt{11pt} e \opt{a4paper}. È possibile tuttavia modificarle inserendo +% altre opzioni di classe, ad esempio: +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\documentclass[12pt,a5paper]{verifica} +\end{lstlisting} +%\iffalse +% +%\fi +% Le opzioni di classe disponibili, oltre a quelle per il formato pagina, +% sono elencate di seguito. +% +% \begin{options}[leftmargin=4.2cm,itemsep=2pt] +% \item[10pt] corpo del testo a $10\unit{pt}$ +% \item[11pt] corpo del testo a $11\unit{pt}$ (default) +% \item[12pt] corpo del testo a $12\unit{pt}$ +% \item[14pt] corpo del testo a $14\unit{pt}$ +% \item[senzagrazie] stile del testo senza grazie (font \pack{cmbright}) +% \item[textbullet] stile punti elenco \textbullet\ (anziché +% {\small $\blacktriangleright$}) +% \item[intestazionesemplice] intestazione stile ``semplice'' +% \item[intestazionerighe] intestazione stile ``con righe'' +% \end{options} +% +%\section{L'intestazione della verifica} +% +% Per creare l'intestazione della verifica occorre impostare i comandi che ne +% definiscono la tipologia, la disciplina, l'istituto, la data, la classe ed +% eventualmente il tempo a disposizione~(tabella~\ref{tab:intest}). +% \begin{table}[htbp] +% \centering +% \renewcommand{\arraystretch}{1.4}\renewcommand{\tabcolsep}{1.2em} +% \begin{tabularx}{\linewidth}{lp{.3\linewidth}X} +% \toprule +% \textbf{Comando} & \textbf{Esempi/descrizione} & \textbf{Valore di% +% default} \\ +% \midrule +% \Mcmd{tipologia} & verifica, prova per competenze,% +% test, prova comune,% +% verifica orale, \ldots & verifica \\ +% \Mcmd{disciplina} & matematica, fisica, scienze,% +% italiano, \ldots & matematica \\ +% \Mcmd{istituto} & nome dell'Istituto & Liceo ``G. Novello''% +% -- Codogno \\ +% \Mcmd{data} & data della verifica & \Bcmd{today}% +% (data odierna) \\ +% \Mcmd{classe} & classe & \emph{non definito} \\ +% \Mcmd{tempo} & tempo a disposizione & \emph{non definito} \\ +% \bottomrule +% \end{tabularx} +% \caption{I comandi per l'intestazione della verifica.}\label{tab:intest} +% \end{table} +% +% Per generare l'intestazione si deve inserire il comando +% \lstinline|\intestazione|. +% +% La classe \pack{verifica} fornisce inoltre i comandi \lstinline|\tsa| e +% \lstinline|\tso|\footnote{Abbreviazioni di +% \Bcmd{textsuperscript}\texttt{\{a\}} e \Bcmd{textsuperscript}\texttt{\{o\}}.} +% che generano rispettivamente i simboli~$\textsuperscript{a}$ +% e~$\textsuperscript{o}$ per i numeri ordinali, seguiti da uno spazio +% fine. Essi sono utili per scrivere l'argomento di \lstinline|\classe|. +% +% Mostriamo un esempio di intestazione standard: +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{document} + +\tipologia{verifica orale} +\disciplina{fisica} +\istituto{Liceo ``F. Indovino'' -- Roma} +\classe{3\tsa C} +\data{12 novembre 2019} + +\intestazione +\end{lstlisting} +%\iffalse +% +%\fi +% \makeatletter +% \def\@tipologia{verifica orale} +% \def\@disciplina{fisica} +% \def\@istituto{Liceo ``F. Indovino'' -- Roma} +% \def\@classe{3\tsa C} +% \def\@data{12 novembre 2019} +% \makeatother +% \begin{riquadro} +% \intestazionedefault +% \end{riquadro} +% Se in aggiunta si inserisce il comando \lstinline|\tempo|, viene +% stampato il tempo a disposizione per la prova. In assenza dei comandi +% di definizione, apparirà l'intestazione coi valori di default indicati +% nella tabella~\ref{tab:intest}. Ad esempio: +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{document} + +\classe{} +\tempo{60 minuti} + +\intestazione +\end{lstlisting} +%\iffalse +% +%\fi +% +% \makeatletter +% \def\@tipologia{verifica} +% \def\@disciplina{matematica} +% \def\@istituto{Liceo ``G. Novello'' -- Codogno} +% \def\@data{\today} +% \def\@classe{Classe} +% \def\@tempo{60 minuti} +% \makeatother +% +% \begin{riquadro} +% \intestazionedefault +% \end{riquadro} +% Il campo \lstinline|\classe| rimasto vuoto può rivelarsi utile nel caso in cui +% la verifica sia proposta a più classi e l'informazione debba essere inserita +% dal candidato. +% +% Se il comando \lstinline|\classe| non viene inserito, il campo corrispondente +% rimane indefinito e la dicitura ``Classe'' non appare. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{document} + +\intestazione +\end{lstlisting} +%\iffalse +% +%\fi +% +% \makeatletter +% \def\@tipologia{verifica} +% \def\@disciplina{matematica} +% \def\@istituto{Liceo ``G. Novello'' -- Codogno} +% \def\@data{\today} +% \def\@classe{} +% \let\@tempo\undefined +% \makeatother +% +% \begin{riquadro} +% \intestazionedefault +% \end{riquadro} +% +% \subsection{Altri tipi di intestazione} +% +% È possibile usare altri due stili di intestazione tramite i comandi +% \lstinline|\intestazionesemplice| e \lstinline|\intestazionerighe|. La prima +% produce un'intestazione ``essenziale'': +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\tipologia{prova per competenze} +\disciplina{matematica} +\istituto{Liceo ``G. Novello'' -- Codogno (LO)} +\classe{3\tsa C} +\data{12 novembre 2019} + +\intestazionesemplice +\end{lstlisting} +%\iffalse +% +%\fi +% +% \makeatletter +% \def\@tipologia{prova per competenze} +% \def\@disciplina{matematica} +% \def\@istituto{Liceo ‘‘G. Novello’’ -- Codogno} +% \def\@classe{Classe 3\tsa C} +% \def\@data{12 novembre 2019} +% \let\@tempo\undefined +% \makeatother +% +% \begin{riquadro} +% \vspace{.5em} +% \intestazionesemplice% +% \end{riquadro} +% La seconda produce un'intestazione delimitata da due righe: +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\tipologia{verifica orale} +\disciplina{matematica} +\istituto{Liceo ``G. Novello'' -- Codogno (LO)} +\classe{2\tsa B} +\data{12 novembre 2019} +\tempo{55 minuti} + +\intestazionerighe +\end{lstlisting} +%\iffalse +% +%\fi +% +% \makeatletter +% \def\@tipologia{verifica orale} +% \def\@disciplina{matematica} +% \def\@istituto{Liceo ‘‘G. Novello’’ -- Codogno} +% \def\@classe{Classe 2\tsa B} +% \def\@data{12 novembre 2019} +% \def\@tempo{55 minuti} +% \makeatother +% +% \begin{riquadro} +% \vspace{2em} +% \intestazionerighe% +% \end{riquadro} +% In entrambi i casi si può definire oppure no il tempo a disposizione. +% +% Anziché usare i comandi \lstinline|\intestazionesemplice| e \lstinline|\intestazionerighe|, è possibile +% impostare un'opzione di classe. Scrivendo infatti +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\documentclass[intestazionesemplice]{verifica} +\end{lstlisting} +%\iffalse +% +%\fi +% oppure +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\documentclass[intestazionerighe]{verifica} +\end{lstlisting} +%\iffalse +% +%\fi +% l'intestazione verrà generata dal comando \lstinline|\intestazione| con lo +% stile impostato dall'opzione. +% +% \section{Gli ambienti} +% +% \subsection{L'ambiente \texttt{esercizi}} +% +% L'ambiente |esercizi| è quello principale: esso produce, mediante il pacchetto +% \pack{enumitem}, un elenco numerato allineato al margine sinistro, con +% etichette (label) in grassetto. La spaziatura verticale fra un +% esercizio (item) e l'altro è impostata per default a $2\unit{em}$. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{esercizi} +\item La mamma dà a Pierino \EUR{10} per comprare la frutta. Pierino li + spende tutti. Quanto rimane a Pierino? + +\item Risolvi la seguente equazione + \[ + x+1=2 + \] + +\item Enuncia e dimostra il teorema di Pitagora. +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item La mamma dà a Pierino \EUR{10} per comprare la frutta. Pierino li spende +% tutti. Quanto rimane a Pierino? +% +% \item Risolvi la seguente equazione +% \[ +% x+1=2 +% \] +% +% \item Enuncia e dimostra il teorema di Pitagora. +% \end{esercizi} +% \end{riquadro} +% Qualora si volesse modificare la spaziatura tra gli item, è sufficiente +% modificare il valore del parametro |itemsep|, esattamente come nelle liste +% definite da \pack{enumitem}. Nel codice di esempio seguente viene prodotta una +% spaziatura di $1\unit{em}$ (anziché di $2\unit{em}$) tra un item e l'altro. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{esercizi}[itemsep=1em] +\item La mamma dà a Pierino... +... +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% +% \subsection{Sottoelenchi dell'ambiente \texttt{esercizi}} +% +% È possibile, all'interno dell'ambiente \env{esercizi}, creare dei sottoelenchi +% che sfruttano i vantaggi del pacchetto \pack{enumitem}. Mostriamo come +% esempio un esercizio che consiste in un elenco di equazioni da risolvere. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{esercizi} +\item Risolvi le seguenti equazioni + \begin{enumerate}[a),itemsep=1.5em,topsep=1.2em,leftmargin=*] + \item $\dss{\frac{x+1}{x-2}+4=\frac{x}{x-1}}$ + + \item $\dss{\sin^2 x+\cos x = \cos 2x}$ + + \item $\dss{\ln (x+1)=\ln 5 + \log_2 x}$ + \end{enumerate} +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item Risolvi le seguenti equazioni +% \begin{enumerate}[a),itemsep=1.5em,topsep=1.2em,leftmargin=*] +% \item $\dss{\frac{x+1}{x-2}+4=\frac{x}{x-1}}$ +% +% \item $\dss{\sin^2 x+\cos x = \cos 2x}$ +% +% \item $\dss{\ln (x+1)=\ln 5 + \log_2 x}$ +% \end{enumerate} +% \end{esercizi} +% \end{riquadro} +% +% Il comando \lstinline|\dss| è un'abbreviazione di \lstinline|\displaystyle|, +% che serve a ottenere le formule nel testo in stile display. La +% tabella~\ref{tab:enumitem} mostra alcuni dei parametri opzionali di +% \pack{enumitem} che possono essere impostati per personalizzare gli elenchi. +% +% \begin{table}[htbp] +% \centering +% \renewcommand{\arraystretch}{1.5}\renewcommand{\tabcolsep}{1em} +% \begin{tabularx}{\linewidth}{lX} +% \toprule +% \textbf{Parametro} & \textbf{Esempi/descrizione} \\ +% \midrule +% \texttt{a)} & imposta la numerazione alfabetica con parentesi. +% Altri esempi sono: +% \begin{itemize}[\textbullet,leftmargin=*] +% \item \texttt{A.} (numerazione alfabetica in +% maiuscolo con punto) +% \item \texttt{i.} (numerazione romana in minuscolo +% con punto) +% \item \verb|\bfseries 1)| (numerazione in grassetto +% con parentesi) +% \end{itemize} \\ +% \texttt{itemsep} & imposta lo spazio verticale tra un item e l'altro \\ +% \texttt{topsep} & imposta lo spazio verticale tra il testo che precede +% l'elenco e il primo item \\ +% \texttt{labelsep} & imposta la distanza tra il testo dell'item e +% l'etichetta \\ +% \texttt{leftmargin} & imposta il rientro dell'elenco rispetto al margine +% sinistro; il comando \verb|leftmargin=*| allinea le +% etichette (label) numeriche al margine degli item +% dell'elenco principale \\ +% \bottomrule +% \end{tabularx} +% \caption{Alcuni parametri utili del pacchetto +% \pack{enumitem}.}\label{tab:enumitem} +% \end{table} +% +% \subsection{Sottoelenchi puntati} +% +% È possibile usare \env{itemize} per suddividere un esercizio in punti non +% numerati, utilizzando gli stessi parametri opzionali dell'ambiente +% \env{enumerate}. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{esercizi} +\item Un'automobile sta viaggiando alla velocità $v_0$ lungo una strada + rettilinea. A un certo istante $t_0$ comincia ad accelerare e + raggiunge la velocità $v$ all'istante $t$. Calcola: + \begin{itemize} + \item l'accelerazione media dell'automobile; + \item lo spazio percorso in fase di accelerazione. + \end{itemize} +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item Un'automobile sta viaggiando alla velocità $v_0$ lungo una strada +% rettilinea. A un certo istante $t_0$ comincia ad accelerare e raggiunge +% la velocità $v$ all'istante $t$. Calcola: +% \begin{itemize} +% \item l'accelerazione media dell'automobile; +% \item lo spazio percorso in fase di accelerazione. +% \end{itemize} +% \end{esercizi} +% \end{riquadro} +% +% Se al posto di {\small $\blacktriangleright$} si preferisce \textbullet, si +% deve impostare l'opzione di classe {\color{Mahogany}\texttt{itembullet}}. +% Nell'esempio seguente mostriamo anche l'uso del parametro +% \texttt{leftmargin=*}, che evita il rientro del sottoelenco. +% +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\documentclass[?*\textcolor{Mahogany}{\texttt{itembullet}}*)]{verifica} +... +\begin{esercizi} +\item Un'automobile sta viaggiando... + ... + \begin{itemize}[leftmargin=*] + \item l'accelerazione media dell'automobile; + \item lo spazio percorso in fase di accelerazione. + \end{itemize} +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item Un'automobile sta viaggiando alla velocità $v_0$ lungo una strada +% rettilinea. A un certo istante $t_0$ comincia ad accelerare e raggiunge +% la velocità $v$ all'istante $t$. Calcola: +% \begin{itemize}[\textbullet,leftmargin=*] +% \item l'accelerazione media dell'automobile; +% \item lo spazio percorso in fase di accelerazione. +% \end{itemize} +% \end{esercizi} +% \end{riquadro} +% +%\subsection{Test a risposta multipla} +% +% Vengono forniti tre ambienti per i test a risposta multipla: +% l'ambiente \texttt{test} (risposte allineate verticalmente) e gli +% ambienti ``in linea'' \texttt{test-orizz} e \texttt{test-orizz-newline} +% (``orizzontali'', cioè con risposte scritte di seguito). Mostriamo di seguito +% come utilizzarli. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{esercizi} +\item Quale tra le funzioni seguenti è la derivata di $1+\sin x$? + \begin{test} + \item $\sin x$; + \item $\cos x$; + \item $-\sin x$; + \item $-\cos x$; + \item nessuna delle precedenti. + \end{test} +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item Quale tra le funzioni seguenti è la derivata di $1+\sin x$? +% \begin{test} +% \item $\sin x$; +% \item $\cos x$; +% \item $-\sin x$; +% \item $-\cos x$; +% \item nessuna delle precedenti. +% \end{test} +% \end{esercizi} +% \end{riquadro} +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{esercizi} +\item Quale tra le funzioni seguenti è la derivata di $1+\sin x$? + \begin{test-orizz} + \item $\sin x$; + \item $\cos x$; + \item $-\sin x$; + \item $-\cos x$; + \item nessuna delle precedenti. + \end{test-orizz} +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item Quale tra le funzioni seguenti è la derivata di $1+\sin x$? +% \begin{test-orizz} +% \item $\sin x$; +% \item $\cos x$; +% \item $-\sin x$; +% \item $-\cos x$; +% \item nessuna delle precedenti. +% \end{test-orizz} +% \end{esercizi} +% \end{riquadro} +% +% Se si desidera che le risposte comincino a capo in una nuova riga, è +% disponibile la variante \texttt{test-orizz-newline}:\pagebreak +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{esercizi} +\item Quale tra le funzioni seguenti è la derivata di $1+\sin x$? + \begin{test-orizz-newline} + \item $\sin x$; + \item $\cos x$; + \item $-\sin x$; + \item $-\cos x$; + \item nessuna delle precedenti. + \end{test-orizz-newline} +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item Quale tra le funzioni seguenti è la derivata di $1+\sin x$? +% \begin{test-orizz-newline} +% \item $\sin x$; +% \item $\cos x$; +% \item $-\sin x$; +% \item $-\cos x$; +% \item nessuna delle precedenti. +% \end{test-orizz-newline} +% \end{esercizi} +% \end{riquadro} +% +% Gli ambienti \texttt{test}, \texttt{test-orizz} e \texttt{test-orizz-newline} +% sono ancora liste definite tramite il pacchetto \pack{enumitem}, per cui è +% possibile modificarne i parametri come mostrato per l'ambiente +% \texttt{esercizi}\footnote{Consultare, nel caso, la documentazione di +% \pack{enumitem}: +% \url{http://ctan.mirror.garr.it/mirrors/CTAN/macros/latex/contrib/enumitem/enumitem.pdf}.}. +% +% Se si vuole cambiare il formato delle label per l'intero documento, si può +% impostare nel preambolo o all'inizio del testo il comando seguente: +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\labeltest{?*\meta{\textrm{label}}*)} +\end{lstlisting} +%\iffalse +% +%\fi +% dove \meta{label} definisce il nuovo stile secondo i criteri di +% \pack{enumitem}, anche in modalità \opt{shortlabels}. Ricordiamo che se il +% contatore viene scritto tra parentesi graffe (ad esempio se si +% utilizza una box) non può essere in forma abbreviata, ma deve essere una fra +% \lstinline|\arabic*|, \lstinline|\alph*|, +% \lstinline|\Alph*|, \lstinline|\roman*| o \lstinline|\Roman*|. +% +% L'esempio che segue è ispirato ai testi dei \emph{Giochi di Archimede}. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\labeltest{\bfseries (A)} +... +\begin{esercizi} +\item Quale tra le funzioni seguenti è la derivata di $1+\sin x$? + \begin{test-orizz-newline} + \item $\sin x$; + \item $\cos x$; + \item $-\sin x$; + \item $-\cos x$; + \item nessuna delle precedenti. + \end{test-orizz-newline} +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item Quale tra le funzioni seguenti è la derivata di $1+\sin x$? +% \begin{test-orizz-newline}[label=\bfseries (\Alph*)] +% \item $\sin x$; +% \item $\cos x$; +% \item $-\sin x$; +% \item $-\cos x$; +% \item nessuna delle precedenti. +% \end{test-orizz-newline} +% \end{esercizi} +% \end{riquadro} +% +% La classe \pack{verifica} definisce i comandi \lstinline|\labelbox| e +% \lstinline|\biglabelbox|, che racchiudono i loro argomenti in box quadrate +% ``framed''. La prima è usata nelle label di default dei test a risposta +% multipla e la seconda in quelle dei test vero/falso. Esse possono essere +% opportunamente utilizzate insieme a \lstinline|\labeltest| per ridefinire lo +% stile di altre label. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\labeltest{\biglabelbox{\Alph*}} +... +\begin{esercizi} +\item Quale tra le funzioni seguenti è la derivata di $1+\sin x$? + \begin{test-orizz-newline} + \item $\sin x$; + \item $\cos x$; + \item $-\sin x$; + \item $-\cos x$; + \item nessuna delle precedenti. + \end{test-orizz-newline} +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item Quale tra le funzioni seguenti è la derivata di $1+\sin x$? +% \begin{test-orizz-newline}[label=\biglabelbox{\Alph*}] +% \item $\sin x$; +% \item $\cos x$; +% \item $-\sin x$; +% \item $-\cos x$; +% \item nessuna delle precedenti. +% \end{test-orizz-newline} +% \end{esercizi} +% \end{riquadro} +% \subsection{Scrivere su più colonne} +% +% La classe carica in automatico il pacchetto \pack{multicol}, che permette di +% scrivere su più colonne mediante l'ambiente \env{multicols}: +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{multicols}{?*\meta{\textrm{numero di colonne}}*)} +... +\end{multicols} +\end{lstlisting} +%\iffalse +% +%\fi +% L'esempio seguente mostra un possibile utilizzo di questa funzionalità. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +{\setlength{\columnsep}{2.5em} +\begin{multicols}{2} +\begin{esercizi} + \item Quale tra le funzioni seguenti è la derivata di $1+\sin x$? + \begin{test} + \item $\sin x$; + \item $\cos x$; + \item $-\sin x$; + \item $-\cos x$; + \item nessuna delle precedenti. + \end{test}\columnbreak + \item Un'automobile sta viaggiando... + ... + \begin{itemize}[leftmargin=*] + \item l'accelerazione media dell'automobile; + \item lo spazio percorso in fase di accelerazione. + \end{itemize} +\end{esercizi} +\end{multicols}} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro}\setlength{\columnsep}{2.5em} +% \begin{multicols}{2} +% \begin{esercizi} +% \item Quale tra le funzioni seguenti è la derivata di $1+\sin x$? +% \begin{test} +% \item $\sin x$; +% \item $\cos x$; +% \item $-\sin x$; +% \item $-\cos x$; +% \item nessuna delle precedenti. +% \end{test} \columnbreak +% \item Un'automobile sta viaggiando alla velocità $v_0$ lungo una strada +% rettilinea. A un certo istante $t_0$ comincia ad accelerare e +% raggiunge la velocità $v$ all'istante~$t$. Calcola: +% \begin{itemize}[leftmargin=*] +% \item l'accelerazione media dell'automobile; +% \item lo spazio percorso in fase di accelerazione. +% \end{itemize} +% \end{esercizi} +% \end{multicols} +% \end{riquadro} +% +% L'esempio mostra anche come usare il comando +% \lstinline|\setlength{\columnsep}|\verb|{|\meta{valore}\verb|}| per +% impostare lo spazio di separazione tra le colonne. Questo comando e tutto +% l'ambiente \env{multicols} vanno racchiusi tra parentesi graffe, +% in modo che lo spazio di separazione impostato abbia +% effetto solo sull'ambiente multicolonna corrente. Se lo si desidera, si può +% far apparire una linea di separazione tra le colonne con +% \lstinline|\setlength{\columnseprule}{.4pt}|. +% +% \section{Strumenti} +% +% \subsection{Vero o falso} +% +% Se la lingua selezionata per il documento è l'italiano o un'altra lingua +% diversa dall'inglese, il comando \lstinline|\vf| stampa alla fine della riga +% corrente le box {\small \biglabelbox{V}~\biglabelbox{F}}. Se +% invece la lingua selezionata è l'inglese (per l'intero documento o solo +% per una parte, dopo \lstinline|\selectlanguage{english}| o all'interno +% dell'ambiente \verb|otherlanguage|) +% stampa {\small \biglabelbox{T}~\biglabelbox{F}}. +% +% Questo comando è utile per test con brevi domande vero/falso. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{esercizi} +\item Stabilisci se le seguenti affermazioni sono vere o false. +\begin{enumerate}[a)] + \item La derivata di $3x^2$ è $6x$. \vf + \item $7+3=11$. \vf + \item Una soluzione di $x^2-1=0$ è $1$. \vf + \item Il lavoro di una forza costante $\vec{F}$ relativo allo spostamento + $\vec{s}$ è dato dal prodotto scalare $\vec{F}\cdot\vec{s}$. \vf +\end{enumerate} +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item Stabilisci se le seguenti affermazioni sono vere o false. +% \begin{enumerate}[a)] +% \item La derivata di $3x^2$ è $6x$. \vf +% \item $7+3=11$. \vf +% \item Una soluzione di $x^2-1=0$ è $1$. \vf +% \item Il lavoro di una forza costante $\vec{F}$ relativo allo spostamento +% $\vec{s}$ è dato dal prodotto scalare $\vec{F}\cdot\vec{s}$. \vf +% \end{enumerate} +% \end{esercizi} +% \end{riquadro} +% Come si vede, se la frase è troppo lunga e raggiunge il margine destro, +% il risultato è insoddisfacente. Per rimediare all'inconveniente viene definito +% il comando \lstinline|\verofalso|\verb|{|\meta{testo}\verb|}|, che interrompe +% il testo al~$75\%$ della lunghezza della linea e pone automaticamente +% {\small \biglabelbox{V}~\biglabelbox{F}} alla fine dell'ultima +% riga. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{esercizi} +\item Stabilisci se le seguenti affermazioni sono vere o false. +\begin{enumerate}[a)] + \item La derivata di $3x^2$ è $6x$. \vf + ... + \item \verofalso{Il lavoro di una forza costante $\vec{F}$ relativo allo + spostamento $\vec{s}$ è dato dal prodotto scalare + $\vec{F}\cdot\vec{s}$.} + \item \verofalso{Siano $f$ e $g$ due funzioni reali di variabile reale + aventi lo stesso dominio. Se esse sono entrambe pari oppure entrambe + dispari allora $fg$ è una funzione pari; se una di esse è dispari + allora $fg$ è una funzione dispari.} +\end{enumerate} +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item Stabilisci se le seguenti affermazioni sono vere o false. +% \begin{enumerate}[a)] +% \item La derivata di $3x^2$ è $6x$. \vf +% \item $7+3=11$. \vf +% \item Una soluzione di $x^2-1=0$ è $1$. \vf +% \item \verofalso{Il lavoro di una forza costante $\vec{F}$ relativo allo +% spostamento $\vec{s}$ è dato dal prodotto scalare +% $\vec{F}\cdot\vec{s}$.} +% \item \verofalso{Siano $f$ e $g$ due funzioni reali di variabile reale +% aventi lo stesso dominio. Se esse sono entrambe pari oppure +% entrambe dispari allora $fg$ è una funzione pari; se una di esse +% è dispari allora $fg$ è una funzione dispari.} +% \end{enumerate} +% \end{esercizi} +% \end{riquadro} +% +% Se anziché al $75\%$ si vuole interrompere la riga a una percentuale +% diversa, si può scegliere il fattore di scala desiderato (riferito a $1$) +% come opzione dello stesso comando: +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\verofalso[?*\meta{\textrm{fattore di scala}}*)]{?*\meta{\textrm{testo}}*)} +\end{lstlisting} +%\iffalse +% +%\fi +% Nell'esempio che segue impostiamo l'interruzione all'$85\%$ della lunghezza +% della riga. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{esercizi} +\item Stabilisci se le seguenti affermazioni sono vere o false. +\begin{enumerate}[a)] + \item \verofalso[.85]{Il lavoro di una forza costante $\vec{F}$ relativo + allo spostamento $\vec{s}$ è dato dal prodotto scalare + $\vec{F}\cdot\vec{s}$.} + \item \verofalso[.85]{Siano $f$ e $g$ due funzioni reali di variabile reale + aventi lo stesso dominio. Se esse sono entrambe pari oppure entrambe + dispari allora $fg$ è una funzione pari; se una di esse è dispari + allora $fg$ è una funzione dispari.} +\end{enumerate} +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item Stabilisci se le seguenti affermazioni sono vere o false. +% \begin{enumerate}[a)] +% \item \verofalso[.85]{Il lavoro di una forza costante $\vec{F}$ relativo +% allo spostamento $\vec{s}$ è dato dal prodotto scalare +% $\vec{F}\cdot\vec{s}$.} +% \item \verofalso[.85]{Siano $f$ e $g$ due funzioni reali di variabile +% reale aventi lo stesso dominio. Se esse sono entrambe pari oppure +% entrambe dispari allora $fg$ è una funzione pari; se una di esse è +% dispari allora $fg$ è una funzione dispari.} +% \end{enumerate} +% \end{esercizi} +% \end{riquadro} +% +% Infine, se si vuole impostare definitivamente un fattore di scala per +% l'\emph{intero} documento, si può inserire nel preambolo o all'inizio del +% testo il comando: +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\fattorevf{?*\meta{\textrm{fattore di scala}}*)} +\end{lstlisting} +%\iffalse +% +%\fi +% dove \meta{fattore di scala} deve essere un numero compreso tra $0$ e $1$. +% +% \subsection{Righe per scrivere le risposte} +% +% Viene definito il comando: +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\riga{?*\meta{\textrm{numero di righe}}*)} +\end{lstlisting} +%\iffalse +% +%\fi +% che stampa delle righe punteggiate ben spaziate verticalmente, su +% cui il candidato può scrivere manualmente (tante righe quante +% indicate nell'argomento). +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{esercizi} + \item Enuncia il teorema di Pitagora.\par\riga{3} +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item Enuncia il teorema di Pitagora.\par\riga{3} +% \end{esercizi} +% \vspace{.2em} +% \end{riquadro} +% Se si omette \lstinline|\par| (che fa andare a capo e iniziare un +% nuovo capoverso) e si inserisce il comando di seguito al testo, la prima riga +% viene stampata dalla posizione corrente fino al margine destro. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{esercizi} + \item Enuncia il teorema di Pitagora. \riga{3} +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item Enuncia il teorema di Pitagora. \riga{3} +% \end{esercizi} +% \vspace{.2em} +% \end{riquadro} +% +% \subsection{Completamenti} +% +% Se un esercizio consiste nel completamento di un testo con alcune parole +% chiave, è possibile usare i comandi \lstinline|\dotword| e +% \lstinline|\dotrule|. Il primo produce una linea punteggiata di lunghezza +% doppia della parola racchiusa come argomento (cioè la parola esatta che lo +% studente dovrebbe inserire), mentre il secondo produce una linea punteggiata +% di lunghezza data nell'argomento. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{esercizi} + \item \emph{Completa il seguente enunciato.} La potenza di + \dotword{potenza} è una potenza che ha per \dotword{base} + la stessa base e per \dotword{esponente} il \dotword{prodotto} + degli esponenti. +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item \emph{Completa il seguente enunciato.} La potenza di +% \dotword{potenza} è una potenza che ha per \dotword{base} la stessa +% base e per \dotword{esponente} il \dotword{prodotto} degli esponenti. +% \end{esercizi} +% \end{riquadro} +% Notiamo che in questo modo il file sorgente rende possibile la lettura +% esplicita delle parole esatte, con un notevole vantaggio per la chiarezza. +% +% Se è necessario aumentare lo spazio tra una riga e l'altra, si può usare +% \lstinline|\doublespacing| (dal pacchetto \pack{setspace}, caricato in +% automatico). Per ripristinare l'impostazione iniziale, basta inserire +% \lstinline|\par\singlespacing|, come nell'esempio seguente. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{esercizi} + \item \doublespacing\emph{Completa il seguente enunciato.} La potenza di + \dotword{potenza} è una potenza che ha per \dotword{base} la + stessa base e per \dotword{esponente} il \dotword{prodotto} degli + esponenti. \par\singlespacing +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item \doublespacing\emph{Completa il seguente enunciato.} La potenza di +% \dotword{potenza} è una potenza che ha per \dotword{base} la stessa base +% e per \dotword{esponente} il \dotword{prodotto} degli esponenti. +% \par\singlespacing +% \end{esercizi} +% \end{riquadro} +% +% Riproponiamo lo stesso esempio usando il comando \lstinline|\dotrule{4cm}|, +% che produce linee punteggiate lunghe $4\unit{cm}$. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{esercizi} + \item \doublespacing\emph{Completa il seguente enunciato.} La potenza di + \dotrule{4cm} è una potenza che ha per \dotrule{4cm} la stessa base + e per \dotrule{4cm} il \dotrule{4cm} degli esponenti. + \par\singlespacing +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item \doublespacing\emph{Completa il seguente enunciato.} La potenza di +% \dotrule{4cm} è una potenza che ha per \dotrule{4cm} la stessa base +% e per \dotrule{4cm} il \dotrule{4cm} degli esponenti. +% \par\singlespacing +% \end{esercizi} +% \end{riquadro} +% +% \section{Punteggio} +% +% \subsection{Comandi per inserire il punteggio} +% +% Se si desidera assegnare un punteggio ad ogni esercizio, è possibile +% utilizzare il comando: +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\punti[?*\meta{\textrm{testo aggiuntivo}}*)]{?*\meta{\textrm{punteggio}}*)} +\end{lstlisting} +%\iffalse +% +%\fi +% Esso stampa il punteggio relativo all'esercizio, allineandolo al margine +% destro sulla riga corrente. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{esercizi} +\item Data la retta $y=2x$, scrivi l'equazione di una sua + perpendicolare. \punti{10} +\item Data la retta $y=3x-1$, calcola l'equazione della retta per $A$ ad essa + parallela. \punti{10} +\item Data la circonferenza di equazione $x^2+y^2-3x+y-2=0$, determina + le coordinate ?*\texttt{del}*) centro, il suo raggio e calcola la + lunghezza della circonferenza. \punti{20} +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item Data la retta $y=2x+1$, scrivi l'equazione di una sua +% perpendicolare. \punti{10} +% \item Data la retta $y=3x-1$, calcola l'equazione della retta per $A$ ad essa +% parallela. \punti{10} +% \item Data la circonferenza di equazione $x^2+y^2-3x+y-2=0$, determina +% le coordinate del centro, il suo raggio e calcola la lunghezza +% della circonferenza. \punti{20} +% \end{esercizi} +% \end{riquadro} +% Se lo spazio disponibile sulla riga non fosse sufficiente, il punteggio viene +% scritto automaticamente nella riga successiva. +% +% L'opzione \meta{testo aggiuntivo} serve per specificare eventuali +% informazioni da stampare dopo il punteggio. Ciò +% può essere utile ad esempio per indicare uno stesso punteggio per più +% esercizi. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{esercizi} +\item Risolvi le seguenti equazioni. \punti[per ogni equazione]{10} + \begin{enumerate}[a),itemsep=.5em] + \item $\dss{x^2-3x=1}$ + \item $\dss{2x+1=4x^2-3}$ + \end{enumerate} +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item Risolvi le seguenti equazioni. \punti[per ogni equazione]{10} +% \begin{enumerate}[a),itemsep=.5em] +% \item $\dss{x^2-3x=1}$ +% \item $\dss{2x+1=4x^2-3}$ +% \end{enumerate} +% \end{esercizi} +% \end{riquadro} +% +% Nel caso particolare in cui si volesse stampare il punteggio alla stessa +% altezza di una formula in display, è possibile inserirlo come argomento +% del comando \lstinline|\tag*|. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{esercizi} +\item Disegna la parabola di equazione + \[ + x=-\frac{1}{2}x^2-x+1 \tag*{\punti{5}} + \] +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item Disegna la parabola di equazione +% \[ +% y=-\frac{1}{2}x^2-x+1 \tag*{\punti{5}} +% \] +% \end{esercizi} +% \end{riquadro} +% +% \subsection{Varianti per il punteggio} +% +% \makeatletter +% +% Esistono due varianti per la stampa del punteggio, utilizzabili anche +% simultaneamente. +% +% La prima si ottiene mediante il comando-dichiarazione +% \lstinline|\puntiadestra|, che imposta la stampa del valore numerico del +% punteggio prima della dicitura ``\textsc{Punti}''. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\puntiadestra +\begin{esercizi} + \item Scrivi l'equazione di una retta parallela all'asse $y$. \punti{5} +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item Scrivi l'equazione di una retta parallela all'asse $y$. \punti@dx{5} +% \end{esercizi} +% \end{riquadro} +% +% La seconda si ottiene col comando-dichiarazione \lstinline|\puntipt|, che +% sostituisce alla scritta ``\textsc{Punti}'' l'abbreviazione ``\textsc{Pt.}'' +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\puntipt +\begin{esercizi} + \item Scrivi l'equazione di una retta parallela all'asse $y$. \punti{5} +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi}\renewcommand{\@punteggio}{Pt.} +% \item Scrivi l'equazione di una retta parallela all'asse $y$. \punti{5} +% \end{esercizi} +% \end{riquadro} +% Combinando le due dichiarazioni si ha: +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\puntiadestra\puntipt +\begin{esercizi} + \item Scrivi le equazioni di due rette parallele + all'asse $y$. \punti[per ogni retta]{5} +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi}\renewcommand{\@punteggio}{Pt.} +% \item Scrivi le equazioni di due rette parallele +% all'asse $y$. \punti@dx[per ogni retta]{5} +% \end{esercizi} +% \end{riquadro} +% +% \makeatother +% +% \subsection{Il riquadro del punteggio totale} +% +% Se lo si desidera, è possibile stampare un riquadro in cui inserire il +% punteggio totale della verifica, specificando il calcolo del voto finale. +% Il comando, da dare al di fuori dell'ambiente \texttt{esercizi},~è +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\totpunti +\end{lstlisting} +%\iffalse +% +%\fi +% Esso produce, in fondo alla pagina e allineato al margine destro, il +% riquadro seguente: +% \begin{riquadro} +% \vartotpunti +% \end{riquadro} +% +% L'impostazione di default prevede che il punteggio massimo totalizzabile +% sia $90$ punti e che il voto (in decimi) sia calcolato tramite la formula +% \[ +% \text{Voto} = \text{Punteggio totalizzato}/10+1 +% \] +% Per impostare un calcolo diverso, basta inserirlo come argomento opzionale di +% \lstinline|\totpunti|. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{document} +\begin{esercizi} +... +\end{esercizi} +\totpunti[/12+2] +\end{document} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \totpunti[/12+2] +% \end{riquadro} +% +% La variante \lstinline|\vartotpunti| produce lo stesso riquadro senza +% spostarlo in fondo alla pagina. In questo modo risulta possibile +% posizionare un altro oggetto appena prima del riquadro stesso +% (ad esempio una tabella dei punteggi ottenuti), inserendo manualmente +% eventuali comandi~\lstinline|\vfill|. +% +% \section{Miscellanea} +% +% \subsection{Le frazioni doppie} +% +% Le frazioni ``doppie'' (frazioni di frazioni) non vengono rese in modo +% ottimale con i comandi standard di \LaTeX. Si noti come il codice +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\[ + \frac{\dfrac{3}{2}+\dfrac{4}{3}}{\dfrac{5}{7}+\dfrac{8}{17}+1} +\] +\end{lstlisting} +%\iffalse +% +%\fi +% produca frazioni non ben distanziate dalla linea di frazione principale: +% \[ +% \frac{\dfrac{3}{2}+\dfrac{4}{3}}{\dfrac{5}{7}+\dfrac{8}{17}+1} +% \] +% Per rimediare, la classe \pack{verifica} mette a disposizione i comandi +% \lstinline|\ddfrac|, \lstinline|\numfrac| e \lstinline|\denfrac|. Il primo +% imposta la frazione principale, con una linea leggermente +% sporgente; il secondo e il terzo servono per inserire frazioni al numeratore +% e al denominatore distanziate dalla linea di frazione principale. +% In presenza di più frazioni al numeratore o al denominatore, è sufficiente +% usare questi comandi solo per la prima e inserire le successive +% con \lstinline|\frac|. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\[ + \ddfrac{\numfrac{3}{2}+\frac{4}{3}}{\denfrac{5}{7}+\frac{8}{17}+1} \qquad + \ddfrac{\numfrac{3}{2}+2+\frac{1}{3}}{4} \qquad + \ddfrac{4}{\denfrac{1}{2}+\frac{2}{7}} +\] +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \[ +% \ddfrac{\numfrac{3}{2}+\frac{4}{3}}{\denfrac{5}{7}+\frac{8}{17}+1} \qquad +% \ddfrac{\numfrac{3}{2}+2+\frac{1}{3}}{4} \qquad +% \ddfrac{4}{\denfrac{1}{2}+\frac{2}{7}} +% \] +% \end{riquadro} +% +% \subsection{La virgola intelligente} +% +% Se viene caricato il pacchetto \pack{babel} con l'opzione \opt{italian}, +% viene attivata automaticamente la virgola intelligente da esso definita. +% In questo modo sarà possibile scrivere agevolmente i numeri decimali con +% la virgola come separatore. Ricordardiamo che nel caso si voglia usare la +% virgola come simbolo di interpunzione in modalità matematica, è necessario +% lasciare uno spazio dopo di essa. Gli esempi proposti illustrano il +% funzionamento della virgola intelligente. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\usepackage[italian]{babel} +... +Il rapporto fra la circonferenza e il diametro è dato da +\[ + \pi=3,14159\ldots +\] +Siano poi $A(3, 4)$ e $B(-2, 1)$ gli estremi di un segmento\ldots +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% Il rapporto fra la circonferenza e il diametro è dato da +% \[ +% \pi=3,14159\ldots +% \] +% Siano poi $A(3, 4)$ e $B(-2, 1)$ gli estremi di un segmento\ldots +% \end{riquadro} +% Insistiamo nel ribadire che se non vengono lasciati spazi dopo la virgola, si +% possono ottenere scritture errate: \lstinline|$A(3,4)$| e +% \lstinline|$B(-2,1)$| producono rispettivamente $A(3,4)$ e $B(-2,1)$. Se però +% dopo la virgola viene inserito un carattere non numerico (ad esempio un meno), +% la spaziatura risulta comunque corretta. +% +% Per disattivare e riattivare manualmente la virgola +% intelligente basta inserire nel testo le dichiarazioni +% \lstinline|\NoIntelligentComma| e \lstinline|\IntelligentComma|. +% +% \subsection{Soprassegno per gli archi} +% +% Viene definito il comando \lstinline|\arc| che pone il soprassegno arrotondato +% per indicare gli archi. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +Si consideri l'arco $\arc{AB}$ e la corrispondente corda di +misura $\overline{AB}=15$. +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% Si consideri l'arco $\arc{AB}$ e la corrispondente corda di +% misura $\overline{AB}=15$. +% \end{riquadro} +% +% Viene definita inoltre una variante \lstinline|\vararc|, qualora si preferisca +% un soprassegno per gli archi più marcato. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +Si consideri l'arco $\vararc{AB}$ e la corrispondente corda di +misura $\overline{AB}=15$. +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% Si consideri l'arco $\vararc{AB}$ e la corrispondente corda di misura +% $\overline{AB}=15$. +% \end{riquadro} +% +% \subsection{Unità di misura} +% +% Se viene caricato il pacchetto \pack{babel} con l'opzione \opt{italian}, +% viene attivata automaticamente la dichiarazione \lstinline|\setISOcompliance|, +% che consente di scrivere le unità di misura in modalità matematica tramite il +% comando \lstinline|\unit|. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\usepackage[italian]{babel} +... +\begin{esercizi} +\item Un'automobile sta viaggiando a $20\unit{m/s}$ lungo una strada + rettilinea. Ad un certo istante comincia ad aumentare la sua + velocità con accelerazione costante $a=4,5\unit{m/s^2}$. Quale + velocità avrà dopo $10\unit{s}$? +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi} +% \item Un'automobile sta viaggiando a $20\unit{m/s}$ lungo una strada +% rettilinea. Ad un certo istante comincia ad aumentare la sua velocità +% con accelerazione costante $a=4,5\unit{m/s^2}$. Quale velocità avrà +% dopo $10\unit{s}$? +% \end{esercizi} +% \end{riquadro} +% In particolare, il simbolo dei gradi può essere inserito direttamente da +% tastiera\footnote{Ciò è reso possibile grazie al pacchetto +% \pack{newunicodechar}.}, mentre il simbolo~$\micro$ (prefisso di \emph{micro} +% nelle unità di misura) è prodotto dal comando \lstinline|\micro|. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +L'angolo $\alpha$ misura $30°$. La temperatura della stanza è di $22\unit{°C}$. +Consideriamo una distanza di $2,0\unit{\micro m}$. +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% L'angolo $\alpha$ misura $30°$. La temperatura della stanza è di $22\unit{°C}$. +% Consideriamo una distanza di $2,0\unit{\micro m}$. +% \end{riquadro} +% +% Infine, segnaliamo che è possibile caricare il pacchetto \pack{siunitx} per +% la gestione e la scrittura delle unità di misura. In tal caso, però, non deve +% essere \emph{mai} usato nel documento il comando~\lstinline|\unit|, altrimenti +% \LaTeX\ produrrebbe un errore. +% +% Se viene selezionata una lingua diversa dall'italiano, il comando +% \lstinline|\unit| non è attivo. In questo caso si può utilizzare il comando +% \lstinline|\unitx|, che nei casi più semplici consente di ottenere le +% stesse funzionalità di \lstinline|\unit|. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\begin{esercizi}\selectlanguage{english} + \item The Gravitational constant is approximately + $6.67\times 10^{-11}\unitx{?*\texttt{N}*)\cdot m^2/kg^2}$. \vf +\end{esercizi} +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \begin{esercizi}\selectlanguage{english} +% \item The Gravitational constant is approximately +% $6.67\times 10^{-11}\unitx{N\cdot m^2/kg^2}$. \vf +% \end{esercizi}\selectlanguage{italian} +% \end{riquadro} +% +% \subsection{Definizioni abbreviate} +% +% Elenchiamo nella tabella~\ref{tab:def-abbr} alcune definizioni di comandi +% abbreviati. +% +% \begin{table}[htbp] +% \centering +% \begin{tabular}{ccc} +% \toprule +% \textbf{Simbolo} & \textbf{\LaTeX} & \textbf{\pack{verifica}} \\ +% \midrule +% $\delta$ & {\lstinline|\delta|} & {\lstinline|\del|} \\ +% $\Delta$ & {\lstinline|\Delta|} & {\lstinline|\Del|} \\ +% $\varepsilon$ & {\lstinline|\varepsilon|} & {\lstinline|\eps|} \\ +% $\mathbb{N}$ & {\lstinline|\mathbb|\verb|{N}|} & {\lstinline|\N|} \\ +% $\mathbb{Z}$ & {\lstinline|\mathbb|\verb|{Z}|} & {\lstinline|\Z|} \\ +% $\mathbb{Q}$ & {\lstinline|\mathbb|\verb|{Q}|} & {\lstinline|\Q|} \\ +% $\mathbb{R}$ & {\lstinline|\mathbb|\verb|{R}|} & {\lstinline|\R|} \\ +% \bottomrule +% \end{tabular} +% \caption{Definizioni abbreviate di alcuni comandi.}\label{tab:def-abbr} +% \end{table} +% I comandi \lstinline|\phi| e \lstinline|\theta| vengono ridefiniti per +% produrre $\phi$ e $\theta$ (come \lstinline|\varphi| e \lstinline|\vartheta|). +% Per ripristinare i comandi originari basta dare le dichiarazioni +% \lstinline|\restorephi| e \lstinline|\restoretheta|. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +Di default sono definiti $\phi$ e $\theta$, ma si possono ripristinare +\restorephi\restoretheta in modo che appaiano $\phi$ e $\theta$. +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% Di default sono definiti $\phi$ e $\theta$, ma si possono ripristinare in modo +% che appaiano \makeatletter$\@tempvarphi$ e $\@tempvartheta$\makeatother. +% \end{riquadro} +% +% Il valore assoluto si ottiene col comando \lstinline|\abs|, definito +% seguendo le indicazioni della documentazione del pacchetto \pack{mathtools}. +% Il suo utilizzo è mostrato di seguito. +%\iffalse +%<*example> +%\fi +\begin{lstlisting} +\[ + \abs{x} \qquad \abs[\bigg]{\frac{x+2}{x-1}} +\] +\end{lstlisting} +%\iffalse +% +%\fi +% \begin{riquadro} +% \[ +% \abs{x} \qquad \abs[\bigg]{\frac{x+2}{x-1}} +% \] +% \end{riquadro} +% +% \newgeometry{text={355.0pt,598.0pt},centering} +% \addtolength\marginparwidth{30pt} +% \addtolength\oddsidemargin{20pt} +% \addtolength\evensidemargin{20pt} +% +% \StopEventually{\PrintIndex} +% \selectlanguage{english} +% \section{Implementation} +% \subsection{Class options} +% +% We define new conditionals for class options: \cs{if@blacktriangleright} is +% true by default and sets the \env{itemize} label symbol; \cs{if@intestrighe} +% and \cs{if@intestsemplice} are true if we choose the document heading +% ``with lines'' or ``plain'', respectively; \cs{if@extrasize} is true if we set +% the font size to $14\unitx{pt}$; \cs{if@senzagrazie} is true if we choose the +% sans serif font (\pack{cmbright} package). +%\iffalse +%<*class|package> +%\fi +% \begin{macrocode} +\newif\if@blacktriangleright +\newif\if@intestrighe +\newif\if@intestsemplice +\newif\if@extrasize +\newif\if@senzagrazie +% \end{macrocode} +%\iffalse +% +%\fi +%\iffalse +%<*class> +%\fi +% Now, we define the class options and set \cs{@blacktrianglerighttrue} by +% default. +% \begin{macrocode} +\DeclareOption{10pt}{\def\ver@ptsize{0}} +\DeclareOption{11pt}{\def\ver@ptsize{1}} +\DeclareOption{12pt}{\def\ver@ptsize{2}} +\DeclareOption{14pt}{\@extrasizetrue} +\DeclareOption{default}{\@blacktrianglerighttrue} +\DeclareOption{itembullet}{\@blacktrianglerightfalse} +\DeclareOption{intestazionerighe}{\@intestrighetrue} +\DeclareOption{intestazionesemplice}{\@intestsemplicetrue} +\DeclareOption{senzagrazie}{\@senzagrazietrue} +% \end{macrocode} +% The option \opt{11pt} is added by default. +% \begin{macrocode} +\ExecuteOptions{default,11pt} +\ProcessOptions +% \end{macrocode} +% If the option \opt{extrasize} is chosen, the conditional \cs{if@extrasize} is +% true and the \pack{extarticle} class will be loaded with the options +% \opt{a4paper} and \opt{14pt}. Otherwise, the \pack{article} class will be +% loaded with the option \opt{a4paper} and the font size set by the user +% (default \opt{11pt}). +% \begin{macrocode} +\if@extrasize + \LoadClass[a4paper,14pt]{extarticle} +\else + \LoadClass[a4paper,1\ver@ptsize pt]{article} +\fi +% \end{macrocode} +%\iffalse +% +%\fi +%\iffalse +%<*package> +%% ------------------------------------------------------------------------------ +%% Questo file .sty è destinato esclusivamente alla documentazione della +%% classe `verifica'. Il supporto non verrà garantito. +%% +%% This .sty file is meant only for the documentation of the `verifica' class. +%% Support will not be guaranteed. +%% ------------------------------------------------------------------------------ +% +%\fi +%\iffalse +%<*class|package> +%\fi +% Below is the list of packages loaded by the \pack{verifica} class. +% \begin{macrocode} +\RequirePackage[shortlabels,inline]{enumitem} +\RequirePackage{graphicx} +\RequirePackage{mathtools} +\RequirePackage{amssymb} +\RequirePackage{geometry} +\RequirePackage{nccmath} +\RequirePackage{multido} +\RequirePackage{setspace} +\RequirePackage{multicol} +\RequirePackage{gensymb} +\RequirePackage{newunicodechar} +\RequirePackage{textcomp} +\RequirePackage{eurosym} +\RequirePackage{tabto} +\RequirePackage{tabularx} +\RequirePackage[running]{lineno} +% \end{macrocode} +%\iffalse +% +%\fi +% Margins are set using the \pack{geometry} package. We also set the page +% style to \opt{empty}. +%\iffalse +%<*class> +%\fi +% \begin{macrocode} +\geometry{top=1cm,bottom=1.5cm,left=1.5cm,right=1.5cm} +\pagestyle{empty} +% \end{macrocode} +% If the option \opt{senzagrazie} is chosen, then the \pack{cmbright} package is +% loaded, so we have a sans serif font. The control sequence \cs{AtBeginDocument} +% causes the \pack{cmbright} package to be loaded after all other packages. +% \begin{macrocode} +\if@senzagrazie + \AtBeginDocument{% + \RequirePackage{cmbright} +} +\fi +% \end{macrocode} +%\iffalse +% +%\fi +%\iffalse +%<*class|package> +%\fi +% The following lines contain various commands which must be placed at the +% beginning of the document, through the \cs{AtBeginDocument} command. If the +% \pack{babel-italian} package is loaded, then |\setISOcompliance| and +% |\IntelligentComma| will be activated. +% \begin{macrocode} +\AtBeginDocument{% +\@ifpackagewith{babel}{italian}{% + \setISOcompliance + \IntelligentComma +\relax}{} +% \end{macrocode} +% If the \pack{cmbright} package is loaded, the following declaration fixes the +% font for the bold-math mode, used in conjunction with the \pack{bm} package. +% Otherwise, we will get the ``poor man bold''. +% \begin{macrocode} +\@ifpackageloaded{cmbright}{% + \SetSymbolFont{operators}{bold}{OT1}{cmbr}{b}{n} +\relax}{} +% \end{macrocode} +% The \pack{bm} package will be loaded after all the other packages (in +% particular after \pack{cmbright}). +% \begin{macrocode} +\RequirePackage{bm} +% \end{macrocode} +% \begin{macro}{\restorephi} +% \begin{macro}{\restoretheta} +% We redefine the \cs{phi} and \cs{theta} commands to get \cs{varphi} and +% \cs{vartheta}. We copy the original definitions to \cs{@tempvarphi} and +% \cs{@tempvartheta} for restoring them eventually through the \cs{restorephi} +% and \cs{restoretheta} commands. +% \end{macro} +% \end{macro} +% \begin{macrocode} +\let\@tempvarphi\phi +\let\@tempvartheta\theta +\renewcommand{\phi}{\varphi} +\renewcommand{\theta}{\vartheta} +\newcommand{\restorephi}{\renewcommand{\phi}{\@tempvarphi}} +\newcommand{\restoretheta}{\renewcommand{\theta}{\@tempvartheta}} +} +% \end{macrocode} +%\iffalse +% +%\fi +%\iffalse +%<*class|package> +%\fi +% \begin{macro}{\abs} +% The next definition of the ``absolute value'' command is taken from the +% documentation of the \pack{mathtools} package. +% \end{macro} +% \begin{macrocode} +\DeclarePairedDelimiter\abs{\lvert}{\rvert} +% \end{macrocode} +% +% \subsection{The document heading} +% +% The following lines are related to the construction of the document heading. +% First, we define the markup commands that pass their arguments to the internal +% macros. Every command is set to a default value, except \cs{@classe} and +% \cs{@tempo}, which are undefined. +% \begin{macrocode} +\def\@tipologia{verifica} + \newcommand{\tipologia}[1]{\def\@tipologia{#1}} +\def\@disciplina{matematica} + \newcommand{\disciplina}[1]{\def\@disciplina{#1}} +\def\@istituto{Liceo ``G. Novello'' -- Codogno} + \newcommand{\istituto}[1]{\def\@istituto{#1}} +\def\@data{\today} + \newcommand{\data}[1]{\def\@data{#1}} +\let\@classe\undefined + \newcommand{\classe}[1]{\def\@classe{Classe~#1}} +\let\@tempo\undefined + \newcommand{\tempo}[1]{\def\@tempo{#1}} +% \end{macrocode} +% \begin{macro}{\intestazionedefault} +% We define the default heading. It consists of two \env{tabular} environments, +% side by side, stored in the control sequences \cs{@tabellauno} and +% \cs{@tabelladue}. The first contains information about the discipline, the +% typology of the test, the institute name and the date. The second contains an +% empty space (which must be filled in by the candidate's name) and the class +% (eventually empty), if defined. The length of the two tables are stored in +% \cs{@prima} and \cs{@seconda}. The length of \cs{@tabelladue} depends on the +% length of \cs{@tabellauno}. We use the \pack{calc} package, which is loaded by +% the \pack{mathtools} package, to determine the width of \cs{@tabellauno} +% (through the \cs{widthof} command). If \cs{tempo} is defined, the time +% available for the test will be printed. +% \begin{macrocode} +\newlength{\@prima} +\newlength{\@seconda} +\def\intestazionedefault{% + \def\@tabellauno{% + \begin{tabular}{|c|} + \hline \\[-.2cm] + \textbf{\MakeUppercase{\@tipologia} DI \MakeUppercase{\@disciplina}}\\[.2cm] + \textbf{\@istituto}\\[.2cm] + \textbf{\@data}\\[.2cm] + \hline + \end{tabular}} + \setlength{\@prima}{\widthof{\@tabellauno}} + \setlength{\@seconda}{\textwidth-\@prima-.7cm} + \ifdefined\@classe + \def\@@classe{\@classe} + \else + \def\@@classe{} + \fi + \def\@tabelladue{% + \begin{tabular}{|p{\@seconda}|} + \hline \\[-.2cm] + Cognome e nome \\[.2cm] + \\[.2cm] + \@@classe \\[.2cm] + \hline + \end{tabular}} + \ifdefined\@tempo + \def\tempo@ad{\begin{center}% + \textit{Tempo a disposizione: \@tempo}\end{center}} + \else + \def\tempo@ad{\vspace{.5cm}} + \fi +\noindent\@tabellauno\hfill\@tabelladue\tempo@ad} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\intestazionerighe} +% We define the second type of heading: ``intestazione con righe'' +% (``with lines''). It puts the information about the document between two +% horizontal lines. +% \begin{macrocode} +\def\intestazionerighe{% +\ifdefined\@classe + \def\@@classe{\@classe} +\else + \def\@@classe{} +\fi +\ifdefined\@tempo + \def\tempo@ad{{\centering% + \textit{Tempo a disposizione: \@tempo}\par}\vspace{.5em}} +\else + \def\tempo@ad{\vspace{.1em}} +\fi +\null\vspace{-1cm} +\noindent\hrulefill \\ +\noindent\makebox[.3\linewidth][l]{\small\@istituto} \hfill% +\makebox[.3\linewidth]{\@@classe} \hfill% +\makebox[.3\linewidth][r]{\small\@data}% +\begin{center} + \textbf{\MakeUppercase{\@tipologia} DI \MakeUppercase{\@disciplina}}\\[-.5em] + \hrulefill +\end{center} +\tempo@ad} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\intestazionesemplice} +% We define the third type of heading: ``intestazione semplice'' (``plain''). +% It is similar to the ``intestazione con righe'', but without the two horizontal +% lines. +% \begin{macrocode} +\def\intestazionesemplice{% +\ifdefined\@classe + \def\@@classe{\@classe} +\else + \def\@@classe{} +\fi +\ifdefined\@tempo + \def\tempo@ad{{\centering% + \textit{Tempo a disposizione: \@tempo}\par}\vspace{.5em}} +\else + \def\tempo@ad{\vspace{.1em}} +\fi +\noindent\makebox[.3\linewidth][l]{\small\@istituto} \hfill% +\makebox[.3\linewidth]{\@@classe} \hfill% +\makebox[.3\linewidth][r]{\small\@data}% +\begin{center} + \textbf{\MakeUppercase{\@tipologia} DI \MakeUppercase{\@disciplina}}\\[-.5em] +\end{center} +\tempo@ad} +% \end{macrocode} +% \end{macro} +%\iffalse +% +%\fi +% \begin{macro}{\intestazione} +% The \cs{intestazione} command generates the document heading. +%\iffalse +%<*class> +%\fi +% \begin{macrocode} +\if@intestrighe + \def\intestazione{\intestazionerighe} +\else + \if@intestsemplice + \def\intestazione{\intestazionesemplice} + \else + \def\intestazione{\intestazionedefault} + \fi +\fi +% \end{macrocode} +% \end{macro} +%\iffalse +% +%\fi +% +% \subsection{New commands} +% +%\iffalse +%<*class|package> +%\fi +% \begin{macro}{\tsa} +% \begin{macro}{\tso} +% Here are some definition of new commands. Thanks to the +% \pack{newunicodechar} package, we can type the character \texttt{\textdegree} +% to get the corresponding symbol directly. The commands \cs{tsa} and \cs{tso} +% produce the ordinal number symbols $\textsuperscript{a}$ and +% $\textsuperscript{o}$, followed by a thin space. +% \end{macro} +% \end{macro} +% \begin{macrocode} +\newunicodechar{°}{\ensuremath{^\circ}} +\newcommand{\tsa}{\textsuperscript{a}\,} +\newcommand{\tso}{\textsuperscript{o}\,} +% \end{macrocode} +% \begin{macro}{\eps} +% \begin{macro}{\del} +% \begin{macro}{\Del} +% \begin{macro}{\R} +% \begin{macro}{\Q} +% \begin{macro}{\Z} +% \begin{macro}{\N} +% \begin{macro}{\dss} +% The following lines define some useful abbreviation for some frequently +% used commands. +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macrocode} +\newcommand{\eps}{\varepsilon} +\newcommand{\del}{\delta} +\newcommand{\Del}{\Delta} +\newcommand{\R}{\mathbb{R}} +\newcommand{\Q}{\mathbb{Q}} +\newcommand{\Z}{\mathbb{Z}} +\newcommand{\N}{\mathbb{N}} +\newcommand{\dss}[1]{\displaystyle{#1}} +% \end{macrocode} +% \begin{macro}{\arc} +% The following code is taken from +% \url{https://tex.stackexchange.com/questions/96680#284787} (thanks to +% \textsf{egreg}). It defines a symbol to denote an arc. +% \end{macro} +% \begin{macrocode} +\DeclareFontFamily{U}{tipa}{} +\DeclareFontShape{U}{tipa}{m}{n}{<->tipa10}{} +\newcommand{\arc@char}{{\usefont{U}{tipa}{m}{n}\symbol{62}}} +\newcommand{\arc}[1]{\mathpalette\arc@arc{#1}} +\newcommand{\arc@arc}[2]{% + \sbox0{$\m@th#1#2$}% + \vbox{% + \hbox{\resizebox{\wd0}{\height}{\arc@char}} + \nointerlineskip + \box0 + } +} +% \end{macrocode} +% \begin{macro}{\vararc} +% Here is a variant of the same symbol (more marked). +% \end{macro} +% \begin{macrocode} +\DeclareFontFamily{OMX}{yhex}{} +\DeclareFontShape{OMX}{yhex}{m}{n}{<->yhcmex10}{} +\DeclareSymbolFont{yhlargesymbols}{OMX}{yhex}{m}{n} +\DeclareMathAccent{\vararc}{\mathord}{yhlargesymbols}{"F3} +% \end{macrocode} +% +% \begin{macro}{\ddfrac} +% \begin{macro}{\numfrac} +% \begin{macro}{\denfrac} +% We define the \cs{ddfrac} command for ``double'' fractions (fractions of +% fractions), with a slightly longer line. The \cs{numfrac} and \cs{denfrac} +% commands produce correct vertical spacing in double fractions. +% \begin{macrocode} +\newcommand\ddfrac[2]{\frac{\,\displaystyle #1\,}{\,\displaystyle #2\,}} +\newcommand\numfrac[2]{\frac{#1}{#2\mathstrut}} +\newcommand\denfrac[2]{\frac{\mathstrut#1}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\unitx} +% If \pack{babel-italian} is not loaded or a different language is temporarily +% set for the document, the \cs{unit} command will not be available. In this +% case, the \cs{unitx} command can be used in place of \cs{unit}: the \cs{unitx} +% command is roughly similar to \cs{unit}. +% \end{macro} +% \begin{macrocode} +\newcommand{\unitx}[1]{\ensuremath{\,\mathrm{#1}}} +% \end{macrocode} +% By default, \cs{if@blacktriangleright} is true and the \env{itemize} label +% symbol is~{\small $\blacktriangleright$}. If the option \opt{itembullet} is +% chosen, \cs{if@blacktriangleright} is false and the \env{itemize} label symbol +% is~\textbullet. +% \begin{macrocode} +\if@blacktriangleright + \def\labelitemi{\small $\blacktriangleright$} +\fi +% \end{macrocode} +% +%\subsection{Test environments} +% +% \begin{macro}{\labelbox} +% \begin{macro}{\biglabelbox} +% We use the \pack{enumitem} package to define the main environment +% \env{esercizi} and various lists for multiple choice tests. +% By default, the label for the multiple choice test, stored in \cs{@risp}, +% consists of an alphabetical counter inside a squared framed box. +% There are two types of boxes: normal (\cs{labelbox}, used for multiple choice +% tests) and big (\cs{biglabelbox}, used for true/false tests). If the option +% \opt{senzagrazie} is set, the default style for the alphabetic counter is +% upright, otherwise is italic. If the option \opt{extrasize} is set, the size +% of these boxes increases. +% \begin{macrocode} +\if@senzagrazie + \def\@labelstyle{\textup} +\else + \def\@labelstyle{\textit} +\fi +\newcommand{\labelbox}[1]{\fbox{\parbox[][.2cm][c]{.2cm}{#1}}} +\newcommand{\biglabelbox}[1]{\fbox{\parbox[b][.25cm][c]{.25cm}{#1}}} +\if@extrasize + \renewcommand{\labelbox}[1]{\fbox{\parbox[][.3cm][c]{.3cm}{#1}}} + \renewcommand{\biglabelbox}[1]{\fbox{\parbox[b][.35cm][c]{.35cm}{#1}}} +\fi +\def\@risp{\labelbox{\@labelstyle{\alph*}}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{environment}{esercizi} +% \begin{environment}{test} +% \begin{environment}{test-orizz} +% \begin{macro}{\labeltest} +% We define the new lists \env{esercizi}, \env{test} and \env{test-orizz}. The +% last one is a ``horizontal'' list, that is, it's an inline \pack{enumitem} +% list. The \cs{labeltest} command allows us to change the label style of all +% test environments, even in the \opt{shortlabels} \pack{enumitem} mode. +% \begin{macrocode} +\newlist{esercizi}{enumerate}{1} + \setlist[esercizi]{\bfseries 1.,itemsep=2em,leftmargin=*} +\newlist{test}{enumerate}{1} + \setlist[test]{\@risp,leftmargin=*} +\newlist{test-orizz}{enumerate*}{1} + \setlist[test-orizz]{% + \@risp,before=\hspace{1em},itemjoin=\hspace{1.2em},afterlabel=~~} +\newcommand{\labeltest}[1]{% + \renewlist{test}{enumerate}{1} + \setlist[test]{#1,leftmargin=*} + \renewlist{test-orizz}{enumerate*}{1} + \setlist[test-orizz]{% + #1,before=\hspace{1em},itemjoin=\hspace{1.2em},afterlabel=~~} +} +% \end{macrocode} +% \end{macro} +% \end{environment} +% \end{environment} +% \end{environment} +% \begin{environment}{test-orizz-newline} +% The \env{test-orizz-newline} environment is similar to \env{test-orizz}, +% but multiple choices start on a new line. +% \begin{macrocode} +\newenvironment{test-orizz-newline}[1][]{% + \par\begin{test-orizz}[before=\noindent,#1]}{\end{test-orizz}} +% \end{macrocode} +% \end{environment} +% +% \subsection{True/False tools} +% +% \begin{macro}{\vf} +% We define tools for creating true/false tests. If the selected language is +% English, or the \pack{babel} package is not loaded, the \cs{vf} command +% generates the true/false boxes~{\small\biglabelbox{T}~\biglabelbox{F}}. +% Otherwise, it generates {\small\biglabelbox{V}~\biglabelbox{F}} (especially +% when the selected language is Italian). The boxes will be placed at the end of +% the current line. The \cs{vf} command is right for short questions (shorter +% than the line width). +% \end{macro} +% \begin{macrocode} +\newcommand{\vf}{% + \iflanguage{english}{% + \hfill{\small\biglabelbox{T}~\biglabelbox{F}}}{% + \hfill{\small\biglabelbox{V}~\biglabelbox{F}}}% +} +% \end{macrocode} +% Now, we define a more complex macro for creating long true/false questions. +% \begin{macro}{\fattorevf} +% The control sequence \cs{@fattorevf} contains the scale factor that determines +% the line break point. It is set by default to $0.75$. It can be changed +% using the \cs{fattorevf}\marg{scale factor} command, which takes as an argument +% a number from $0$ to $1$ and overwrites the previous value of \cs{@fattorevf}. +% If the argument is not a number between $0$ and $1$, we will get an error +% message. +% \begin{macrocode} +\def\@fattorevf{.75} +\def\@fattorevferror{% + \ClassError{verifica}{% + \protect\fattorevf\space deve avere come argomento + un numero compreso tra 0 e 1}{% + Riprova scrivendo \protect\fattorevf{.85} o qualcosa + di simile. Ciao ;) \MessageBreak}% +} +\newcommand{\fattorevf}[1]{% + \ifdim0pt<#1pt\relax + \ifdim1pt>#1pt\relax + \def\@fattorevf{#1} + \else + \@fattorevferror + \fi + \else + \@fattorevferror + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\CalcNumber} +% In the following lines we define the internal macro \cs{CalcNumber}, which +% counts the number of lines of a text. The text is put in a minipage of +% the same width as the current line, which in turn is placed in the +% \cs{@boxcountlines} savebox. The \pack{lineno} package allows us to determine +% the number of the lines of the text, which is stored in the \texttt{mylines} +% counter. +% +% This macro is taken +% from \url{https://tex.stackexchange.com/questions/402779#406791} (thanks to +% \textsf{user121799}). +% \begin{macrocode} +\newcounter{mylines} +\newsavebox{\@boxcountlines} +\newcommand{\CalcNumber}[2]{% +\savebox{\@boxcountlines}{% + \begin{minipage}{\linewidth}\linenumbers* + \begin{internallinenumbers} + #1\par + \setcounter{mylines}{\thelinenumber}\addtocounter{mylines}{-1} + \end{internallinenumbers} + \end{minipage}} + \let#2=\themylines +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Repeat} +% The next macro is defined through the \pack{multido} package. It causes the +% repetition of the command that follows it as many times as specified by +% the argument. +% \begin{macrocode} +\newcommand{\Repeat}{\multido{\i=1+1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\verofalso} +% The macro \cs{verofalso}\oarg{scale factor}\marg{text} is defined to handle a +% long text in a true/false test. The mandatory argument is the text of a +% true/false question and the optional one is the scale factor for the line width +% (set by default by \cs{@fattorevf}). The macro puts the text in a +% \env{tabularx} environment (\pack{tabularx} package), within a cell of width +% equal to the resized line width, and passes it to the \cs{CalcNumber} macro, +% which counts the number of lines and stores this value in the counter \cs{myx}. +% Since this counting takes place in a cell, the current \cs{linewidth} +% is equal to the cell width. The \cs{numrighe} counter contains the number +% of \cs{newline} required to correctly position the true/false boxes within the +% second \env{tabularx} cell, at the same level as the last line of the +% question. +% \begin{macrocode} +\newcounter{numrighe} +\newcommand{\verofalso}[2][\@fattorevf]{% + \renewcommand{\tabcolsep}{0em}% + \begin{tabularx}{\linewidth}[b]{p{#1\linewidth}X}% + {#2}\CalcNumber{#2}{\myx}\setcounter{numrighe}{\myx-1}% + & \phantom{e}\Repeat{\value{numrighe}}\newline\phantom{e}\vf \\ + \end{tabularx} +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Dotted lines} +% +% \begin{macro}{\dotrule} +% \begin{macro}{\dotword} +% The \cs{dotrule}\marg{length} command inserts a dotted line of length equal to +% its argument; the \cs{dotword}\marg{word} command inserts a dotted line that is +% twice the width of the word specified as an argument. +% \begin{macrocode} +\newcommand{\@leadersbox}{.45em} +\newcommand{\@tratto}{.} +\newcommand{\@completeleaders}{% + \leavevmode\leaders\hbox to \@leadersbox{\hss\@tratto\hss}\hfill\kern0pt} +\newcommand{\dotrule}[1]{% + \parbox[t]{#1}{\@completeleaders}} +\newcommand{\dotword}[1]{% + \parbox[t]{\widthof{#1} * \real{2}}{\@completeleaders}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\riga} +% The \cs{riga}\marg{number} command inserts dotted lines with double vertical +% spacing, as many as specified by the argument. It is defined through the +% \pack{multido} and \pack{setspace} packages. +% \begin{macrocode} +\newcommand{\@rigaleaders}{% + \leavevmode\leaders\hbox to \@leadersbox{\hss\@tratto\hss}\hfill\kern0pt\par} +\newcommand{\riga}[1]{% + \doublespacing\Repeat{#1}{\noindent\@rigaleaders}\singlespacing} +% \end{macrocode} +% \end{macro} +% +% \subsection{Scoring tools} +% +% \begin{macro}{\punti} +% The \cs{punti}\oarg{additional text}\marg{score} command places the score at +% the end of the current line. If there is not enough space at the end of the +% current line, the score will be automatically positioned at the end of a new +% line. If the optional argument is defined, an additional text will be written +% after the score, automatically separated by a non-breaking space. If the +% optional argument is missing, this non-breaking space disappears: this feature +% is made possibile by the macro described at +% \url{https://tex.stackexchange.com/questions/217757#217763} (thanks to +% \textsf{David~Carlisle}). +% \begin{macrocode} +\newcommand{\@punteggio}{Punti} +\newcommand{\punti}[2][\@nil]{% + \hfill\vphantom{,}\nolinebreak[1]\null~\hfill% + [\textsc{\@punteggio~#2% + \def\tmp{#1}% + \ifx\tmp\@nnil + \relax + \else + ~\mbox{#1}% + \fi}]% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\puntiadestra} +% This command can be placed anywhere in the document and simply prints +% the word ``Punti'' after the score. +% \begin{macrocode} +\newcommand{\punti@dx}[2][\@nil]{% + \hfill\vphantom{,}\nolinebreak[1]\null~\hfill% + [\textsc{#2~\@punteggio% + \def\tmp{#1}% + \ifx\tmp\@nnil + \relax + \else + ~\mbox{#1}% + \fi}]% +} +\def\puntiadestra{\renewcommand{\punti}{\punti@dx}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\puntipt} +% This command can also be placed anywhere in the document and replaces +% the word ``Punti'' with the abbreviation ``Pt.'' +% \begin{macrocode} +\def\puntipt{\renewcommand{\@punteggio}{Pt.}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\totpunti} +% The \cs{totpunti}\oarg{calculation} command creates a \env{tabular} +% environment at the end of the current page, which is used to write the total +% score and calculate the final grade. The optional calculation is set by +% default to $/10+1$ (the one I usually adopt), but it can be changed as +% desired. The optional argument will be automatically set in math mode. +% \begin{macrocode} +\newcommand{\totpunti}[1][/10 + 1]{% + \vfill + \begin{flushright} + {\renewcommand{\arraystretch}{1.5} + \begin{tabular}{|cc|} + \hline + & {\hspace{-7pt}\textbf{VOTO}} \\ + {\textbf{Totale punti} \fbox{\phantom{\LARGE MM}} $\bm{#1=}$}% + & \hspace{-7pt}\fbox{\phantom{\Huge MM}} \\ + \hline + \end{tabular}} + \end{flushright}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\vartotpunti} +% This command is similar to \cs{totpunti}, but it doesn't place the final score +% \env{tabular} environment at the end of the page. +% \begin{macrocode} +\newcommand{\vartotpunti}[1][/10 + 1]{% + \begin{flushright} + {\renewcommand{\arraystretch}{1.5} + \begin{tabular}{|cc|} + \hline + & {\hspace{-7pt}\textbf{VOTO}} \\ + {\textbf{Totale punti} \fbox{\phantom{\LARGE MM}} $\bm{#1=}$}% + & \hspace{-7pt}\fbox{\phantom{\Huge MM}} \\ + \hline + \end{tabular}} + \end{flushright}} +% \end{macrocode} +% \end{macro} +%\iffalse +% +%\fi +% +% \Finale +\endinput diff --git a/macros/latex/contrib/verifica/verifica.ins b/macros/latex/contrib/verifica/verifica.ins new file mode 100644 index 0000000000..bd3b03ad2a --- /dev/null +++ b/macros/latex/contrib/verifica/verifica.ins @@ -0,0 +1,61 @@ +%% verifica.ins +%% Copyright 2020 Riccardo Dossena +%% +%% This work 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 2005/12/01 or later. +%% +%% Author: Riccardo Dossena +%% +%% 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 package when run through +%% LaTeX or TeX. +%% +%% This work consists of all files listed in README +%% +%% --------------- start of docstrip commands ------------------ +%% +\input docstrip +\preamble + + Copyright 2020 Riccardo Dossena + + This program is provided under the terms of the + LaTeX Project Public License distributed from CTAN + archives in directory macros/latex/base/lppl.txt. + + Author: Riccardo Dossena + + This work has the LPPL maintenance status `maintained'. + +\endpreamble + +\keepsilent +\askforoverwritefalse + +\Msg{*** Generating the package files ***} +\generate{\file{verifica.cls}{\from{verifica.dtx}{class}} + \file{ver-doc.sty}{\from{verifica.dtx}{package}}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* verifica.cls} +\Msg{*} +\Msg{*} +\Msg{* To produce the documentation on verifica's code run} +\Msg{* the file ending with `.dtx' through (pdf)LaTeX. See the} +\Msg{* README file for more details.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} + +\endbatchfile diff --git a/macros/latex/contrib/verifica/verifica.pdf b/macros/latex/contrib/verifica/verifica.pdf new file mode 100644 index 0000000000..630e5abd14 Binary files /dev/null and b/macros/latex/contrib/verifica/verifica.pdf differ -- cgit v1.2.3