diff options
author | Norbert Preining <norbert@preining.info> | 2020-02-23 03:01:01 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2020-02-23 03:01:01 +0000 |
commit | 0908ef0004729f1b45b8d9687656f2f92fc122ae (patch) | |
tree | aa4649a4452d4556370dc1d72c01f5d872a7c159 /macros/latex | |
parent | 3549e67b13c8460a73d122fbc2eef8badd816636 (diff) |
CTAN sync 202002230301
Diffstat (limited to 'macros/latex')
85 files changed, 9515 insertions, 1000 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/american-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/american-apa.lbx index a5dea0b748..b09f8bda78 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/american-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/american-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{american-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{american-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{american} \NewBibliographyString{revisededition} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/apa.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/apa.bbx index 276fa50c0e..2e17e6b3f8 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/apa.bbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/apa.bbx @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Philip Kime. -\ProvidesFile{apa.bbx}[2020/02/01\space v9.5\space APA biblatex references style] +\ProvidesFile{apa.bbx}[2020/02/22\space v9.6\space APA biblatex references style] \RequireBiber[3] \RequireBibliographyStyle{standard} \urlstyle{rm} % APA examples all have URLs in same font as text @@ -98,16 +98,16 @@ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Multiple related entries, even though there are no -% examples in APA 7th, should probably be this +% examples in APA 7th, should probably be this \renewcommand*{\relateddelim}{\addcomma\addspace} % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Force roman numerals into arabic using % etoolbox macros @@ -133,7 +133,7 @@ \iffieldundef{#1year}{} {\datecircaprint \ifboolexpr{ test {\ifstrequal{#1}{url}} - or test {\ifentrytype{legal}} + or test {\ifentrytype{legal}} or ( test {\ifentrytype{legadminmaterial}} and test {\ifkeyword{proposed}} ) } {\printtext{% @@ -309,9 +309,9 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Enforce ignoring of PUBSTATE if there is a YEAR or DATE field -% (APA 10.2:32) Remove PUBLISHER if it is the same as GROUPAUTHOR +% (APA 10.2:32) Remove PUBLISHER if it is the same as GROUPAUTHOR % Force @COLLECTION, @REFERENCE->@BOOK and @INCOLLECTION,@INREFERENCE->@INBOOK - + \DeclareStyleSourcemap{ \maps[datatype=bibtex]{ \map{ @@ -452,7 +452,7 @@ \DeclareFieldFormat{url}{\url{#1}} \DeclareFieldFormat{urldate}{#1} -% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -505,7 +505,7 @@ \ifthenelse{\value{listcount}=\value{listtotal}}% {\ifmorenames {\printdelim{andothersdelim}% - \bibstring{andothers}} + \biblcstring{andothers}} {}% \let\bibstring\bibcplstring \usebibmacro{roles}{\addspace}{\mkbibparens}} @@ -521,13 +521,13 @@ {\namepartgiven}% {\namepartgiveni}% {\namepartprefix}% - {\namepartsuffix}% + {\namepartsuffix}% \let\bibstring\bibcpsstring \usebibmacro{role}{\addcomma\space}{\@firstofone}}}% \ifthenelse{\value{listcount}=\value{listtotal}}% {\ifmorenames {\printdelim{andothersdelim}% - \bibstring{andothers}} + \biblcstring{andothers}} {}% \let\bibstring\bibcplstring \usebibmacro{roles}{\addspace}{\@firstofone}} @@ -619,7 +619,7 @@ \value{liststop}=2} {\addspace\&\space} {\finalandcomma\addspace\&\space}}} - + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -657,7 +657,7 @@ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % (APA 9.25) No prefix for pages \DeclareFieldFormat{pages}{#1} @@ -673,7 +673,7 @@ \renewbibmacro*{begentry}{% \ifkeyword{meta}{\textsuperscript{*}}{}} -% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -757,13 +757,15 @@ % (APA 10.1 Example 6) eprints (eLocator) \renewbibmacro*{eprint}{% - \iffieldundef{eprinttype} - {} - {\iffieldbibstring{eprinttype} - {\bibcplstring{\strfield{eprinttype}}} - {\strfield{eprinttype}}% - \setunit{\addspace}}% - \printfield{eprint}} + \iftoggle{bbx:eprint} + {\iffieldundef{eprinttype} + {} + {\iffieldbibstring{eprinttype} + {\bibcplstring{\strfield{eprinttype}}} + {\strfield{eprinttype}}% + \setunit{\addspace}}% + \printfield{eprint}} + {}} \DeclareFieldFormat{eprint}{#1} @@ -800,7 +802,7 @@ % "In" precedes editor/trans list, no colon % Use a flag to track as it could be inserted in more % than one potential location - + \newbibmacro*{in}{% \ifbool{bbx:in}% {}% @@ -851,9 +853,9 @@ } \newcommand*{\apabbx@ifrole@field}{% - \xifinlist{field@\currentname @role@}% + \xifinlist{field@\currentname @role}% \abx@annotation@defined} - + \newtoggle{apabbx:role:field:punct} \newcommand*{\apabbx@rolelist@field}{} @@ -898,7 +900,7 @@ % #3 = given name (initials) % #4 = name prefix % #5 = name suffix - + \newbibmacro*{name:delim:apa:family-given}[1]{% \ifnumgreater{\value{listcount}}{\value{liststart}} {\ifboolexpr{ @@ -1024,7 +1026,7 @@ \usebibmacro{in}% \usebibmacro{editorx}}% \setunit{\addcomma\addspace}}} - + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1167,7 +1169,7 @@ \usebibmacro{in}% \setunit{\addspace}}} -% +% %%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1207,8 +1209,8 @@ \biblstring{byauthor}% \setunit{\addspace}% \usebibmacro{author/editor:related}}}} - -% + +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1221,9 +1223,9 @@ \printfield{maintitle}}} % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % (APA 10.12) Audiovisual \newbibmacro*{mainvideo}{% @@ -1237,9 +1239,9 @@ \printfield{maintitle}}} % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Related entries % % Have to force capitlisation bibstring variant because the delim @@ -1250,7 +1252,7 @@ \iffieldequalstr{relatedtype}{reprintfrom} {\renewcommand*{\finentrypunct}{\relax}} {}} - + \newcommand*{\begrelateddelimreprintfrom}{\addperiod\addspace} % Some APA related entries are just after title, some are at the end of @@ -1326,8 +1328,14 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % (APA 9.51) Annotations +\newtoggle{bbx:annotation} +\DeclareBiblatexOption{global,type,entry}[boolean]{annotation}[true]{% + \settoggle{bbx:annotation}{#1}} +\ExecuteBibliographyOptions{annotation=true} + \renewbibmacro*{annotation}{% - \iffieldundef{annotation} + \ifboolexpr{ test {\iffieldundef{annotation}} + or not togl {bbx:annotation}} {} {\begingroup \togglefalse{blx@bibliography}% @@ -1335,7 +1343,7 @@ \setunit{}% \printfield{annotation}% \endgroup}} - + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1358,7 +1366,7 @@ \ifthenelse{\value{listcount}<\value{liststop}} {\addcomma\addspace} {}} - + \DeclareFieldFormat{courtdate}{% % disable normal date printing if it's in the citation info \iftoggle{apa:courtdate} @@ -1368,18 +1376,18 @@ \printlist{organization}\space #1}}} {}} -% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % (APA 11.5) Statutes - + \newbibmacro*{statdate}{% \iffieldundef{origyear} {\printtext[parens]{\printlabeldate}} {\printtext[parens]{\printorigdate% \addspace\&\addspace rev\adddot\addspace\printlabeldate}}} - + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1393,7 +1401,7 @@ \DeclareDelimFormat[location]{multilistdelim}{\addcomma\space} \DeclareDelimFormat[location]{finallistdelim}{\addcomma\space} - + \newbibmacro*{legmattitle}{% \iffieldundef{title} {\ifbibxstring{\thefield{source}}{\bibcpsstring{\thefield{source}}}{}% @@ -1405,10 +1413,10 @@ \setunit*{\addcolon\addspace}\newblock \printfield{subtitle}}} -% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % (APA 10.x) General entrytype drivers % Custom driver to make a cleaner example for 9.44 @@ -1690,7 +1698,7 @@ \printtext[parens]{\ifkeyword{proposed}{\bibstring{proposed}\space}{}\printlabeldate}% \setunit{\addspace}\newblock \printfield{note}% - \newunit\newblock + \newunit\newblock \usebibmacro{doi+url}% \usebibmacro{pageref}% \usebibmacro{annotation}% @@ -1706,7 +1714,7 @@ \printtext[parens]{\printlabeldate}% \setunit{\addspace}\newblock \printfield{note}% - \newunit\newblock + \newunit\newblock \usebibmacro{doi+url}% \usebibmacro{pageref}% \usebibmacro{annotation}% @@ -2049,11 +2057,22 @@ {\bibcpstring{type\thefield{#1type}s}} {\bibcpstring{type\thefield{#1type}}}}} + + %(APA 9.35) No periods after URLS +% we'll override a global url option for for @online entries +\ExecuteBibliographyOptions[online]{url=true} \newbibmacro*{doi+url}{% - \iffieldundef{doi} - {\iffieldundef{url}{\newunit}{\usebibmacro{url+urldate}\setunit{\addspace}}} - {\printfield{doi}\renewcommand*{\finentrypunct}{\relax}\setunit{\addspace}}} + \ifboolexpr{ test {\iffieldundef{doi}} + or not togl {bbx:doi}} + {\ifboolexpr{ test {\iffieldundef{url}} + or not togl {bbx:url}} + {\newunit} + {\usebibmacro{url+urldate}% + \setunit{\addspace}}} + {\printfield{doi}% + \renewcommand*{\finentrypunct}{\relax}% + \setunit{\addspace}}} \renewbibmacro*{url+urldate}{% \ifthenelse{\iffieldundef{url}\OR\NOT\iffieldundef{doi}} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/apa.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/apa.cbx index 40cfadefd9..5402613ff0 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/apa.cbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/apa.cbx @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Philip Kime. -\ProvidesFile{apa.cbx}[2020/02/01\space v9.5\space APA biblatex citation style] +\ProvidesFile{apa.cbx}[2020/02/22\space v9.6\space APA biblatex citation style] \RequireBiber[3] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/apa.dbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/apa.dbx index 5687733b51..41b5f27814 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/apa.dbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/apa.dbx @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Philip Kime. -\ProvidesFile{apa.dbx}[2020/02/01\space v9.5\space APA biblatex style data model] +\ProvidesFile{apa.dbx}[2020/02/22\space v9.6\space APA biblatex style data model] \RequireBiber[3] \DeclareDatamodelEntrytypes{ diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/austrian-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/austrian-apa.lbx index e98bbb5e17..80f3cebcbe 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/austrian-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/austrian-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{austrian-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{austrian-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{austrian} % Following DGPs guidlines for German/Austrian diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/biblatex-apa-test.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-apa/biblatex-apa-test.pdf Binary files differindex c98168fa60..646740c205 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/biblatex-apa-test.pdf +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/biblatex-apa-test.pdf diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/biblatex-apa.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-apa/biblatex-apa.pdf Binary files differindex 1688d3a536..e8b00af55a 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/biblatex-apa.pdf +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/biblatex-apa.pdf diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/biblatex-apa.tex b/macros/latex/contrib/biblatex-contrib/biblatex-apa/biblatex-apa.tex index ba07b6c704..b98452893d 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/biblatex-apa.tex +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/biblatex-apa.tex @@ -24,7 +24,7 @@ url={http://mirror.ctan.org/macros/latex/exptl/biblatex-contrib/biblatex-apa/}, author={Philip Kime}, email={Philip@kime.org.uk}, - revision={9.5}, + revision={9.6}, date={\today}} \hypersetup{% @@ -397,6 +397,10 @@ the examples. \begin{changelog} +\begin{release}{9.6}{2020-02-22} +\item Bugfixes +\end{release} + \begin{release}{9.5}{2020-02-01} \item Bugfixes \end{release} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/brazilian-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/brazilian-apa.lbx index 2d255a0670..dca61ac583 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/brazilian-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/brazilian-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{brazilian-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{brazilian-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{brazilian} \NewBibliographyString{revisededition} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/british-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/british-apa.lbx index e250ee65a3..e25ea7aa57 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/british-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/british-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{british-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{british-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{british} \NewBibliographyString{revisededition} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/danish-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/danish-apa.lbx index e1d31d68a0..4687e1e768 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/danish-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/danish-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{danish-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{danish-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{danish} \NewBibliographyString{revisededition} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/dutch-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/dutch-apa.lbx index a25af318fd..50df023256 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/dutch-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/dutch-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{dutch-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{dutch-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{dutch} \NewBibliographyString{revisededition} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/english-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/english-apa.lbx index fd325840d3..9beefcdda6 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/english-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/english-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{english-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{english-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{english} \NewBibliographyString{revisededition} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/french-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/french-apa.lbx index ff34c5bd69..7cf1128920 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/french-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/french-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{french-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{french-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{french} \NewBibliographyString{revisededition} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/galician-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/galician-apa.lbx index 7baef5db24..f748b01fc6 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/galician-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/galician-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{galician-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{galician-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{galician} \setcounter{smartand}{0} % Turn off "smart and" or ampersands will all be replaced diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/german-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/german-apa.lbx index 27be3dc3d2..d15e868496 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/german-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/german-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{german-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{german-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{german} % Following DGPs guidlines for German/Austrian diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/greek-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/greek-apa.lbx index 1741c080a1..05d4e2eee7 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/greek-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/greek-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{greek-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{greek-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{greek} \NewBibliographyString{revisededition} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/italian-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/italian-apa.lbx index 73cd0ebdf3..4ca83ae13e 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/italian-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/italian-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{italian-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{italian-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{italian} \NewBibliographyString{revisededition} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/naustrian-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/naustrian-apa.lbx index 13aa253002..c01d9dd092 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/naustrian-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/naustrian-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{naustrian-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{naustrian-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{naustrian} % Following DGPs guidlines for German/Austrian diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/ngerman-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/ngerman-apa.lbx index de82a0556c..cf25c6e5d7 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/ngerman-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/ngerman-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{ngerman-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{ngerman-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{ngerman} % Following DGPs guidlines for German/Austrian diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/norsk-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/norsk-apa.lbx index 15ba2bf677..eaccd6ab9e 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/norsk-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/norsk-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{norsk-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{norsk-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{norsk} \NewBibliographyString{revisededition} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/norwegian-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/norwegian-apa.lbx index 0fc240f30b..6cf00a509b 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/norwegian-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/norwegian-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{norwegian-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{norwegian-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{norwegian} \NewBibliographyString{revisededition} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/nswissgerman-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/nswissgerman-apa.lbx index 02d8a1fc9a..e2734bce62 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/nswissgerman-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/nswissgerman-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{nswissgerman-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{nswissgerman-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{nswissgerman} % Following DGPs guidlines for German/Austrian/Swiss German diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/nynorsk-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/nynorsk-apa.lbx index c3e34ba4d7..d12084810d 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/nynorsk-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/nynorsk-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{nynorsk-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{nynorsk-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{nynorsk} \NewBibliographyString{revisededition} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/portuguese-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/portuguese-apa.lbx index 8ab547b392..8b4e9d6d31 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/portuguese-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/portuguese-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{portuguese-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{portuguese-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{portuguese} \NewBibliographyString{revisededition} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/russian-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/russian-apa.lbx index 130f9db214..85a886a8e6 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/russian-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/russian-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{russian-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{russian-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{russian} \NewBibliographyString{revisededition} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/slovene-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/slovene-apa.lbx index 7c6d66f25e..58e628fc8d 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/slovene-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/slovene-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{slovene-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{slovene-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{slovene} \NewBibliographyString{revisededition} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/spanish-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/spanish-apa.lbx index 60c7c1773a..fb2ef37e30 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/spanish-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/spanish-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{spanish-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{spanish-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{spanish} \setcounter{smartand}{0} % Turn off "smart and" or ampersands will all be replaced diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/swedish-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/swedish-apa.lbx index b6bc5dd15b..e2c9f5a31d 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/swedish-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/swedish-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{swedish-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{swedish-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{swedish} \NewBibliographyString{revisededition} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-apa/swissgerman-apa.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-apa/swissgerman-apa.lbx index 283a7aa28c..a6a27faa2a 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-apa/swissgerman-apa.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-apa/swissgerman-apa.lbx @@ -1,4 +1,4 @@ -\ProvidesFile{swissgerman-apa.lbx}[2020/02/01\space v9.5\space APA biblatex localisation] +\ProvidesFile{swissgerman-apa.lbx}[2020/02/22\space v9.6\space APA biblatex localisation] \InheritBibliographyExtras{swissgerman} % Following DGPs guidlines for German/Austrian/Swiss German diff --git a/macros/latex/contrib/fontsize/README b/macros/latex/contrib/fontsize/README new file mode 100644 index 0000000000..ea79ff09b0 --- /dev/null +++ b/macros/latex/contrib/fontsize/README @@ -0,0 +1,55 @@ +----------------------------------------------------------------------- +The 'fontsize' package for LaTeX +Author: Ivan Valbusa + ivan dot valbusa at univr dot it + +This work has the LPPL maintenance status "author-maintained". +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. +----------------------------------------------------------------------- + +DESCRIPTION: + +The 'fontsize' package allows you to set arbitrary sizes +for the main font of the document, through the 'fontsize=<size>' option. + +This work consists of the following files: + + README (this file) + fontsize.dtx + fontsize.pdf + +and of the derived files: + + fontsize.sty + +INSTALLATION: + +To install the distribution: + +o run "pdflatex fontsize.dtx" +o move "fontsize.sty" to locations where LaTeX will find + it (the FAQ on CTAN in /help/uktug-FAQ gives more + information about this magic place) + + +DOCUMENTATION: + +To reproduce the complete documentation, follow these steps: + +$ pdflatex fontsize.dtx +$ makeindex -s gind.ist -o fontsize.ind fontsize.idx +$ makeindex -s gglo.ist -o fontsize.gls fontsize.glo +$ pdflatex fontsize.dtx + +from a shell (or in the preferred method for you system), +where `$' stands for the shell's prompt. + + +2020/02/20 +Ivan Valbusa diff --git a/macros/latex/contrib/fontsize/fontsize.dtx b/macros/latex/contrib/fontsize/fontsize.dtx new file mode 100644 index 0000000000..aba6194a18 --- /dev/null +++ b/macros/latex/contrib/fontsize/fontsize.dtx @@ -0,0 +1,489 @@ +% \iffalse meta-comment +%<*internal> +\begingroup +\input docstrip +\preamble + +Copyright 2020 Ivan Valbusa + +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: Ivan Valbusa +Ivan dot Valbusa at gmail dot com + +This work has the LPPL maintenance status "author-maintained". + +\endpreamble + +\keepsilent +\askforoverwritefalse + +\Msg{*** Generating the package files ***} +\generate{\file{fontsize.sty}{\from{fontsize.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{* \space\space fontsize.sty} +\Msg{*} +\Msg{*} +\Msg{* To produce the documentation on fontsize'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{***********************************************************} +\endgroup +%</internal> +% +% Copyright (C) 2020 by Ivan Valbusa +% <Ivan dot Valbusa at gmail dot com> +% ------------------------------------------------------- +% +% 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 consists of all files listed in README +% +% \fi +% +% \iffalse +%<*driver> +\ProvidesFile{fontsize.dtx} +%</driver> +%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01] +%<package>\ProvidesPackage{fontsize} +%<*package> + [2020/02/20 v0.1 'fontsize' package. Set main font sizes (Ivan Valbusa)] +%</package> +%<*driver> +\PassOptionsToClass{a4paper}{article} +\documentclass{ltxdoc} +\let\cmd\relax +\let\cs\relax +\usepackage[T1]{fontenc} +\usepackage{ltxdockit} +\usepackage[fontsize=10.5]{fontsize} + +\makeatletter +\newcommand{\mysize}[1]{% + \bgroup\noindent\csname#1\endcsname The \cmd{#1} size is: \textbf{\csname#1\endcsname\f@size\,pt}.\\The \cmd{baselineskip} is \the\baselineskip\par\vskip2mm\egroup} +\makeatother + +\EnableCrossrefs +\CodelineIndex +\RecordChanges + +\begin{document} + \DocInput{fontsize.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{787} +% +% \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{v0.1}{2020/02/20}{First public release} +% \GetFileInfo{fontsize.dtx} +% +% \DoNotIndex{\newcommand,\newenvironment,\def,\begin,\vskip,\ } +% \DoNotIndex{\DeclareOption,\ExecuteOptions,\RequirePackage} +% \DoNotIndex{\@@end,\@empty,\@ifclassloaded,\@nameuse,\@nil} +% \DoNotIndex{\@undefined,\\,\`,\addtocounter,\advance,\bfseries} +% \DoNotIndex{\centering,\closeout,\define@key,\documentclass} +% \DoNotIndex{\edef,\else,\end,\endinput,\endtitlepage,\expandafter} +% \DoNotIndex{\extracolsep,\fi,\fill,\fontsize,\g@addto@macro,\toks} +% \DoNotIndex{\hrule,\hspace,\if,\if@twoside,\ifcase,\ifdefined} +% \DoNotIndex{\iffalse,\IfFileExists,\ifnum,\ifx,\immediate,\setcounter} +% \DoNotIndex{\jobname,\let,\long,\MakeUppercase,\MessageBreak} +% \DoNotIndex{\newcount,\newif,\newpage,\newtoks,\newwrite,\next} +% \DoNotIndex{\noexpand,\nofiles,\normalfont,\normalsize,\null} +% \DoNotIndex{\openout,\or,\Package,\PackageError,\PackageWarning} +% \DoNotIndex{\PackageWarningNoLine,\paperheight,\paperwidth,\par} +% \DoNotIndex{\parbox,\parindent,\relax,\scshape,\selectfont,\setkeys} +% \DoNotIndex{\sffamily,\space,\stretch,\string,\textheight,\textwidth} +% \DoNotIndex{\the,\thispagestyle,\unexpanded,\unless,\unskip,\upshape} +% \DoNotIndex{\usepackage,\vbox,\vfill,\vspace,\write,\z@} +% \DoNotIndex{\CurrentOption,\AtEndDocument,\@ne,\c@page,\m@ne} +% \DoNotIndex{\@firstofone,\@gobble,\@makeother,\begingroup,\endgroup} +% \DoNotIndex{\eTeXversion,\hbox,\hsize,\includegraphics,\newlinechar} +% \DoNotIndex{\titlepage,\vss,\vtop,\xdef,\@gobbletwo,\color,\dimexpr} +% \DoNotIndex{\huge,\large,\makebox,\ProcessOptions,\renewcommand} +% + +% +% +% \title{The \textsf{fontsize} package\\ \normalsize \textit{A small package to change the font size}} +% \author{Ivan Valbusa \\ +% \texttt{Ivan dot Valbusa at gmail dot com}} +% \date{\fileversion{} -- \filedate} +% +% \maketitle +% +%\noindent The \sty{fontsize} package allows you to set arbitrary sizes for the main font of the document, through the \opt{fontsize=\meta{size}} option. The value for the \meta{size} can be given in any unit recognized by TeX (for example: \opt{6mm}, \opt{1ex}, \opt{11.5pt}). If the unit is not declared it defaults to \texttt{pt}. So \opt{fontsize=11} is the same as \opt{fontsize=11pt}. See the example below. +% +% \section*{Caveat} +% +% Although effective with any value for the \meta{size} (as long as the font is scalable!), the package is meant for small font size changes. For truly optimal results you should not use this package at all. Rather, a \file{.clo} file should be defined for each main size, even if this is pretty hard work. Particularly, you should define \cmd{parindent} accordingly to the used size. +% +% \section*{Credits} +% +% The code is a a minimal part of the \sty{scrextend}, with few minor changes to make it completely independent of the Koma bundle (see \cite{koma}). +% +% \section*{An example} +% +% \verb!\usepackage[fontsize=10.5]{fontsize}!\bigskip +% +% +%\mysize{tiny} +%\mysize{scriptsize} +%\mysize{footnotesize} +%\mysize{small} +%\mysize{normalsize} +%\mysize{large} +%\mysize{Large} +%\mysize{LARGE} +%\mysize{huge} +%\mysize{Huge} +% +% \begin{thebibliography}{label} +% \bibitem{koma} Frank Neukam, Markus Kohm, Axel Kielhorn, \textit{KOMA -- Script. A versatile \LaTeXe{} bundle}. \url{https://www.ctan.org/pkg/koma-script} +% \bibitem{xkeyval} Hendri Adriaens, \textit{The \sty{xkeyval} package}, \url{https://www.ctan.org/pkg/xkeyval}. +% \bibitem{etoolbox} Philipp Lehman, Joseph Wright, \textit{The \sty{etoolbox} Package. An e-\TeX{} Toolbox for Class and Package Authors}, \url{https://www.ctan.org/pkg/etoolbox}. + +% \end{thebibliography} +% +% \StopEventually{\PrintChanges\PrintIndex} +% +% \section{The Code} +% +% \iffalse +%<*package> +% \fi +% \begin{macrocode} +\@ifpackageloaded{xkeyval}{}{\RequirePackage{xkeyval}} +\@ifpackageloaded{etoolbox}{}{\RequirePackage{etoolbox}} +% \end{macrocode} +% Here begins the \sty{scrextend} code. Only a few names have changed. +% The value for \cmd{@fontsizefilebase} is set to \texttt{custom} instead of \texttt{scrsize}. +% \begin{macrocode} +\providecommand*{\@fontsizefilebase}{custom} +\DeclareOptionX{fontsize}[10]{% + \expandafter\@defaultunits\expandafter\@tempdima#1 pt\relax\@nnil + \edef\@tempa{#1}% + \setlength{\@tempdimb}{\@tempdima}% + \edef\@tempb{\strip@pt\@tempdimb}% + \addtolength{\@tempdimb}{-10\p@}% + \edef\@ptsize{\strip@pt\@tempdimb}% + \edef\@tempa{% + \noexpand\makeatletter + \noexpand\InputIfFileExists{\@fontsizefilebase\@tempa.clo}{% + \noexpand\PackageInfo{fontsize}{% + File `\@fontsizefilebase\@tempa.clo' used to setup font sizes}% + }{% + \noexpand\changefontsize{#1}% + }% + \noexpand\catcode`\noexpand\@=\the\catcode`\@ + }% + \expandafter\AtEndOfPackage\expandafter{\@tempa}% +} +% \end{macrocode} +% \begin{macrocode} +\ProcessOptionsX*\relax +% \end{macrocode} +% The comamnd \cmd{ctm@setlength} has the same definition as \cmd{scr@setlength} of \file{scrextend.sty}. +% \begin{macrocode} +\newcommand*\ctm@setlength[4]{% + \ifdim #2<\ifdim #2=\z@ \z@ \else \p@\fi + \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{\p@ \@plus\p@ \@minus\p@}% + \else + \setlength{#1}{\p@ \@plus\p@ \@minus#4}% + \fi + \else + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{\p@ \@plus#3 \@minus\p@}% + \else + \setlength{#1}{\p@ \@plus#3 \@minus#4}% + \fi + \fi + \else + \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{#2 \@plus\p@ \@minus\p@}% + \else + \setlength{#1}{#2 \@plus\p@ \@minus#4}% + \fi + \else + \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi + \setlength{#1}{#2 \@plus#3 \@minus\p@}% + \else + \setlength{#1}{#2 \@plus#3 \@minus#4}% + \fi + \fi + \fi +} +% \end{macrocode} +% The comamnd \cmd{changefontsize} has the same definition as \cmd{changefontsizes} of \file{scrextend.sty}. +% \begin{macrocode} +\providecommand*{\changefontsize}[2][1.2\@tempdima]{% + \@defaultunits\@tempdima#2pt\relax\@nnil + \setlength{\@tempdimc}{\@tempdima}% + \addtolength{\@tempdimc}{-10\p@}% + \edef\@ptsize{\strip@pt\@tempdimc}% + \@defaultunits\@tempdimb#1pt\relax\@nnil + \setlength{\@tempdimc}{\dimexpr (100\@tempdimb / \@tempdima * \p@)}% + \edef\@tempb{\the\@tempdimc}% + \setlength{\@tempdimc}{\@tempdima}% + \def\@tempa##1##2##3##4##5\@nnil{\def##1{##2.##3##4}}% + \expandafter\@tempa\expandafter\@tempb\@tempb\@nnil% + \ctm@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \ctm@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \ctm@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \edef\normalsize{% + \noexpand\@setfontsize\noexpand\normalsize + {\the\@tempdima}{\the\@tempdimb}% + \abovedisplayskip \the\abovedisplayskip + \abovedisplayshortskip \the\abovedisplayshortskip + \belowdisplayskip \the\belowdisplayskip + \belowdisplayshortskip \the\belowdisplayshortskip + \let\noexpand\@listi\noexpand\@listI + }% + \setlength{\@tempdima}{0.9125\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \ctm@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \ctm@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \ctm@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \edef\small{% + \noexpand\@setfontsize\noexpand\small + {\the\@tempdima}{\the\@tempdimb}% + \abovedisplayskip \the\abovedisplayskip + \abovedisplayshortskip \the\abovedisplayshortskip + \belowdisplayskip \the\belowdisplayskip + \belowdisplayshortskip \the\belowdisplayshortskip + \let\noexpand\@listi\noexpand\@listi@small + }% + \setlength{\@tempdima}{.83334\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \ctm@setlength{\abovedisplayskip}% + {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% + \ctm@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% + \ctm@setlength{\belowdisplayshortskip}% + {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% + \setlength{\belowdisplayskip}{\abovedisplayskip}% + \edef\footnotesize{% + \noexpand\@setfontsize\noexpand\footnotesize + {\the\@tempdima}{\the\@tempdimb}% + \abovedisplayskip \the\abovedisplayskip + \abovedisplayshortskip \the\abovedisplayshortskip + \belowdisplayskip \the\belowdisplayskip + \belowdisplayshortskip \the\belowdisplayshortskip + \let\noexpand\@listi\noexpand\@listi@footnotesize + }% + \setlength{\@tempdima}{.66667\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\scriptsize{% + \noexpand\@setfontsize\noexpand\scriptsize + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{.5\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\tiny{% + \noexpand\@setfontsize\noexpand\tiny + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{1.2\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\large{% + \noexpand\@setfontsize\noexpand\large + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{1.44\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\Large{% + \noexpand\@setfontsize\noexpand\Large + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{1.728\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\LARGE{% + \noexpand\@setfontsize\noexpand\LARGE + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{2.074\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\huge{% + \noexpand\@setfontsize\noexpand\huge + {\the\@tempdima}{\the\@tempdimb}% + }% + \setlength{\@tempdima}{2.488\@tempdimc}% + \setlength{\@tempdimb}{\@tempb\@tempdima}% + \edef\Huge{% + \noexpand\@setfontsize\noexpand\Huge + {\the\@tempdima}{\the\@tempdimb}% + }% + \normalsize + \setlength{\@tempdimb}{\f@baselineskip}% + \ctm@setlength{\parsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}% + \ctm@setlength{\topsep}% + {.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listi\endcsname + \endgroup + \edef\@listi{\leftmargin\leftmargini + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \let\@listI\@listi + \ctm@setlength{\parsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \ctm@setlength{\topsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listi\endcsname + \endgroup + \edef\@listi@small{\leftmargin\leftmargini + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \ctm@setlength{\parsep}% + {.125\@tempdimb}{.0625\@tempdimb}{.0625\@tempdimb}% + \ctm@setlength{\topsep}% + {.25\@tempdimb}{.125\@tempdimb}{.125\@tempdimb}% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listi\endcsname + \endgroup + \edef\@listi@footnotesize{\leftmargin\leftmargini + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \ctm@setlength{\parsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \ctm@setlength{\topsep}% + {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listii\endcsname + \endgroup + \edef\@listii{\leftmargin\leftmarginii + \labelwidth=\dimexpr \leftmargin-\labelsep + \topsep \the\topsep + \parsep \the\parsep + \itemsep \parsep + \if@tempswa\noexpand\@list@extra\fi + }% + \ctm@setlength{\topsep}% + {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% + \setlength{\partopsep}{\z@ \@plus\z@ \@minus\p@}% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listiii\endcsname + \endgroup + \edef\@listiii{\leftmargin\leftmarginiii + \labelwidth=\dimexpr \leftmargin-\labelsep + \topsep \the\topsep + \parsep \z@ + \partopsep \the\partopsep + \itemsep \topsep + \if@tempswa\noexpand\@list@extra\fi + }% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listiv\endcsname + \endgroup + \edef\@listiv{\leftmargin\leftmarginiv + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listv\endcsname + \endgroup + \edef\@listv{\leftmargin\leftmarginv + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% + \@tempswafalse + \begingroup + \def\@list@extra{\aftergroup\@tempswatrue}% + \csname @listvi\endcsname + \endgroup + \edef\@listvi{\leftmargin\leftmarginvi + \labelwidth=\dimexpr \leftmargin-\labelsep\relax + \if@tempswa\noexpand\@list@extra\fi + }% + \@listi + \setlength{\@tempdimb}{\f@baselineskip}% + \setlength{\footnotesep}{.555\@tempdimb}% + \ctm@setlength{\skip\footins}% + {.75\@tempdimb}{.3333\@tempdimb}{.1667\@tempdimb}% + \ctm@setlength{\floatsep}% + {\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}% + \ctm@setlength{\textfloatsep}% + {1.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}% + \setlength{\intextsep}{\floatsep}% + \setlength{\dblfloatsep}{\floatsep}% + \setlength{\dbltextfloatsep}{\textfloatsep}% + \setlength{\@fptop}{\z@ \@plus 1fil}% + \setlength{\@fpsep}{.6667\@tempdimb \@plus 2fil}% + \setlength{\@fpbot}{\@fptop}% + \setlength{\@dblfptop}{\@fptop}% + \setlength{\@dblfpsep}{\@fpsep}% + \setlength{\@dblfpbot}{\@fptop}% + \ctm@setlength{\partopsep}{.2\@tempdimb}{.1\@tempdimb}{.1\@tempdimb}% +} +\endinput +% \end{macrocode} +% \iffalse +%</package> +% \fi +% \Finale diff --git a/macros/latex/contrib/fontsize/fontsize.pdf b/macros/latex/contrib/fontsize/fontsize.pdf Binary files differnew file mode 100644 index 0000000000..ed08b0c5c6 --- /dev/null +++ b/macros/latex/contrib/fontsize/fontsize.pdf diff --git a/macros/latex/contrib/ntgclass/catalog.txt b/macros/latex/contrib/ntgclass/CATALOG index abe4c3330c..cc1c4b2d2c 100644 --- a/macros/latex/contrib/ntgclass/catalog.txt +++ b/macros/latex/contrib/ntgclass/CATALOG @@ -1,7 +1,7 @@ Name: ntgclass -Problems-To: JLBraams@cistron.nl +Problems-To: texniek@braams.texniek.nl Author: J.L. Braams and V. Eijkhout -Version: 2.2-patch level 3 +Version: 2.2-patch level 4 Description: @@ -19,7 +19,7 @@ Keywords: latex, document classes See-Also: Address: -J.L. Braams -Kooienswater 62 -2715 AJ Zoetermeer +TeXniek +Kersengaarde 33 +2723 BP Zoetermeer The Netherlands diff --git a/macros/latex/contrib/ntgclass/ChangeLog b/macros/latex/contrib/ntgclass/ChangeLog new file mode 100644 index 0000000000..95fd2dfec4 --- /dev/null +++ b/macros/latex/contrib/ntgclass/ChangeLog @@ -0,0 +1,348 @@ +2020-02-22 Johannes Braams <texniek at braams.xs4all.nl> + + * ntgclass.dtx: The mechanism to work around the hyperref code + being injected int the tabel of contents lines needed to be + changed. There's a fourth token to jump over and the use of + \MakeUppercase instead of \uppercase in the toc-lines for parts + (rapport and boek classes) needed a different approach, made the + hyperref copmmand robust and protected it with \lowercase. + +2020-02-18 Johannes Braams <texniek at braams.xs4all.nl> + + * brief.dtx: Update to change copyright notice and address + information; synchronised with the standard document classes. + + * a4.dtx: Update to change copyright notice and address + information. + +2020-02-18 Johannes Braams <texniek at braams.xs4all.nl> + + * ntgclass.dtx: Update to synchronize with classes.dtx + +2004-08-17 Johannes Braams <texniek at braams.xs4all.nl> + + * ntgclass.dtx: Various changes involving no longer passing + \toc@font and \toc@case settings through the .aux file because + they break when the hyperref package is used. + Fixed a bug in the toc-entry for \part: the spacing was wrong and + the pagenumber was put on a line by itself. + +2004-06-07 Johannes Braams <texniek at braams.xs4all.nl> + + * ntgclass.dtx : updated version to 2.1a as 2.0z should be the + last, but no major changes, added a missing fix related to pr3285 + +2004-02-20 Johannes Braams <texniek at braams.xs4all.nl> + + * ntgclass.dtx: various changes to sychronise with classes.dtx, + mostly fixes for Problem reports in the bugs database + +Tue Sep 9 00:43:15 1997 Johannes Braams (texniek at braams.xs4all.nl) + + * ntgclass.dtx: Repaired a few documentation buglets. + + * brief.dtx : Added a few extra command synonimes, suggested by + Wybo Dekker (wybo at servaly.hobby.nl) + (subsubsection{The address window}): Put the \textbullet in a + group to keep the font change local + (subsubsection{The little rules}): Make the rules slightly thinner + and modify their position a little + (subsubsection{Page breaking control}): Added a \leavevmode in + \@afsluiting to make \afsluiting work as documented. + (subsection{Footnotes}): The footnotemarker should appear + different in the text from in the footnotes themselves, changed + definition of \@makefntext and use default \@makefnmark + +Tue Apr 1 00:15:34 1997 Johannes Braams (texniek at braams.xs4all.nl) + + * ntgclass.dtx (subsection{Footnotes}): Mixed the syntac for \def + and \newcommand (had #1 instead of [1]). + Found by Thorsten Schwander (schwander at ooo.lanl.gov) + +Sun Mar 2 00:17:17 1997 Johannes Braams (texniek at braams.xs4all.nl) + + * ntgclass.dtx (subsection{The title}): Use \textendash instead of + -- in label in footnotes on the titlepage. + (subsubsection{Itemize}): Now also \textasteriskcentered instead + of using math + (subsubsection{Equation and eqnarray}): Added test for chapter 0 + in the definition of \theequation inb rapport and boek classes + (following classes.dtx) + (subsubsection{Figure}): Added test for chapter 0 + (subsubsection{tabel}): Added test for chapter 0 + +Mon Sep 23 23:12:21 1996 Johannes Braams (texniek at braams.xs4all.nl) + + * brief.dtx (subsubsection{Itemize}): Replaced --, $\bullet$ + and $\cdot$ with \text... commands, following a change in the + LaTeX classes. + + * ntgclass.dtx (subsubsection{Itemize}): Replaced --, $\bullet$ + and $\cdot$ with \text... commands, following a change in the + LaTeX classes. + (chapter*{...}): Changed \@xsect and \@ssect to follow a change in + the june 1996 release fo LaTeX which allows commands with an + argument in the last argument of \@sartsection. + +Mon Apr 1 19:26:32 1996 Johannes Braams (texniek at braams.xs4all.nl) + + * ntgclass.dtx : use \renewcommand rather than \newcommand to + define \newblock + (subsection{Font changing}): Removed suerfluous + closing braces + (subsection{Footnotes}): Repaired definition of \@xmakefntext (it + had #1 in a \newcommand + + * brief.dtx (subsubsection{The address window}): Repaired a typo + (\parksip instead of \parskip + +Sun Mar 31 23:25:10 1996 Johannes Braams (texniek at braams.xs4all.nl) + + * ntgclass.dtx : Added \CodelineIndex to the driver in order + to really produce a .idx file for the index. + +Wed Mar 27 22:57:57 1996 Johannes Braams (texniek at braams.xs4all.nl) + + * ntgclass.dst: Update to make use of the new docstrip + possibillity to produce multiple files in one go. + +Wed Nov 29 00:19:36 1995 Johannes Braams (texniek at braams.xs4all.nl) + + * brief.dtx (subsubsection{The reference line}): Also set + \parindent to zero in \@refveld + (subsubsection{The address window}): Set both \parksip and + \parindent to zero inside the \adresveld + +Thu Oct 5 22:29:06 1995 Johannes Braams (texniek at braams.xs4all.nl) + + * ntgclass.dtx (subsection{The title}): Disable some more of the + commands that are only needed for \maketitle; empty internal + storage macros. + (subsection{Open bibliography}): openbib option reimplemented + Brought in sinc again with classes.dtx + +Tue Aug 22 23:57:27 1995 Johannes Braams (texniek at braams.xs4all.nl) + + * ntgclass.dtx : Added missing braces around negative arguments to + \addpenalty; make l@part only do something when \c@tocdepthd>-2. + +Thu Aug 10 01:04:30 1995 Johannes Braams (texniek at braams.xs4all.nl) + + * brief.dtx : Brought up-to-date with LaTeX's letter.dtx in order + to make the classes run with LaTeX <1995/06/01> + + * ntgclass.dtx : Brought up-to-date with LaTeX's classes.dtx in + order to make the classes run with LaTeX <1995/06/01> + +Sun May 7 23:45:33 1995 Johannes Braams (texniek at braams.xs4all.nl) + + * ntgclass.dtx (subsection{Chapters and Sections}): Added \erlax + to the definition of \@svsec as a result of LaTeX pr/1596 + +Fri Jan 6 14:09:51 1995 Johannes Braams (texniek at braams.xs4all.nl) + + * ntgclass.dtx (subsection{Chapters and Sections}): Changed + {\baselineskip\@plus... to + {1\baselineskip\@plus... in the defintion of \subsection and + \subsubsection in artikel2. + Found by Dick Snippe (D.M.Snippe at el.utwente.nl) + (subsubsection{Building blocks}): Use \protected@edef instead of + the juggling with redefining \protect. + +Sat Dec 31 16:31:12 1994 Johannes Braams (texniek at braams.xs4all.nl) + + * brief.dtx (subsubsection{Page breaking control}): The printing + of the closing text generated an overfull hbox message. Removed + the extra \hbox (width \textwidth) inside the \parbox of width + .5\textwidth. + +Fri Dec 30 14:25:00 1994 Johannes Braams (texniek at braams.xs4all.nl) + + * brief.dtx (subsection{Words}): Repaired a small typo (a bracket + was used instead of a brace) + + * ntgclass.dtx: Repaired a number of typos that prevented + artikel2.cls from functioning properly. + + * brief.dtx (section{Executing Options}): Added a \relax after + \ProcessOptions to prevent the \ifcase to be `eaten' in the search + for a *. + +Fri Dec 23 21:48:47 1994 Johannes Braams (texniek at braams.xs4all.nl) + + * brief.dtx: Use \newcommand* instead of \newcommand in most + places. + (subsection{Customizing the labels}): Redefined \mlabel to use the + new \parbox syntax instead of using the \setbox primitive. + (subsection{Font changing}): Define \cal and \mit using + \DeclareRobustCommand + (subsection{The generic letter commands}): Use + \let\protect\@unexpandable@protect instead of redefining it. + + * ntgclass.dtx: More updates to go with the december 1994 release + of LaTeX. + - Made the oneside option work for the boek class (LaTeX PR + #1195) + (section{Initial Code}): Moved the allocation of + \if@mainmatter to this section in order to let it be known when + the pagestyles are defined. The switch is used there and needs to + be known then; otherwise TeX finds the wrong \fi in an + \if@twoside...\else...\fi construct. + +Tue Dec 20 01:52:12 1994 Johannes Braams (texniek at braams.xs4all.nl) + + * ntgclass.dtx: Updates to go with the december 1994 release of + LaTeX. + - Use \newcommand* cs. + - Set the \@minipage flag in the caption + (subsubsection{Margins}): Moved the rounding of \topmargin into + native mode only (LaTeX PR #93) + (section{Cross Referencing}): Fixed a typo in the documentation of + \@tocrmarg. (LaTeX PR #904) + (subsection{Single or double sided printing}): removed typo (LaTeX + PR #881) + (subsubsection{Chapters}): Made chapter titles more robust against + pagebreaks in the middle of them. Added an extra \nobreak but not + the extra \interlinepenalty\@M lines as that is taken care of by + \head@style (LaTeX PR #1016, #1135) + (subsection{Font changing}): Define \cal and \mit using + \DeclareRobustCommand + (the driver): use \newcommand* for shorthands with argument + (whole file): Use \newcommand* for commands with arguments + +Tue Oct 4 00:12:26 1994 Johannes Braams (texniek at braams.xs4all.nl) + + * brief.dtx (section{The documentation driver file}): Added a + missing comma in the \DoNotIndex list + +Tue Jul 12 22:45:13 1994 Johannes Braams (texniek at braams.xs4all.nl) + + * brief.dtx (subsubsection{Defining the page styles}): Removed the + typo in \@othertheadheight + +Mon Jul 11 23:25:48 1994 Johannes Braams (texniek at braams.xs4all.nl) + + * brief.dtx (subsubsection{Itemize}): \labelitemiii was + mistakenly called \labelitemiiii (LaTeX bug report # 711) + + * ntgclass.dtx (subsection{Paragraphing}): The definition of the + dimension \othermargin was erroneously left out of type2 document + classes. + (subsection{Footnotes}): Moved the `.' that appeared in the + definition of \@xmakefntext to the definition of \@makefntext. + This should prevent it from appearing in a footnote produced by + \thanks. + +Wed Jun 15 22:19:45 1994 Johannes Braams (texniek at braams.xs4all.nl) + + * brief.dtx (section{The documentation driver file}): Reorder the + DoNotIndex list. Removed remnant from letter.dtx, now get the + file info from bief.dtx and also typeset brief.dtx instead of + trying to typeset letter.dtx. + + +Wed Jun 8 13:16:41 1994 Johannes Braams (texniek at braams.xs4all.nl) + + * ntgclass.dtx (section{The documentation driver file}): The + documentation didn't run; had to shuffle some entries in + \DoNotIndex lines. + + * artdoc.tex (subsection{Fonts in sectiekoppen}): Added a missing + brace + + * ntgclass.dtx (subsubsection{Chapters}): Removed yet another + carriage return that caused \if@mainmatter to end up in the + rapport classes. + +Mon Jun 6 00:03:19 1994 Johannes Braams (texniek at braams.xs4all.nl) + + * brief.dtx (subsection{Global Declarations}): Using \newcommand + for internal storage macros causes the test against \@empty to + fail; a nempty long macro is not the same as an empytt macro. This + happened to \fromsig and \@subject. + +Fri Jun 3 14:25:27 1994 Johannes Braams (texniek at braams.xs4all.nl) + + * ntgclass.dtx (subsubsection{Chapters}): Removed a carriage + return behind %<+boek> which caused \f@mainmatter to end up in the + rapport classes. + + * brief.dtx: Finished upgrading for LaTeX2e + + * briefdoc.tex: Updated for latex2e and the use of the babel + package. Contents may not be correct with the new version of the + code. + + * rapdoc.tex: Updated for latex2e and the use of the babel + package. Contents may not be correct with the new version of the + code. + + * artdoc.tex: Updated for latex2e and the use of the babel + package. Contents may not be correct with the new version of the + code. + +Fri Jun 3 00:27:27 1994 Johannes Braams (texniek at braams.xs4all.nl) + + * ntgclass.dtx (section{Identification}): The size files claimed + to have a name that starts with `size'; changed to `ntg'. + + * ntgclass.dst: Added the stripping of brief. + +Thu Jun 2 00:30:21 1994 Johannes Braams (texniek at braams.xs4all.nl) + + * ntgclass.dtx (subsection{The title}): Added check on number of + columns in use locally + (section{Identification}): Fixed bug that prevented LaTeX from + seeing the \ProvideFile command in the driver + +Wed Jun 1 14:15:21 1994 Johannes Braams (texniek at braams.xs4all.nl) + + * ntgclass.dtx: Added \Charactertable + Moved the identification and driver sections to the start of the + file; they no longer print. + Added 'v' to changes entries; wrapped some long lines. + (subsubsection{Captions}): Use \sbox\@tempboxa instead of + \setbox\@tempboxa\hbox to make @makecaption color safe. + (subsection{The title}): The boek classes always havve a + titlepage, forgot to remove the code for the \else part of + \if@titlepage. + (section*{\contentsname): Added a missing backslash + +Mon Apr 18 12:45:43 1994 Johannes Braams (texniek at braams.xs4all.nl) + + * ntgclass.dtx (subsection{Fonts}): The size changing commands are + no longer defined in the kernel. Use \newcommand instead of + \renewcommand. + (subsection{Font changing}): \@renewfontswitch has gone; + \@newfontswitch has become \DeclareOldFontCommand + Synchronized with the changes to classes.dtx + +Sun Mar 20 00:53:17 1994 Johannes Braams (texniek at braams.xs4all.nl) + + * ntgclass.dst: Removed production of the documentation driver. + + * ntgclass.dtx (section{Identification}): Removed the use of + \typeout statements as \Provides... does that now. + (section{The {\sc docstrip} modules}): This section added. + (section{The documentation driver file}): Moved this section to + the front in order not to need a searate driver. + +Sat Mar 19 17:40:24 1994 Johannes Braams (texniek at braams.xs4all.nl) + + * ntgclass.dtx (subsubsection{Captions}): The \CaptionLabelFont + shouldn't influence the font in which the caption text comes out. + PUt a group around the label. + + * ntgclass.dst: Removed \TopLevel, a remnant from classes.dst + + * ntgclass.dtx (subsubsection{Abstract}): Treat the abstract like + a section and use \SectFont for the title. + +Tue Mar 15 11:54:32 1994 Johannes Braams (texniek at braams.xs4all.nl) + + * a4.dtx (subsection{The code}): The name of a package and the + name of the file should be the same. + + (subsection{The code}): Added \ProcessOptions and moved it to the + end of the package. + diff --git a/macros/latex/contrib/ntgclass/manifest.txt b/macros/latex/contrib/ntgclass/MANIFEST index 43d088f2db..2fa452e3e5 100644 --- a/macros/latex/contrib/ntgclass/manifest.txt +++ b/macros/latex/contrib/ntgclass/MANIFEST @@ -10,27 +10,28 @@ % changes.txt -- List of changes in reverse chronological order. % catalog.txt -- A short description for the macro catalog. % -% artdoc.tex -- A description of the artikel classes, in dutch +% artdoc.tex -- A description of the artikel classes, in dutch % artdoc.pdf % briefdoc.tex -- A description of the brief class, in dutch % briefdoc.pdf -% rapdoc.tex -- A description of the rapport classes, in dutch +% rapdoc.tex -- A description of the rapport classes, in dutch % rapdoc.pdf % classdoc.tex -- A description of the document classes, in english % classdoc.pdf % +% % Classes: % -------- % % ntgclass.dtx -- NTG document classes artikel1,2,3/boek,boek3/rapport1,3. % ntgclass.pdf -% brief.dtx -- NTG document class brief +% brief.dtx -- NTG document class brief % brief.pdf % % Classes: % -------- % -% a4.dtx -- The package a4 from NTG/WG13 (Braams, Poppelier) +% a4.dtx -- The package a4 from NTG/WG13 (Braams, Poppelier) % a4.pdf % % Installation script for the various parts: @@ -43,5 +44,7 @@ % Support files: % -------------- % -% brief.tex -- A sample file with three letters +% brief-sample.tex -- A document showing the layout of the NEN-brief +% implemented by brief.dtx +% brief-sample.pdf % diff --git a/macros/latex/contrib/ntgclass/00readme.txt b/macros/latex/contrib/ntgclass/README index be1dcc6ad3..914b47d8f7 100644 --- a/macros/latex/contrib/ntgclass/00readme.txt +++ b/macros/latex/contrib/ntgclass/README @@ -1,30 +1,28 @@ NTG document classes distribution - 20 February 2004 + 22 February 2020 This file contains the distribution guide for the new version of the NTG document classes and the A4 package. The classes are maintained by NTG Working Group 13 -This distribution is described in the files ending with .txt. + * README is this file. - * 00readme.txt is this file. - - * manifest.txt lists all the files in the distribution. + * MANIFEST lists all the files in the distribution. For more information about the document classes see the file ntgclass.tex. These files may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either version 1.3 +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.3 or later is part of all distributions of LaTeX -version 2003/12/01 or later. +and version 1.3c or later is part of all distributions of LaTeX +version 2008 or later. Please do not request updates from us. Distribution is done only through mail servers and TeX organisations. ---- Copyright 1994-2004 NTG. All rights reserved --- +--- Copyright 1994-2020 NTG. All rights reserved --- diff --git a/macros/latex/contrib/ntgclass/a4.dtx b/macros/latex/contrib/ntgclass/a4.dtx index 4b58747e6d..e480bfbde9 100644 --- a/macros/latex/contrib/ntgclass/a4.dtx +++ b/macros/latex/contrib/ntgclass/a4.dtx @@ -1,37 +1,34 @@ -% \iffalse meta-comment +% \iffalse +% +% Copyright (C) 1994 -- 2020 by Nederlandstalige TeX Gebruikersgroep. % -% Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. -% All rights reserved. -% % This file is part of the NTG document classes distribution % ---------------------------------------------------------- -% +% % It may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3 +% 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.3 or later is part of all distributions of LaTeX -% version 2003/12/01 or later. -% +% and version 1.3c or later is part of all distributions of LaTeX +% version 2008 or later. +% % This work has the LPPL maintenance status "maintained". -% +% % The Current Maintainer of this work is Johannes Braams. -% +% % The list of all files belonging to the NTG document classes % distribution is given in the file `manifest.txt. -% +% % The list of derived (unpacked) files belonging to the distribution % and covered by LPPL is defined by the unpacking scripts (with % extension .ins) which are part of the distribution. +% % \fi % \CheckSum{153} % %\iffalse -%% Style option `A4' to be used with LaTeX V2.09 -%% Copyright (C) 1990-2004 Johannes Braams, Nico Poppelier. -%% All rights reserved. -%% +% % We begin by identifying the version of this file on the terminal and % in the transcript file. %<*package> @@ -44,7 +41,7 @@ \ProvidesFile{a4.dtx} %</dtx> %<package>\ProvidesPackage{a4} - [2004/04/15 v1.2g A4 based page layout] + [2020/02/18 v1.2g A4 based page layout] % % Copying of this file is authorized only if either % (1) you make absolutely no changes to your copy, including name, or @@ -55,9 +52,9 @@ % % Error reports for UNCHANGED versions please to: % J.L. Braams -% TeXniek at braams.cistron.nl +% texniek at braams.xs4all.nl % or: N.A.F.M. Poppelier -% N.Poppelier at elsevier.nl +% N.Poppelier@elsevier.nl % % %\fi @@ -78,6 +75,7 @@ % end of file} % \changes{v1.2d}{1995/08/11}{Moved identification part to the top of % the file} +% \changes{v1.2g}{2020/02/18}{Updated address info of authors} % % \title{A style option to adapt the standard \LaTeX\ document % styles to A4 paper\thanks{This file @@ -86,15 +84,13 @@ % % \author{Nico Poppelier\\ % \TeX nique \\ -% Washingtondreef 153\\ -% 3564 KD Utrecht\\ +% Utrecht\\ % \texttt{Poppelier@elsevier.nl}\\ % \and % Johannes Braams\\ % \TeX niek\\ -% Kooienswater 62\\ -% 2715 AJ Zoetermeer\\ -% \texttt{JLBraams@cistron.nl}} +% Zoetermeer\\ +% \texttt{JLBraams@texniek@braams.xs4all.nl}} % % \date{Printed \today} % @@ -599,20 +595,4 @@ % % \Finale % -%% \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 \~} -%% -\endinput +\endinput
\ No newline at end of file diff --git a/macros/latex/contrib/ntgclass/a4.ins b/macros/latex/contrib/ntgclass/a4.ins index e512961050..09300056a7 100644 --- a/macros/latex/contrib/ntgclass/a4.ins +++ b/macros/latex/contrib/ntgclass/a4.ins @@ -1,52 +1,60 @@ -%% +% %% This file will generate fast loadable files and documentation %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1990-1999 Nederlandstalige TeX Gebruikersgroep. -%% -%% This file is part of the NTG document classes distribution -%% ---------------------------------------------------------- -%% +%% Copyright (C) 1993-2020 +%% The Nederlandstalige TeX Gebruikersgroep and any individual +%% authors listed elsewhere in this file. +%% +%% This file is part of the NTG document classes distribution. +%% ----------------------------------------------------------- +%% %% It may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3 +%% 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.3 or later is part of all distributions of LaTeX -%% version 2003/12/01 or later. -%% -%% This work has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Johannes Braams. -%% -%% The list of all files belonging to the NTG document classes -%% distribution is given in the file `manifest.txt. -%% -%% The list of derived (unpacked) files belonging to the distribution -%% and covered by LPPL is defined by the unpacking scripts (with -%% extension .ins) which are part of the distribution. +%% https://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008 or later. +%% +%% This file has the LPPL maintenance status "maintained". +%% +%% As this file contains legal notices, it is NOT PERMITTED to modify +%% this file in any way that the legal information placed into +%% generated files is changed (i.e., the files generated when the +%% original file is executed). This restriction does not apply if +%% (parts of) the content is reused in a different WORK producing its +%% own generated files. +%% +%% The list of all files belonging to the LaTeX base distribution is +%% given in the file `manifest.txt'. See also `legal.txt' for additional +%% information. +%% +%% +%% %% %% --------------- start of docstrip commands ------------------ %% -\input docstrip.tex % ignored in distribution + +\input docstrip.tex % ignored in distribution \preamble This is a generated file. -Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. +Copyright (C) 1990-2020 Nederlandstalige TeX Gebruikersgroep. All rights reserved. This file was generated from file(s) of the NTG document classes distribution. ------------------------------------------------------------------------------ It may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either version 1.3 +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.3 or later is part of all distributions of LaTeX -version 2003/12/01 or later. +and version 1.3c or later is part of all distributions of LaTeX +version 2008 or later. This work has the LPPL maintenance status "maintained". @@ -81,4 +89,4 @@ extension .ins) which are part of the distribution. \Msg{* Happy TeXing} \Msg{***********************************************************} -\endinput +\endbatchfile diff --git a/macros/latex/contrib/ntgclass/a4.pdf b/macros/latex/contrib/ntgclass/a4.pdf Binary files differindex fb63ff89f6..91bdbe4bcc 100644 --- a/macros/latex/contrib/ntgclass/a4.pdf +++ b/macros/latex/contrib/ntgclass/a4.pdf diff --git a/macros/latex/contrib/ntgclass/artdoc.pdf b/macros/latex/contrib/ntgclass/artdoc.pdf Binary files differindex c52fa417ef..8eb6e01ad3 100644 --- a/macros/latex/contrib/ntgclass/artdoc.pdf +++ b/macros/latex/contrib/ntgclass/artdoc.pdf diff --git a/macros/latex/contrib/ntgclass/artdoc.tex b/macros/latex/contrib/ntgclass/artdoc.tex index b581d23529..346688d39c 100644 --- a/macros/latex/contrib/ntgclass/artdoc.tex +++ b/macros/latex/contrib/ntgclass/artdoc.tex @@ -1,33 +1,3 @@ -% \iffalse meta-comment -% -% % \iffalse meta-comment -% % -% % Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. -% % All rights reserved. -% % -% % This file is part of the NTG document classes distribution -% % ---------------------------------------------------------- -% % -% % It may be distributed and/or modified under the -% % conditions of the LaTeX Project Public License, either version 1.3 -% % of this license or (at your option) any later version. -% % The latest version of this license is in -% % http://www.latex-project.org/lppl.txt -% % and version 1.3 or later is part of all distributions of LaTeX -% % version 2003/12/01 or later. -% % -% % This work has the LPPL maintenance status "maintained". -% % -% % The Current Maintainer of this work is Johannes Braams. -% % -% % The list of all files belonging to the NTG document classes -% % distribution is given in the file `manifest.txt. -% % -% % The list of derived (unpacked) files belonging to the distribution -% % and covered by LPPL is defined by the unpacking scripts (with -% % extension .ins) which are part of the distribution. -% % \fi -% \fi \documentclass[a4paper]{artikel1} %ja,ja, onze eigen documentstijl! \usepackage[dutch]{babel} diff --git a/macros/latex/contrib/ntgclass/brief-sample.pdf b/macros/latex/contrib/ntgclass/brief-sample.pdf Binary files differnew file mode 100644 index 0000000000..480f0947b8 --- /dev/null +++ b/macros/latex/contrib/ntgclass/brief-sample.pdf diff --git a/macros/latex/contrib/ntgclass/brief.tex b/macros/latex/contrib/ntgclass/brief-sample.tex index e05f3445a0..aa871b7311 100644 --- a/macros/latex/contrib/ntgclass/brief.tex +++ b/macros/latex/contrib/ntgclass/brief-sample.tex @@ -1,33 +1,3 @@ -% \iffalse meta-comment -% -% % \iffalse meta-comment -% % -% % Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. -% % All rights reserved. -% % -% % This file is part of the NTG document classes distribution -% % ---------------------------------------------------------- -% % -% % It may be distributed and/or modified under the -% % conditions of the LaTeX Project Public License, either version 1.3 -% % of this license or (at your option) any later version. -% % The latest version of this license is in -% % http://www.latex-project.org/lppl.txt -% % and version 1.3 or later is part of all distributions of LaTeX -% % version 2003/12/01 or later. -% % -% % This work has the LPPL maintenance status "maintained". -% % -% % The Current Maintainer of this work is Johannes Braams. -% % -% % The list of all files belonging to the NTG document classes -% % distribution is given in the file `manifest.txt. -% % -% % The list of derived (unpacked) files belonging to the distribution -% % and covered by LPPL is defined by the unpacking scripts (with -% % extension .ins) which are part of the distribution. -% % \fi -% \fi \documentclass{brief} %% er is een optie 'adresrechts' %\maaketiketten %% werkt nog niet naar behoren diff --git a/macros/latex/contrib/ntgclass/brief.dtx b/macros/latex/contrib/ntgclass/brief.dtx index 96a1525bf0..fcc32e4e84 100644 --- a/macros/latex/contrib/ntgclass/brief.dtx +++ b/macros/latex/contrib/ntgclass/brief.dtx @@ -1,69 +1,44 @@ -% \iffalse meta-comment -% -% % \iffalse meta-comment -% % -% % Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. -% % All rights reserved. -% % -% % This file is part of the NTG document classes distribution -% % ---------------------------------------------------------- -% % -% % It may be distributed and/or modified under the -% % conditions of the LaTeX Project Public License, either version 1.3 -% % of this license or (at your option) any later version. -% % The latest version of this license is in -% % http://www.latex-project.org/lppl.txt -% % and version 1.3 or later is part of all distributions of LaTeX -% % version 2003/12/01 or later. -% % -% % This work has the LPPL maintenance status "maintained". -% % -% % The Current Maintainer of this work is Johannes Braams. -% % -% % The list of all files belonging to the NTG document classes -% % distribution is given in the file `manifest.txt. -% % -% % The list of derived (unpacked) files belonging to the distribution -% % and covered by LPPL is defined by the unpacking scripts (with -% % extension .ins) which are part of the distribution. -% % \fi -% \fi -% \CheckSum{2200} -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} +% \iffalse +% +% Copyright (C) 1994 -- 2020 by Nederlandstalige TeX Gebruikersgroep. +% Based on letter.dtx version 1.3a +% +% Copyright (C) 1994 LaTeX3 project, Frank Mittelbach +% and Rainer Sch\"opf, all rights reserved. +% +% This file is part of the NTG document classes distribution +% ---------------------------------------------------------- +% +% It 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 2008 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work is Johannes Braams. % +% The list of all files belonging to the NTG document classes +% distribution is given in the file `manifest.txt. +% +% The list of derived (unpacked) files belonging to the distribution +% and covered by LPPL is defined by the unpacking scripts (with +% extension .ins) which are part of the distribution. +% +% \fi +% \CheckSum{2213} % \iffalse -%% Copyright (C) 1994 -- 1999 by Victor Eijkhout \and Johannes Braams -%% Based on letter.dtx version 1.2i -%% Copyright (C) 1994 LaTeX3 project, Frank Mittelbach -%% and Rainer Sch\"opf, all rights reserved. -%% -%% This program can be redistributed and/or modified under the terms -%% of the LaTeX Project Public License Distributed from CTAN -%% archives in directory macros/latex/base/lppl.txt; either -%% version 1 of the License, or any later version. -%% -% \section{Identification} % +% \section{Identification} % % This document class can only be used with \LaTeXe, so we make % sure that an appropriate message is displayed when another \TeX{} % format is used. % \begin{macrocode} -%<+brief>\NeedsTeXFormat{LaTeX2e}[1995/06/01] +%<+brief>\NeedsTeXFormat{LaTeX2e}[1995/12/01] % \end{macrocode} % % Announce the Class name and its version. @@ -72,7 +47,7 @@ %<*driver> \ProvidesFile{brief.drv} %</driver> - [1999/03/03 v2.0r + [2020/02/18 v2.0s %<+brief> NTG LaTeX document class] % \end{macrocode} % @@ -124,6 +99,13 @@ \DoNotIndex{\trivlist,\typeout,\tw@} \DoNotIndex{\vskip,\vspace,\year,\z@} % \end{macrocode} +% We do want an index, using linenumbers. +% \changes{v2.0s}{2020/02/18}{Added \cs{CodelineIndex} to make sure a +% \texttt{.idx} file is produced} +% \begin{macrocode} +\EnableCrossrefs +\CodelineIndex +% \end{macrocode} % Produce a listing of the changes. % \begin{macrocode} \RecordChanges @@ -142,12 +124,12 @@ % \end{macrocode} % Some commonly used abbreviations % \begin{macrocode} -\newcommand*{\Lopt}[1]{\textsf{#1}} -\newcommand*{\Lenv}[1]{\textsf{#1}} -\newcommand*{\file}[1]{\texttt{#1}} -\newcommand*{\cls}[1]{\texttt{#1}} -\newcommand*{\Lcount}[1]{\textsl{\small#1}} -\newcommand*{\pstyle}[1]{\textsl{#1}} +\newcommand*\Lopt[1]{\textsf{#1}} +\newcommand*\Lenv[1]{\textsf{#1}} +\newcommand*\file[1]{\texttt{#1}} +\newcommand*\cls[1]{\texttt{#1}} +\newcommand*\Lcount[1]{\textsl{\small#1}} +\newcommand*\pstyle[1]{\textsl{#1}} % \end{macrocode} % We also want the full details. % \changes{v2.0c}{1994/06/15}{Removed another remnant of @@ -156,6 +138,7 @@ \begin{document} \DocInput{brief.dtx} \PrintIndex +\PrintChanges \end{document} %</driver> % \end{macrocode} @@ -166,6 +149,8 @@ % \changes{v2.0l}{1995/08/10}{Use \cs{hb@xt@} instead of \cs{hbox} % \texttt{to}} % \changes{v2.0q}{1997/09/09}{Added a few more synonimes for commands} +% \changes{v2.0s}{2020/02/18}{Synchronised with the standard document +% classes} % % % \author{Victor Eijkhout \and Johannes Braams} @@ -468,29 +453,41 @@ % \begin{macrocode} \normalsize % \end{macrocode} +% We use |\MakeRobust| instead of |\DeclareRobustCommand| above to +% avoid a log entry for the redefinition. +% But if we are running in a rollback situation +% (prior to 2015) we don't touch it. +% \changes{v2.0s}{2020/02/18}{Roll back handling (gh/201)} +% \begin{macrocode} +\ifx\MakeRobust\@undefined \else + \MakeRobust\normalsize +\fi +% \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\small} % % This is similar to |\normalsize|. +% \changes{v2.0s}{2020/02/18}{Use \cs{DeclareRobustCommand} instead of +% \cs{newcommand*}} % \begin{macrocode} \ifcase\@ptsize - \newcommand*\small{% + \DeclareRobustCommand\small{% \@setfontsize\small\@ixpt{11}% \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ \abovedisplayshortskip \z@ \@plus2\p@ \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ \belowdisplayskip \abovedisplayskip} \or - \newcommand*\small{% + \DeclareRobustCommand\small{% \@setfontsize\small\@xpt\@xiipt \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ \abovedisplayshortskip \z@ \@plus3\p@ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ \belowdisplayskip \abovedisplayskip} \or - \newcommand*\small{% + \DeclareRobustCommand\small{% \@setfontsize\small\@xipt{13.6}% \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@ \abovedisplayshortskip \z@ \@plus3\p@ @@ -505,21 +502,21 @@ % This is similar to |\normalsize|. % \begin{macrocode} \ifcase\@ptsize - \newcommand*\footnotesize{% + \DeclareRobustCommand\footnotesize{% \@setfontsize\footnotesize\@viiipt{9.5}% \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@ \abovedisplayshortskip \z@ \@plus\p@ \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@ \belowdisplayskip \abovedisplayskip} \or - \newcommand*\footnotesize{% + \DeclareRobustCommand\footnotesize{% \@setfontsize\footnotesize\@ixpt{11}% \abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@ \abovedisplayshortskip \z@ \@plus\p@ \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ \belowdisplayskip \abovedisplayskip} \or - \newcommand*\footnotesize{% + \DeclareRobustCommand\footnotesize{% \@setfontsize\footnotesize\@xpt\@xiipt \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ \abovedisplayshortskip \z@ \@plus3\p@ @@ -541,28 +538,28 @@ % lists alone. % \begin{macrocode} \ifcase\@ptsize - \newcommand*\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt} - \newcommand*\tiny{\@setfontsize\tiny\@vpt\@vipt} - \newcommand*\large{\@setfontsize\large\@xiipt{14}} - \newcommand*\Large{\@setfontsize\Large\@xivpt{18}} - \newcommand*\LARGE{\@setfontsize\LARGE\@xviipt{22}} - \newcommand*\huge{\@setfontsize\huge\@xxpt{25}} - \newcommand*\Huge{\@setfontsize\Huge\@xxvpt{30}} + \DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt} + \DeclareRobustCommand\tiny{\@setfontsize\tiny\@vpt\@vipt} + \DeclareRobustCommand\large{\@setfontsize\large\@xiipt{14}} + \DeclareRobustCommand\Large{\@setfontsize\Large\@xivpt{18}} + \DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xviipt{22}} + \DeclareRobustCommand\huge{\@setfontsize\huge\@xxpt{25}} + \DeclareRobustCommand\Huge{\@setfontsize\Huge\@xxvpt{30}} \or - \newcommand*\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} - \newcommand*\tiny{\@setfontsize\tiny\@vipt\@viipt} - \newcommand*\large{\@setfontsize\large\@xiipt{14}} - \newcommand*\Large{\@setfontsize\Large\@xivpt{18}} - \newcommand*\LARGE{\@setfontsize\LARGE\@xviipt{22}} - \newcommand*\huge{\@setfontsize\huge\@xxpt{25}} - \newcommand*\Huge{\@setfontsize\Huge\@xxvpt{30}} + \DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} + \DeclareRobustCommand\tiny{\@setfontsize\tiny\@vipt\@viipt} + \DeclareRobustCommand\large{\@setfontsize\large\@xiipt{14}} + \DeclareRobustCommand\Large{\@setfontsize\Large\@xivpt{18}} + \DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xviipt{22}} + \DeclareRobustCommand\huge{\@setfontsize\huge\@xxpt{25}} + \DeclareRobustCommand\Huge{\@setfontsize\Huge\@xxvpt{30}} \or - \newcommand*\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} - \newcommand*\tiny{\@setfontsize\tiny\@vipt\@viipt} - \newcommand*\large{\@setfontsize\large\@xivpt{18}} - \newcommand*\Large{\@setfontsize\Large\@xviipt{22}} - \newcommand*\LARGE{\@setfontsize\LARGE\@xxpt{25}} - \newcommand*\huge{\@setfontsize\huge\@xxvpt{30}} + \DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} + \DeclareRobustCommand\tiny{\@setfontsize\tiny\@vipt\@viipt} + \DeclareRobustCommand\large{\@setfontsize\large\@xivpt{18}} + \DeclareRobustCommand\Large{\@setfontsize\Large\@xviipt{22}} + \DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xxpt{25}} + \DeclareRobustCommand\huge{\@setfontsize\huge\@xxvpt{30}} \let\Huge=\huge \fi % \end{macrocode} @@ -1073,7 +1070,7 @@ % \begin{macro}{\name} % \begin{macro}{\fromname} % \begin{macrocode} -\def\name#1{\def\fromname{#1}} +\newcommand*\name[1]{\def\fromname{#1}} \def\fromname{} % \end{macrocode} % \end{macro} @@ -1103,7 +1100,7 @@ % \begin{macro}{\location} % \begin{macro}{\fromlocation} % \begin{macrocode} -\newcommand*{\location}[1]{\def\fromlocation{#1}} +\newcommand*\location[1]{\def\fromlocation{#1}} \def\fromlocation{} % \end{macrocode} % \end{macro} @@ -1111,7 +1108,7 @@ % \begin{macro}{\telephone} % \begin{macro}{\telephonenum} % \begin{macrocode} -\newcommand*{\telephone}[1]{\def\telephonenum{#1}} +\newcommand*\telephone[1]{\def\telephonenum{#1}} \def\telephonenum{} % \end{macrocode} % \end{macro} @@ -1120,7 +1117,7 @@ % \begin{macro}{\makelabels} % The |\makelabels| declaration causes mailing labels to be made. % \begin{macrocode} -\newcommand*{\makelabels}{% +\newcommand*\makelabels{% % \end{macrocode} % At the beginning of the document, we need to activate the % |\@mlabel| and |\@startlabels| commands, as well as write @@ -1278,7 +1275,7 @@ % \begin{macro}{\adresveld} % This command formats the address window. % \begin{macrocode} -\newcommand*{\adresveld}{% +\newcommand*\adresveld{% \hbox{}\kern-\topskip \kern\@vensterskip \begingroup @@ -1612,20 +1609,28 @@ % % \begin{macro}{\stopbreaks} % \begin{macrocode} -\def\stopbreaks{\interlinepenalty \@M +\newcommand*\stopbreaks{\interlinepenalty \@M \def\par{\@@par\nobreak}\let\\=\@nobreakcr \let\vspace\@nobreakvspace} % \end{macrocode} % \end{macro} % -% \begin{macro}{\nobreakvspace} -% \begin{macro}{\nobreakvspacex} -% \begin{macro}{\nobreakcr} +% \begin{macro}{\@nobreakvspace} +% \changes{v2.0s}{2020/02/18}{Made robust (\LaTeX{} pr/2049)} +% \begin{macro}{\@nobreakvspacex} +% \begin{macro}{\@nobreakcr} +% \begin{macrocode} +\DeclareRobustCommand\@nobreakvspace + {\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}} +% \end{macrocode} +% % \begin{macrocode} -\def\@nobreakvspace{\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}} - -\def\@nobreakvspacex#1{\ifvmode\nobreak\vskip #1\relax\else - \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi} +\def\@nobreakvspacex#1{% + \ifvmode + \nobreak\vskip #1\relax + \else + \@bsphack\vadjust{\nobreak\vskip #1}\@esphack + \fi} % \end{macrocode} % % \changes{v2.0p}{1997/03/02}{Added setting of \cs{reserved@e} and @@ -1812,11 +1817,11 @@ % \changes{v2.0l}{1995/08/10}{replace \cs{reset@font} with % \cs{normalfont}; remove \cs{rm}} % \begin{macrocode} -\newcommand*{\bijlage}[1]{% +\newcommand*\bijlage[1]{% \par\noindent \parbox[t]{\textwidth}{\@hangfrom{\normalfont\bijlagetekst\ }% \ignorespaces #1\strut}\par} -\newcommand*{\bijlagen}[1]{% +\newcommand*\bijlagen[1]{% \par\noindent \parbox[t]{\textwidth}{\@hangfrom{\normalfont\bijlagentekst\ }% \ignorespaces #1\strut}\par} @@ -1830,7 +1835,7 @@ % The only thing |\ps| needs to do is call |\startbreaks|, % which allows page breaking again. % \begin{macrocode} -\def\ps{\par\startbreaks} +\newcommand*\ps{\par\startbreaks} % \end{macrocode} % \end{macro} % @@ -1855,7 +1860,7 @@ % |\protect\standardreturnaddress|. % \end{itemize} % \begin{macrocode} -\def\stopletter{} +\newcommand*\stopletter{} % \end{macrocode} % \end{macro} % @@ -1877,7 +1882,7 @@ % % \begin{macro}{\returnaddress} % \begin{macrocode} -\def\returnaddress{} +\newcommand*\returnaddress{} % \end{macrocode} % \end{macro} % @@ -1894,7 +1899,7 @@ % labels. % \changes{v2.0l}{1995/08/10}{changed value of \cs{columnsep} by 1pt} % \begin{macrocode} -\newcommand*{\startlabels}{\labelcount\z@ +\newcommand*\startlabels{\labelcount\z@ \pagestyle{empty}% \let\@texttop\relax \topmargin -50\p@ @@ -1916,7 +1921,7 @@ \lineskip \z@ \boxmaxdepth \z@ \parindent \z@ - \twocolumn\relax} + \twocolumn\relax} % \end{macrocode} % \end{macro} % @@ -1943,7 +1948,7 @@ % \changes{v2.0l}{1995/08/10}{changed width of the labels slightly to % prevent \LaTeX\ stuffing two on each line} % \begin{macrocode} -\newcommand*{\mlabel}[2]{% +\newcommand*\mlabel[2]{% \parbox[b][2in][c]{262\p@}{\strut\ignorespaces #2}% } % \end{macrocode} @@ -2136,10 +2141,10 @@ % (\file{ltlists.dtx}), but their representation is changed here. % % \begin{macrocode} -\renewcommand*{\theenumi}{\@arabic\c@enumi} -\renewcommand*{\theenumii}{\@alph\c@enumii} -\renewcommand*{\theenumiii}{\@roman\c@enumiii} -\renewcommand*{\theenumiv}{\@Alph\c@enumiv} +\renewcommand*\theenumi {\@arabic\c@enumi} +\renewcommand*\theenumii {\@alph\c@enumii} +\renewcommand*\theenumiii{\@roman\c@enumiii} +\renewcommand*\theenumiv {\@Alph\c@enumiv} % \end{macrocode} % \end{macro} % \end{macro} @@ -2153,10 +2158,10 @@ % The label for each item is generated by the commands % |\labelenumi| ... |\labelenumiv|. % \begin{macrocode} -\newcommand*{\labelenumi}{\theenumi.} -\newcommand*{\labelenumii}{(\theenumii)} -\newcommand*{\labelenumiii}{\theenumiii.} -\newcommand*{\labelenumiv}{\theenumiv.} +\newcommand*\labelenumi {\theenumi.} +\newcommand*\labelenumii {(\theenumii)} +\newcommand*\labelenumiii{\theenumiii.} +\newcommand*\labelenumiv {\theenumiv.} % \end{macrocode} % \end{macro} % \end{macro} @@ -2170,9 +2175,9 @@ % |\ref| command when referencing an item of the Nth level of an % enumerated list. % \begin{macrocode} -\renewcommand*{\p@enumii}{\theenumi} -\renewcommand*{\p@enumiii}{\theenumi(\theenumii)} -\renewcommand*{\p@enumiv}{\p@enumiii\theenumiii} +\renewcommand*\p@enumii {\theenumi} +\renewcommand*\p@enumiii{\theenumi(\theenumii)} +\renewcommand*\p@enumiv {\p@enumiii\theenumiii} % \end{macrocode} % \end{macro} % \end{macro} @@ -2197,11 +2202,29 @@ % dot.} % \changes{v2.0p}{1997/03/02}{Now also \cs{textasteriskcentered}} % \begin{macrocode} -\newcommand*{\labelitemi}{\textbullet} -\newcommand*{\labelitemii}{\normalfont\bfseries \textendash} -\newcommand*{\labelitemiii}{\textasteriskcentered} -\newcommand*{\labelitemiv}{\textperiodcentered} +\newcommand*\labelitemi {\labelitemfont \textbullet} +\newcommand*\labelitemii {\labelitemfont \bfseries \textendash} +\newcommand*\labelitemiii{\labelitemfont \textasteriskcentered} +\newcommand*\labelitemiv {\labelitemfont \textperiodcentered} % \end{macrocode} +% +% \begin{macro}{\labelitemfont} +% The default definition for \cs{labelitemfont} is to reset the +% font to \cs{normalfont} so that always the same symbol is +% produced regardless of surrounding conditions. +% +% \changes{v2.0s}{2020/02/18}{Normalize label fonts} +% A possible alternative would be +%\begin{verbatim} +%\renewcommand\labelitemfont{% +% \fontseries\seriesdefault +% \fontshape\shapedefault\selectfont} +%\end{verbatim} +% which resets series and shape doesn't touch the family. +% \begin{macrocode} +\newcommand\labelitemfont{\normalfont} +% \end{macrocode} +% \end{macro} % \end{macro} % \end{macro} % \end{macro} @@ -2376,7 +2399,7 @@ % \begin{macro}{\theequation} % The equation counter will be typeset using arabic numbers. % \begin{macrocode} -\renewcommand*{\theequation}{\@arabic\c@equation} +\renewcommand*\theequation{\@arabic\c@equation} % \end{macrocode} % \end{macro} % @@ -2475,7 +2498,7 @@ % a little negative vertical skip, then we put the rule and make % sure we end up at the same point where we begun this operation. % \begin{macrocode} -\renewcommand*{\footnoterule}{% +\renewcommand*\footnoterule{% \kern-\p@ \hrule \@width .4\columnwidth \kern .6\p@} @@ -2552,7 +2575,7 @@ % \begin{macro}{\dutchbrief} % This stores dutch strings. % \begin{macrocode} -\newcommand*{\dutchbrief}{% +\newcommand*\dutchbrief{% \def\uwbrieftekst{Uw brief van} \def\uwkenmerktekst{Uw kenmerk} \def\onskenmerktekst{Ons kenmerk} @@ -2575,7 +2598,7 @@ % This stores English strings. % \changes{v2.0i}{1994/12/30}{Repaired typo} % \begin{macrocode} -\newcommand*{\englishbrief}{% +\newcommand*\englishbrief{% \def\uwbrieftekst{Your letter of} \def\uwkenmerktekst{Your reference} \def\onskenmerktekst{Our reference} @@ -2604,7 +2627,7 @@ % \begin{macro}{\americanbrief} % This stores American english strings % \begin{macrocode} -\newcommand*{\americanbrief}{% +\newcommand*\americanbrief{% \def\uwbrieftekst{Your letter of} \def\uwkenmerktekst{Your reference} \def\onskenmerktekst{Our reference} @@ -2626,7 +2649,7 @@ % \begin{macro}{\germanbrief} % This stores the German versions of the strings. % \begin{macrocode} -\newcommand*{\germanbrief}{% +\newcommand*\germanbrief{% \def\uwbrieftekst{Ihr Brief vom} \def\uwkenmerktekst{Ihr Zeichen} \def\onskenmerktekst{Unser Zeichen} @@ -2648,7 +2671,7 @@ % \begin{macro}{\frenchbrief} % And finally to store the french strings % \begin{macrocode} -\newcommand*{\frenchbrief}{% +\newcommand*\frenchbrief{% \def\uwbrieftekst{Votre lettre du} \def\uwkenmerktekst{Vos r\'ef\'erences:} \def\onskenmerktekst{Nos r\'ef\'erences:} diff --git a/macros/latex/contrib/ntgclass/brief.pdf b/macros/latex/contrib/ntgclass/brief.pdf Binary files differindex 2237d5783a..80590ff0f9 100644 --- a/macros/latex/contrib/ntgclass/brief.pdf +++ b/macros/latex/contrib/ntgclass/brief.pdf diff --git a/macros/latex/contrib/ntgclass/briefdoc.pdf b/macros/latex/contrib/ntgclass/briefdoc.pdf Binary files differindex 558ce17b42..3cf449999d 100644 --- a/macros/latex/contrib/ntgclass/briefdoc.pdf +++ b/macros/latex/contrib/ntgclass/briefdoc.pdf diff --git a/macros/latex/contrib/ntgclass/briefdoc.tex b/macros/latex/contrib/ntgclass/briefdoc.tex index bf1c38be08..79a69113e9 100644 --- a/macros/latex/contrib/ntgclass/briefdoc.tex +++ b/macros/latex/contrib/ntgclass/briefdoc.tex @@ -1,33 +1,3 @@ -% \iffalse meta-comment -% -% % \iffalse meta-comment -% % -% % Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. -% % All rights reserved. -% % -% % This file is part of the NTG document classes distribution -% % ---------------------------------------------------------- -% % -% % It may be distributed and/or modified under the -% % conditions of the LaTeX Project Public License, either version 1.3 -% % of this license or (at your option) any later version. -% % The latest version of this license is in -% % http://www.latex-project.org/lppl.txt -% % and version 1.3 or later is part of all distributions of LaTeX -% % version 2003/12/01 or later. -% % -% % This work has the LPPL maintenance status "maintained". -% % -% % The Current Maintainer of this work is Johannes Braams. -% % -% % The list of all files belonging to the NTG document classes -% % distribution is given in the file `manifest.txt. -% % -% % The list of derived (unpacked) files belonging to the distribution -% % and covered by LPPL is defined by the unpacking scripts (with -% % extension .ins) which are part of the distribution. -% % \fi -% \fi \documentclass[a4paper,10pt]{artikel1} \usepackage[dutch]{babel} diff --git a/macros/latex/contrib/ntgclass/changes.txt b/macros/latex/contrib/ntgclass/changes.txt deleted file mode 100644 index afedf7a879..0000000000 --- a/macros/latex/contrib/ntgclass/changes.txt +++ /dev/null @@ -1,5 +0,0 @@ - -This file lists changes to the NTG files in reverse chronological order. -======================================================================== - - diff --git a/macros/latex/contrib/ntgclass/classdoc.pdf b/macros/latex/contrib/ntgclass/classdoc.pdf Binary files differindex 8e16c04cc5..d799c88e66 100644 --- a/macros/latex/contrib/ntgclass/classdoc.pdf +++ b/macros/latex/contrib/ntgclass/classdoc.pdf diff --git a/macros/latex/contrib/ntgclass/classdoc.tex b/macros/latex/contrib/ntgclass/classdoc.tex index 94e0cb8665..887d8f6a4d 100644 --- a/macros/latex/contrib/ntgclass/classdoc.tex +++ b/macros/latex/contrib/ntgclass/classdoc.tex @@ -1,33 +1,3 @@ -% \iffalse meta-comment -% -% % \iffalse meta-comment -% % -% % Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. -% % All rights reserved. -% % -% % This file is part of the NTG document classes distribution -% % ---------------------------------------------------------- -% % -% % It may be distributed and/or modified under the -% % conditions of the LaTeX Project Public License, either version 1.3 -% % of this license or (at your option) any later version. -% % The latest version of this license is in -% % http://www.latex-project.org/lppl.txt -% % and version 1.3 or later is part of all distributions of LaTeX -% % version 2003/12/01 or later. -% % -% % This work has the LPPL maintenance status "maintained". -% % -% % The Current Maintainer of this work is Johannes Braams. -% % -% % The list of all files belonging to the NTG document classes -% % distribution is given in the file `manifest.txt. -% % -% % The list of derived (unpacked) files belonging to the distribution -% % and covered by LPPL is defined by the unpacking scripts (with -% % extension .ins) which are part of the distribution. -% % \fi -% \fi \documentclass[a4paper,10pt]{artikel1} % or just 'article' \usepackage{shortvrb} \newcommand\Lopt[1]{\textsf{#1}} diff --git a/macros/latex/contrib/ntgclass/ntgclass.dtx b/macros/latex/contrib/ntgclass/ntgclass.dtx index 53b1064b11..b8322eb68f 100644 --- a/macros/latex/contrib/ntgclass/ntgclass.dtx +++ b/macros/latex/contrib/ntgclass/ntgclass.dtx @@ -1,62 +1,41 @@ -% \iffalse meta-comment -% -% % \iffalse meta-comment -% % -% % Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. -% % All rights reserved. -% % -% % This file is part of the NTG document classes distribution -% % ---------------------------------------------------------- -% % -% % It may be distributed and/or modified under the -% % conditions of the LaTeX Project Public License, either version 1.3 -% % of this license or (at your option) any later version. -% % The latest version of this license is in -% % http://www.latex-project.org/lppl.txt -% % and version 1.3 or later is part of all distributions of LaTeX -% % version 2003/12/01 or later. -% % -% % This work has the LPPL maintenance status "maintained". -% % -% % The Current Maintainer of this work is Johannes Braams. -% % -% % The list of all files belonging to the NTG document classes -% % distribution is given in the file `manifest.txt. -% % -% % The list of derived (unpacked) files belonging to the distribution -% % and covered by LPPL is defined by the unpacking scripts (with -% % extension .ins) which are part of the distribution. -% % \fi -% \fi -% \CheckSum{3726} % \iffalse -%% Copyright (C) 1994 -- 2004 by Victor Eijkhout and Johannes Braams -%% Based on classes.dtx -%% Copyright (C) 1999 LaTeX3 project, all rights reserved. -%% -%% \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 \~} % +% Copyright (C) 1994 -- 2020 by Nederlandstalige TeX Gebruikersgroep. +% Based on classes.dtx +% Copyright (C) 1999 LaTeX3 project, all rights reserved. +% +% This file is part of the NTG document classes distribution +% ---------------------------------------------------------- +% +% It 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 2008 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work is Johannes Braams. +% +% The list of all files belonging to the NTG document classes +% distribution is given in the file `manifest.txt. +% +% The list of derived (unpacked) files belonging to the distribution +% and covered by LPPL is defined by the unpacking scripts (with +% extension .ins) which are part of the distribution. +% +% \fi +% \CheckSum{3782} +%\iffalse % \section{Identification} % % These document classes can only be used with \LaTeXe, so we make % sure that an appropriate message is displayed when another \TeX{} % format is used. % \begin{macrocode} -%<artikel|rapport|boek>\NeedsTeXFormat{LaTeX2e}[1995/06/01] +%<artikel|rapport|boek>\NeedsTeXFormat{LaTeX2e}[1995/12/01] % \end{macrocode} % % Announce the Class name and its version: @@ -80,7 +59,7 @@ %<*driver> \ProvidesFile{ntgclass.drv} %</driver> - [2004/06/07 v2.1a + [2020/02/22 v2.1c %<artikel|rapport|boek> NTG LaTeX document class] %<10pt|11pt|12pt> NTG LaTeX file (size option)] % \end{macrocode} @@ -178,8 +157,6 @@ % \end{macrocode} % \fi % -% -% % \changes{v2.0b}{1994/02/02}{Removed typos that were found in % classes.dtx, synced with that file} % \changes{v2.0d}{1994/02/23}{Fixed some errors in the documentation} @@ -196,13 +173,15 @@ % \changes{v2.0p}{1995/08/10}{use \cs{hb@xt@} instead of \cs{hbox} % \texttt{to}} % \changes{v2.0x}{1997/09/08}{Repaired a few documentation bugs} +% \changes{v2.1c}{2020/02/18}{Update to synchronize with classes.dtx} +% \changes{v2.1c}{2020/02/18}{Various commands made robust} % % \title{NTG Document Classes for \LaTeX{} version 2e\thanks{This file % has version number \fileversion, last revised \filedate.}} % % \author{% % Copyright (C) 1992 by Leslie Lamport \and -% Copyright (C) 1994,1999 by Victor Eijkhout \and Johannes Braams +% Copyright (C) 1994-2020 by Victor Eijkhout \and Johannes Braams % } % \date{\filedate} % @@ -659,6 +638,16 @@ % \begin{macrocode} \normalsize % \end{macrocode} +% We use |\MakeRobust| instead of |\DeclareRobustCommand| above to +% avoid a log entry for the redefinition. +% But if we are running in a rollback situation +% (prior to 2015) we don't touch it. +% \changes{v2.1c}{2020/02/18}{Roll back handling (gh/201)} +% \begin{macrocode} +\ifx\MakeRobust\@undefined \else + \MakeRobust\normalsize +\fi +% \end{macrocode} % \end{macro} % \end{macro} % @@ -666,8 +655,10 @@ % \changes{v2.0f}{1994/04/18}{Use \cs{newcommand} instead of % \cs{renewcommand} because of change in the \LaTeX kernel} % This is similar to |\normalsize|. +% \changes{v2.1c}{2020/02/18}{Use \cs{DeclareRobustCommand} instead of +% \cs{newcommand*}} % \begin{macrocode} -\newcommand*\small{% +\DeclareRobustCommand\small{% %<*10pt> \@setfontsize\small\@ixpt{11}% \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ @@ -696,7 +687,7 @@ % \cs{renewcommand} because of change in the \LaTeX kernel} % This is similar to |\normalsize|. % \begin{macrocode} -\newcommand*\footnotesize{% +\DeclareRobustCommand\footnotesize{% %<*10pt> \@setfontsize\footnotesize\@viiipt{9.5}% \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@ @@ -734,30 +725,30 @@ % lists alone. % \begin{macrocode} %<*10pt> -\newcommand*\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt} -\newcommand*\tiny{\@setfontsize\tiny\@vpt\@vipt} -\newcommand*\large{\@setfontsize\large\@xiipt{14}} -\newcommand*\Large{\@setfontsize\Large\@xivpt{18}} -\newcommand*\LARGE{\@setfontsize\LARGE\@xviipt{22}} -\newcommand*\huge{\@setfontsize\huge\@xxpt{25}} -\newcommand*\Huge{\@setfontsize\Huge\@xxvpt{30}} +\DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt} +\DeclareRobustCommand\tiny{\@setfontsize\tiny\@vpt\@vipt} +\DeclareRobustCommand\large{\@setfontsize\large\@xiipt{14}} +\DeclareRobustCommand\Large{\@setfontsize\Large\@xivpt{18}} +\DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xviipt{22}} +\DeclareRobustCommand\huge{\@setfontsize\huge\@xxpt{25}} +\DeclareRobustCommand\Huge{\@setfontsize\Huge\@xxvpt{30}} %</10pt> %<*11pt> -\newcommand*\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} -\newcommand*\tiny{\@setfontsize\tiny\@vipt\@viipt} -\newcommand*\large{\@setfontsize\large\@xiipt{14}} -\newcommand*\Large{\@setfontsize\Large\@xivpt{18}} -\newcommand*\LARGE{\@setfontsize\LARGE\@xviipt{22}} -\newcommand*\huge{\@setfontsize\huge\@xxpt{25}} -\newcommand*\Huge{\@setfontsize\Huge\@xxvpt{30}} +\DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} +\DeclareRobustCommand\tiny{\@setfontsize\tiny\@vipt\@viipt} +\DeclareRobustCommand\large{\@setfontsize\large\@xiipt{14}} +\DeclareRobustCommand\Large{\@setfontsize\Large\@xivpt{18}} +\DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xviipt{22}} +\DeclareRobustCommand\huge{\@setfontsize\huge\@xxpt{25}} +\DeclareRobustCommand\Huge{\@setfontsize\Huge\@xxvpt{30}} %</11pt> %<*12pt> -\newcommand*\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} -\newcommand*\tiny{\@setfontsize\tiny\@vipt\@viipt} -\newcommand*\large{\@setfontsize\large\@xivpt{18}} -\newcommand*\Large{\@setfontsize\Large\@xviipt{22}} -\newcommand*\LARGE{\@setfontsize\LARGE\@xxpt{25}} -\newcommand*\huge{\@setfontsize\huge\@xxvpt{30}} +\DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} +\DeclareRobustCommand\tiny{\@setfontsize\tiny\@vipt\@viipt} +\DeclareRobustCommand\large{\@setfontsize\large\@xivpt{18}} +\DeclareRobustCommand\Large{\@setfontsize\Large\@xviipt{22}} +\DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xxpt{25}} +\DeclareRobustCommand\huge{\@setfontsize\huge\@xxvpt{30}} \let\Huge=\huge %</12pt> %</10pt|11pt|12pt> @@ -1692,7 +1683,7 @@ % \begin{macrocode} \renewcommand*\ps@plain{% % \end{macrocode} -% The running head are empty in this pagestyle, the page number +% The running heads are empty in this pagestyle, the page number % appears in the running foot. % \begin{macrocode} \let\@oddhead\@empty\let\@evenhead\@empty @@ -2361,6 +2352,8 @@ % This |{| used to be after the argument to |\@hangfrom| but was % moved here to allow commands such as |\MakeUppercase| to be used % at the end of |#6|. +% \changes{v2.1b}{2004/08/14}{No longer pass \cs{toc@font} through the +% \texttt{.aux} file as this upsets pdf\LaTeX} % \begin{macrocode} #6{% %<*type1|type3> @@ -2377,7 +2370,7 @@ \else \protect\numberline{\csname the#1\endcsname}% \fi - \toc@font#2 #7}% + #7}% \else \def\@svsechd{#6\hskip #3\relax \@svsec #8\csname #1mark\endcsname{#7}% @@ -2386,7 +2379,7 @@ \else \protect\numberline{\csname the#1\endcsname}% \fi - \toc@font#2 #7}}% + #7}}% \fi \@xsect{#5}} % \end{macrocode} @@ -2675,12 +2668,14 @@ % part, otherwise it is unnumbered. % \changes{v2.0p}{1995/08/10}{replace \cs{reset@font} with % \cs{normalfont}} +% \changes{v2.1b}{2004/08/16}{use \cs{numberline} instead of a fixed +% space of \texttt{1 em}} % \begin{macrocode} %<*artikel> \def\@part[#1]#2{% \ifnum \c@secnumdepth >\m@ne \refstepcounter{part}% - \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \addcontentsline{toc}{part}{\protect\numberline{\thepart}#1}% \else \addcontentsline{toc}{part}{#1}% \fi @@ -2718,12 +2713,14 @@ % When \Lcount{secnumdepth} is larger than $-2$ for the % document class rapport and boek, we have a numbered % part, otherwise it is unnumbered. +% \changes{v2.1b}{2004/08/16}{use \cs{numberline} instead of a fixed +% space of \texttt{1 em}} % \begin{macrocode} %<*rapport|boek> \def\@part[#1]#2{% \ifnum \c@secnumdepth >-2\relax \refstepcounter{part}% - \addcontentsline{toc}{part}{\thepart\hspace{1em}\toc@case{#1}}% + \addcontentsline{toc}{part}{\protect\numberline{\thepart}{#1}}% \else \addcontentsline{toc}{part}{\toc@case{#1}}% \fi @@ -2743,11 +2740,13 @@ % When this is a numbered part we have to print the number. We have % to expand |\partname| before |\uppercase| is called, therefore we % use a temporary control sequence that, when called will execute -% |\uppercase| on the contents of |\partname|. +% |\MakeUppercase| on the contents of |\partname|. +% \changes{v2.1c}{2020/02/22}{Use \cs{MakeUppercase} instead of +% \cs{uppercase}} % \begin{macrocode} \ifnum \c@secnumdepth >-2\relax \Large\PartFont - \edef\@tempa{\noexpand\uppercase{\partname}}\@tempa + \edef\@tempa{\noexpand\MakeUppercase{\partname}}\@tempa \nobreakspace\thepart \par % \end{macrocode} @@ -2756,7 +2755,7 @@ % \begin{macrocode} \vskip 20\p@ \fi - \Large \PartFont \uppercase{#2}\par}% + \Large \PartFont \MakeUppercase{#2}\par}% \@endpart} %</rapport|boek> % \end{macrocode} @@ -2868,6 +2867,8 @@ % inform the user that a new chapter is about to be typeset by % writing a message to the terminal. % \changes{v2.0k}{1994/06/08}{Removed carriage return behind +boek} +% \changes{v2.1b}{2004/08/14}{No longer pass \cs{toc@font} through the +% \texttt{.aux} file as this upsets pdf\LaTeX} % \begin{macrocode} \def\@chapter[#1]#2{% \ifnum \c@secnumdepth >\m@ne @@ -2875,14 +2876,14 @@ \refstepcounter{chapter}% \typeout{\@chapapp\space\thechapter.}% \addcontentsline{toc}{chapter}% - {\protect\numberline{\thechapter}\toc@font0 #1}% + {\protect\numberline{\thechapter}#1}% %<*boek> \else - \addcontentsline{toc}{chapter}{\toc@font0 #1}% + \addcontentsline{toc}{chapter}{#1}% \fi %</boek> \else - \addcontentsline{toc}{chapter}{\toc@font0 #1}% + \addcontentsline{toc}{chapter}{#1}% \fi % \end{macrocode} % After having written an entry to the table of contents we store @@ -3417,15 +3418,20 @@ % We want to have different label positioning on different levels of % list. To acheive this we have to redefine the \Lenv{enumerate} % environment. -% +% \changes{v2.1c}{2020/02/21}{Use \cs{thr@@}} % \begin{macrocode} \renewenvironment{enumerate}{% - \ifnum \@enumdepth >3 + \ifnum \@enumdepth >\thr@@ \@toodeep \else \advance\@enumdepth \@ne \edef\@enumctr{enum\romannumeral\the\@enumdepth}% - \list{\csname label\@enumctr\endcsname} +% \end{macrocode} +% \changes{v2.1c}{2020/02/21}{Use \cs{expandafter}} +% \begin{macrocode} + \expandafter + \list + \csname label\@enumctr\endcsname {\usecounter{\@enumctr}% %<type1> \ifnum \@listdepth=1 %<*type1|type3> @@ -3464,29 +3470,54 @@ % \changes{v2.0u}{1996/09/23}{Did similar for the bullet and centered % dot.} % \changes{v2.0v}{1997/03/02}{Now also \cs{textasteriskcentered}} +% \changes{v2.1c}{2020/02/18}{Use \cs{labelitemfont}} +% \begin{macrocode} +\newcommand\labelitemi {\labelitemfont \textbullet} +\newcommand\labelitemii {\labelitemfont \bfseries \textendash} +\newcommand\labelitemiii{\labelitemfont \textasteriskcentered} +\newcommand\labelitemiv {\labelitemfont \textperiodcentered} +% \end{macrocode} +% +% \begin{macro}{\labelitemfont} +% The default definition for \cs{labelitemfont} is to reset the +% font to \cs{normalfont} so that always the same symbol is +% produced regardless of surrounding conditions. +% +% \changes{v2.1c}{2020/02/18}{Normalize label fonts} +% A possible alternative would be +%\begin{verbatim} +%\renewcommand\labelitemfont{% +% \fontseries\seriesdefault +% \fontshape\shapedefault\selectfont} +%\end{verbatim} +% which resets series and shape doesn't touch the family. % \begin{macrocode} -\newcommand*{\labelitemi}{\textbullet} -\newcommand*{\labelitemii}{\normalfont\bfseries \textendash} -\newcommand*{\labelitemiii}{\textasteriskcentered} -\newcommand*{\labelitemiv}{\textperiodcentered} +\newcommand\labelitemfont{\normalfont} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} +% \end{macro} % % \begin{environment}{itemize} % We want to have differen label positioning on different levels of % list. To acheive this we have to redefine the \Lenv{itemize} % environment. +% \changes{v2.1c}{2020/02/21}{Use \cs{thr@@}} % \begin{macrocode} \renewenvironment{itemize}{% - \ifnum \@itemdepth >3 + \ifnum \@itemdepth >\thr@@ \@toodeep \else \advance\@itemdepth \@ne \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% - \list{\csname\@itemitem\endcsname}% +% \end{macrocode} +% \changes{v2.1c}{2020/02/21}{Use \cs{expandafter}} +% \begin{macrocode} + \expandafter + \list + \csname\@itemitem\endcsname {% %<type1> \ifnum \@listdepth=1\relax %<*type1|type3> @@ -3526,8 +3557,10 @@ % To change the formatting of the label, you must redefine % |\descriptionlabel|. % +% \changes{v2.1c}{2020/02/18}{Inserted \cs{normalfont}} % \begin{macrocode} -\newcommand*\descriptionlabel[1]{\hspace\labelsep \bfseries #1} +\newcommand*\descriptionlabel[1]{\hspace\labelsep + \normalfont\bfseries #1} % \end{macrocode} % \end{macro} % @@ -3607,12 +3640,17 @@ % % Note that this environment is not defined for boeks. % \changes{v2.0e}{1994/03/19}{Use \cs{SectFont} for the abstract title} +% \changes{v2.1c}{2020/02/18}{Added setting of \cs{beginparpenalty} +% to discourage page break before abstract heading and setting of +% \cs{@endparpenalty} to avoid page break after abstract heading.} % \begin{macrocode} %<!boek>\if@titlepage \newenvironment{abstract}{% \titlepage \null\vfil - \hbox{\SectFont \abstractname} + \@beginparpenalty\@lowpenalty + \hbox{\SectFont \abstractname}% + \@endparpenalty\@M \noindent\ignorespaces} {\par\vfil\null\endtitlepage} % \end{macrocode} @@ -4405,10 +4443,22 @@ % information. % \changes{v2.1a}{2004/06/07}{Moved \cs{@mkboth} out of heading arg % (\LaTeX{} pr/3285)} +% \changes{v2.1c}{2020/02/18}{Explain why \cs{@mkboth} is inside the heading +% arg for \cs{tableofcontents} (\LaTeX{} pr/3285 and pr/3984)} % \begin{macrocode} \chapter*{\contentsname}% %</rapport|boek> %<artikel> \section*{\contentsname}% +% \end{macrocode} +% The code for |\@mkboth| is placed inside the heading to avoid any +% influence on vertical spacing after the heading (in some cases). For +% other commands, such as |\listoffigures| below this has been changed from +% the \LaTeX{}2.09 version as it will produce a serious bug if used in +% two-column mode (see, \LaTeX{} pr/3285). However +% |\tableofcontents| is always +% typeset in one-column mode in these classes, therefore the somewhat +% inconsistent setting has been retained for compatibility reasons. +% \begin{macrocode} \@mkboth{\MakeUppercase{\contentsname}}% {\MakeUppercase{\contentsname}}% % \end{macrocode} @@ -4424,7 +4474,7 @@ % % \begin{macro}{\@starttoc} % The internal \LaTeXe macro |\@starttoc| needs to be adapted for -% the \file{artikel3} and \file{rapport3} document classes,in order +% the \file{artikel3} and \file{rapport3} document classes, in order % to deal with a the fact that for these document classes the % |\parskip| is normally non-zero. We don't want that in the table % of contents. @@ -4437,7 +4487,12 @@ \if@filesw \expandafter\newwrite\csname tf@#1\endcsname \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax - \fi \global\@nobreakfalse \endgroup} +% \end{macrocode} +% +% \changes{v2.1c}{2020/02/21}{Remove \cs{global} before +% \cs{@nobreakfalse} as was done in \LaTeX} +% \begin{macrocode} + \fi \@nobreakfalse \endgroup} %</type3> % \end{macrocode} % \end{macro} @@ -4447,6 +4502,10 @@ % contents than the standard classes from which they were % developped. In order to acheive this different format we defined % the macro |\@regtocline|. +% \changes{v2.1b}{2004/08/14}{\cs{toc@font} is no longer passed +% throughthe \texttt{.aux}-file, we set it here directly} +% \changes{v2.1b}{2004/08/16}{\cs{toc@case} is no longer passed +% through the \texttt{.aux} file, set it directly} % \begin{macrocode} \newcommand*\@regtocline[3]{% \ifnum #1>\c@tocdepth @@ -4460,7 +4519,9 @@ %<type2> \advance\@tempdima by \othermargin \parindent\z@ \leavevmode - \hbox{}\hskip -\leftskip\relax#2\nobreak + \hbox{}\hskip -\leftskip\relax + \ifnum#1<0\toc@case{#2}\else + \toc@font#1 #2\fi\nobreak \hskip 1em \nobreak{\slshape #3}\par }% \fi} @@ -4476,14 +4537,32 @@ % \end{macro} % % \begin{macro}{\toc@font} +% \begin{macro}{\toc@fontsel} % The changed definition of |\@sect| that we use, selects a % different font for the table of contents for the various header % levels. It does this using |\toc@font|. +% \changes{v2.1b}{2004/08/16}{We want this font change to only affect +% the section title, \emph{not} the section number, therefor we +% need to push it behind \cs{numberline} and its argument} % \begin{macrocode} \if@oldtoc \newcommand*\toc@font[1]{\relax} \else - \newcommand*\toc@font[1]{% +% \end{macrocode} +% A line of the table of contents contains |\numberline| and the +% section number as its first two elements. We don't want to set +% the section number using |\toc@font|, therefor we give it two +% additional arguments and pass them on first, \emph{before} +% changing the font. Note that we need to re-insert the braces +% around the second argument. +% \changes{v2.1b}{2004/08/16}{Introduce a separarte macro +% \cs{toc@fontsel}} +% \changes{v2.1c}{2020/02/22}{We need to jump another tolken, so we +% need 4 arguments to accomplish that} +% \begin{macrocode} + \newcommand*\toc@font[4]{% + #2{#3}#4\toc@fontsel#1} + \newcommand*\toc@fontsel[1]{% %<*artikel> \ifcase#1\relax %<type2> \Large\bfseries @@ -4498,9 +4577,39 @@ \or\rmfamily %</rapport|boek> \fi} +% \end{macrocode} +% \changes{v2.1b}{2004/08/16}{Take \textsf{hyperref} into account} +% When the user wants to produce a hyper-document using +% \textsf{hyperref} we need to take special precautions to make it +% work for the table of contents. We check for the existence of +% |\hyper@linkstart| to detect this situation at +% |\begin{document}|. +% +% \textsf{Hyperref} injects extra tokens +% (|\hyper@linkstart{link}{Hy@tocdestname}|) +% into the stream in front of thde real contentsline. The command +% |\hyper@linkstart| and its arguments need to be protected from +% expanding too early or being ``upperccased'' themselves. +% +% \begin{macrocode} +\AtBeginDocument{% + \ifx\hyper@linkstart\undefined + \else +% \end{macrocode} +% In the contentslines for chapters, sections etc., the command +% selection of the appropriate font needs to come after the code +% that \textsf{hyperref} injects. we do this with some argument +% shuffling. +% \changes{v2.1c}{2020/02/21}{removed the space between \#1 and \#5} +% \begin{macrocode} + \let\ORG@hyper@linkstart\hyper@linkstart + \protected\def\hyper@linkstart#1#2{% + \lowercase{\ORG@hyper@linkstart{#1}{#2}}} + \fi} \fi % \end{macrocode} % \end{macro} +% \end{macro} % % \begin{macro}{\toc@case} % In the \file{rapport} and \file{boek} document classes, the @@ -4558,7 +4667,13 @@ % set flush right. % \begin{macrocode} {\leavevmode - \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par + \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2% +% \end{macrocode} +% +% \changes{v2.1c}{2020/02/18}{Prevent protrusion +% (\url{https://tex.stackexchange.com/q/172785/10109})} +% \begin{macrocode} + \kern-\p@\kern\p@}}\par % \end{macrocode} % Prevent a pagebreak immediately after this entry, but use % |\everypar| to reset the |\if@nobreak| switch. Finally we close @@ -4574,15 +4689,17 @@ \fi} % \end{macrocode} % Then we can introduce our new definition. +% \changes{v2.1b}{2004/08/16}{Use \cs{l@@part} to prevent the \cs{fi} +% from intervening} % \begin{macrocode} \else \newcommand*\l@part{% - \ifnum \c@tocdepth >-2\relax + \ifnum \c@tocdepth >-2\let\l@@part\relax %<artikel> \addpenalty\@secpenalty %<!artikel> \addpenalty{-\@highpenalty}% \addvspace{2.25em \@plus \p@}% - \@regtocline{0}% - \fi} + \def\l@@part{\@regtocline{-1}}% + \fi\l@@part} \fi % \end{macrocode} % \end{macro} @@ -4626,7 +4743,13 @@ % \begin{macrocode} \advance\leftskip\@tempdima \hskip -\leftskip - #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2% +% \end{macrocode} +% +% \changes{v2.1b}{2020/02/17}{Prevent protrusion +% (\url{https://tex.stackexchange.com/q/172785/10109})} +% \begin{macrocode} + \kern-\p@\kern\p@}\par \penalty\@highpenalty \endgroup} % \end{macrocode} @@ -4677,7 +4800,13 @@ % \begin{macrocode} \advance\leftskip\@tempdima \hskip -\leftskip - #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2% +% \end{macrocode} +% +% \changes{v2.1b}{2020/02/18}{Prevent protrusion +% (\url{https://tex.stackexchange.com/q/172785/10109})} +% \begin{macrocode} + \kern-\p@\kern\p@}}\par \endgroup} % \end{macrocode} % The new definition: @@ -5270,4 +5399,4 @@ % \Finale % \endinput -% +%
\ No newline at end of file diff --git a/macros/latex/contrib/ntgclass/ntgclass.ins b/macros/latex/contrib/ntgclass/ntgclass.ins index c0b15021c9..d14cbbaf64 100644 --- a/macros/latex/contrib/ntgclass/ntgclass.ins +++ b/macros/latex/contrib/ntgclass/ntgclass.ins @@ -1,52 +1,63 @@ -%% +% %% This file will generate fast loadable files and documentation %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1990-1999 Nederlandstalige TeX Gebruikersgroep. -%% -%% This file is part of the NTG document classes distribution -%% ---------------------------------------------------------- -%% +%% Copyright (C) 1993-2020 +%% The Nederlandstalige TeX Gebruikersgroep and any individual +%% authors listed elsewhere in this file. +%% +%% This file is part of the NTG document classes distribution. +%% ----------------------------------------------------------- +%% %% It may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3 +%% 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.3 or later is part of all distributions of LaTeX -%% version 2003/12/01 or later. -%% -%% This work has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Johannes Braams. -%% -%% The list of all files belonging to the NTG document classes -%% distribution is given in the file `manifest.txt. -%% -%% The list of derived (unpacked) files belonging to the distribution -%% and covered by LPPL is defined by the unpacking scripts (with -%% extension .ins) which are part of the distribution. +%% https://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008 or later. +%% +%% This file has the LPPL maintenance status "maintained". +%% +%% As this file contains legal notices, it is NOT PERMITTED to modify +%% this file in any way that the legal information placed into +%% generated files is changed (i.e., the files generated when the +%% original file is executed). This restriction does not apply if +%% (parts of) the content is reused in a different WORK producing its +%% own generated files. +%% +%% The list of all files belonging to the LaTeX base distribution is +%% given in the file `manifest.txt'. See also `legal.txt' for additional +%% information. +%% +%% +%% %% %% --------------- start of docstrip commands ------------------ %% + \input docstrip.tex % ignored in distribution \preamble This is a generated file. -Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. +The source is maintained by Johannes Braams and bug +reports for it can be sent to texniek at braams.xs4all.nl + +Copyright (C) 1990-2020 Nederlandstalige TeX Gebruikersgroep. All rights reserved. This file was generated from file(s) of the NTG document classes distribution. ------------------------------------------------------------------------------ It may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either version 1.3 +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.3 or later is part of all distributions of LaTeX -version 2003/12/01 or later. +and version 1.3c or later is part of all distributions of LaTeX +version 2008 or later. This work has the LPPL maintenance status "maintained". @@ -80,7 +91,8 @@ extension .ins) which are part of the distribution. \file{brief.cls}{\from{brief.dtx}{brief}} \file{ntg10.clo}{\from{ntgclass.dtx}{10pt}} \file{ntg11.clo}{\from{ntgclass.dtx}{11pt}} - \file{ntg12.clo}{\from{ntgclass.dtx}{12pt}}} + \file{ntg12.clo}{\from{ntgclass.dtx}{12pt}} + } \Msg{***********************************************************} \Msg{*} @@ -98,4 +110,4 @@ extension .ins) which are part of the distribution. \Msg{* Happy TeXing} \Msg{***********************************************************} -\endinput +\endbatchfile diff --git a/macros/latex/contrib/ntgclass/ntgclass.pdf b/macros/latex/contrib/ntgclass/ntgclass.pdf Binary files differindex d743d45d68..77fc8016ca 100644 --- a/macros/latex/contrib/ntgclass/ntgclass.pdf +++ b/macros/latex/contrib/ntgclass/ntgclass.pdf diff --git a/macros/latex/contrib/ntgclass/ntgstyle.pdf b/macros/latex/contrib/ntgclass/ntgstyle.pdf Binary files differnew file mode 100644 index 0000000000..9329ad1b60 --- /dev/null +++ b/macros/latex/contrib/ntgclass/ntgstyle.pdf diff --git a/macros/latex/contrib/ntgclass/ntgstyle.tex b/macros/latex/contrib/ntgclass/ntgstyle.tex new file mode 100644 index 0000000000..3dd634ee0e --- /dev/null +++ b/macros/latex/contrib/ntgclass/ntgstyle.tex @@ -0,0 +1,128 @@ +\documentstyle[a4]{artikel1} % or just 'article' +\begin{document} + +\title{An introduction to the Dutch \LaTeX\ styles} +\author{Victor Eijkhout} +\date{3 September 1989} +\maketitle + +\section{Background} + +The Dutch \LaTeX\ styles are an attempt to provide +\LaTeX\ users with facilities of the standard distribution +styles `article' and `report', +but coupled to typography that is geared towards Dutch usage. +In order to ensure interchangeability, the new styles +implemented the commands of the distribution styles. +In principle, then, no manual for these styles would be needed. +There are a few points, however, that can't go without +comment. + +Table 1 lists all files connected with the Dutch styles. +These files can be found on the {\tt tex-nl} fileserver +on the {\tt hearn} node of Bitnet/Earn. +Not all of them are necessary, the ones with extension {\tt .tex} +contain just blah. + +Remark: there exists a Dutch version of `letter', which is so +specifically Dutch that I decided not to include it in this list. + +\begin{table}[bp]\begin{center}\begin{tabular}{|@{\tt\hspace{1em}}r|l|} + \hline + artikel1.sty & article compatible, design 1, straightforward \\ + artikel2.sty & article compatible, design 2, rather different \\ + artikel3.sty & article compatible, design 3, + parskip instead of indent\\ + rapport1.sty & report compatible, design 1 \\ + rapport3.sty & report compatible, design 3 \\ + book.sty & book compatible, design 1, under development\\ + ntg10.sty & 10 point option for all styles \\ + ntg11.sty & 11 point option for all styles \\ + ntg12.sty & 12 point option for all styles \\ + voorwerk.sty & Dutch version of titlepage, needed for `rapport$x$' \\ + a4.sty & page size for European norm A4 paper.\\ + ntgstyle.tex & this story \\ + artdoc.tex & the genesis of the `artikel' styles, in Dutch \\ + rapdoc.tex & the genesis of the `rapport' styles, also in Dutch.\\ + \hline \end{tabular}\end{center} +\caption{List of files} +\end{table} + + +\section{Languages} + +These styles have been developed bearing in mind suggestions +of Hubert Partl for making the language of styles switchable. +Thus, on their own these styles will produce English captions +like `chapter' and `table of contents', but specifying +the options `dutch' or `german', or any language option +that follows the directions of Partl, will switch these +to the language of the option. + + +\section{Design} + +At the moment there are styles compatible with `article' and +with `report'. The Dutch names for these are `artikel' +and `rapport'. In contrast to the standard styles, however, +the user can now choose from different visual designs. +Names of the styles are formed by appending their number +to the name, for instance `rapport3'. +\begin{enumerate} +\item Design one is meant to be a universally acceptable style. +It has been kept as uncontroversial as possible. +Under heavy protests of the implementer (me) the one +point that has turned out to be controversial, the table +of contents, has been made subject to a switch that can +restore the old \LaTeX\ layout. Explanation of this follows. +\item Design two will probably never be heavily used. It is +more something of a heroic attempt to be different. At the +moment only available in `artikel' form. +\item Design three meets the wishes of people who like +a zero \verb.\parindent. and a positive \verb.\parskip.. +As just setting these parameters within for instance `artikel1' +will give some unwanted side effects, I~decided to repair +these in a separate style. +\end{enumerate} +Credits for the visual design go to one real-life designer +and a couple of books by designers I consulted. +The full story can be found elsewhere. + +\subsection{User options} + +As was mentioned above, the new layout of the table +of contents has turned out to be somewhat controversial. +So, in order to ensure wider acceptance of these styles +I~have incorporated a switch that will restore the +old layout. Just specify the {\tt oldtoc} option. +This is available in designs 1 and~3. Number~2 really +insists on being different. + +I~do no page sizing, so kindly use an option like {\tt a4}. +There is a nice one on the server, which is not the one +by John Pavel. + +\subsection{Option files} + +Like in the standard styles there exist option files for +$10/11/12$ point layout. Until now, however, I~have +managed to get away with using the same option files +for both the `artikel' `rapport', and `boek' styles. +The option files then have to have some neutral +names. Which are at the moment {\tt ntg10}, {\tt ntg11}, +and~{\tt ntg12}. `NTG', of course, stands for Nederlandse +\TeX\ Gebruikersgroep, i.e., Dutch \TeX\ Users Group. + +When doing the `rapport' styles, I~needed to modify +the `titlpage' option file. Thus there is a Dutch +version of that, bearing the name of `voorwerk' +(literal translation: `frontwork'). +Probably the majority of Dutch \LaTeX\ users +don't even know that this is the correct term. +You're never too old to learn. + + + + +\end{document} + diff --git a/macros/latex/contrib/ntgclass/rapdoc.pdf b/macros/latex/contrib/ntgclass/rapdoc.pdf Binary files differindex b129c6d24c..cda701838a 100644 --- a/macros/latex/contrib/ntgclass/rapdoc.pdf +++ b/macros/latex/contrib/ntgclass/rapdoc.pdf diff --git a/macros/latex/contrib/ntgclass/rapdoc.tex b/macros/latex/contrib/ntgclass/rapdoc.tex index c241b5f665..7d6308cc5b 100644 --- a/macros/latex/contrib/ntgclass/rapdoc.tex +++ b/macros/latex/contrib/ntgclass/rapdoc.tex @@ -1,33 +1,3 @@ -% \iffalse meta-comment -% -% % \iffalse meta-comment -% % -% % Copyright (C) 1990-2004 Nederlandstalige TeX Gebruikersgroep. -% % All rights reserved. -% % -% % This file is part of the NTG document classes distribution -% % ---------------------------------------------------------- -% % -% % It may be distributed and/or modified under the -% % conditions of the LaTeX Project Public License, either version 1.3 -% % of this license or (at your option) any later version. -% % The latest version of this license is in -% % http://www.latex-project.org/lppl.txt -% % and version 1.3 or later is part of all distributions of LaTeX -% % version 2003/12/01 or later. -% % -% % This work has the LPPL maintenance status "maintained". -% % -% % The Current Maintainer of this work is Johannes Braams. -% % -% % The list of all files belonging to the NTG document classes -% % distribution is given in the file `manifest.txt. -% % -% % The list of derived (unpacked) files belonging to the distribution -% % and covered by LPPL is defined by the unpacking scripts (with -% % extension .ins) which are part of the distribution. -% % \fi -% \fi \documentclass[oldtoc,a4paper,10pt]{rapport3} \usepackage[dutch]{babel} diff --git a/macros/latex/contrib/ntgclass/rapport.dtx b/macros/latex/contrib/ntgclass/rapport.dtx new file mode 100644 index 0000000000..9033f939ac --- /dev/null +++ b/macros/latex/contrib/ntgclass/rapport.dtx @@ -0,0 +1,3560 @@ +% \CheckSum{0} +% +% +% \iffalse +%<*dtx> +\Providesfile{wijzer.dtx} +%</dtx> +%<class>\NeedsTeXFormat{LaTeX2e} +%<class>\ProvidesClass{wijzer} +%<driver>\ProvidesFile{wijzer.drv} +%\Providesfile{wijzer.dtx} + [PTT Research computer handboeken] +% +%<*driver> +\documentclass{ptt-ltxdoc} +\usepackage[dutch]{babel} +\CodelineNumbered +\CodelineIndex +\EnableCrossrefs +\DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} +\DoNotIndex{\@centercr,\@cite} +\DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} +\DoNotIndex{\@input,\@ixpt,\@m} +\DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} +\DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} +\DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} +\DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} +\DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} +\DoNotIndex{\advance,\Alph,\alph} +\DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} +\DoNotIndex{\bullet} +\DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} +\DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} +\DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} +\DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} +\DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} +\DoNotIndex{\fbox} +\DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} +\DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} +\DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} +\DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} +\DoNotIndex{\input} +\DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} +\DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} +\DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} +\DoNotIndex{\NeedsTeXFormat,\newdimen} +\DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} +\DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} +\DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} +\DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} +\DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} +\DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} +\DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} +\DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} +\DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} +\DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} +\DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} +\DoNotIndex{\viipt,\vipt,\vskip,\vspace} +\DoNotIndex{\wd,\xiipt,\year,\z@} +\newcommand{\m}[1]{\mbox{$\langle$\it #1\/$\rangle$}} +\providecommand{\marg}[1]{{\ttfamiliy\char`\{}\m{#1}{\ttfamiliy\char`\}}} +\providecommand{\oarg}[1]{{\ttfamiliy[}\m{#1}{\ttfamiliy]}} +\begin{document} +\DocInput{wijzer.dtx} +\clearpage +\PrintIndex +\end{document} +%</driver> +% \fi +% +% \GetFileInfo{wijzer.dtx} +% \title{Document Class \texttt{wijzer}} +% \author{Johannes Braams} +% \date{Version~\fileversion, dated~\filedate} +% \maketitle +% \tableofcontents +% \clearpage +% +% \StopEventually{} ^^A +% +% \section{Introduction} +% +% \section{The {\sc docstrip} modules} +% +% The following modules are used in the implementation to direct +% {\sc docstrip} in generating the external files: +% \begin{center} +% \begin{tabular}{ll} +% class & produce the document class\\ +% type1 & produce the `1' variants of the classes\\ +% type3 & produce the `3' variants of the classes\\ +% driver & produce a documentation driver file \\ +% \end{tabular} +% \end{center} +% +% \section{Initial Code} +% +% In this part we define a few commands that are used later on. +% +% \begin{macro}{\@ptsize} +% This control sequence is used to store the second digit of the +% pointsize we are typesetting in. So, normally, it's value is one +% of 0, 1 or 2. +% \begin{macrocode} +%<*class> +\newcommand\@ptsize{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@restonecol} +% When the document has to printed in two columns, we sometimes +% have to temporarily switch to one column. This switch is used to +% remember to switch back. +% \begin{macrocode} +\newif\if@restonecol +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@titlepage} +% A switch to indicate if a titlepage has to be produced. +% \begin{macrocode} +\newif\if@titlepage +\@titlepagetrue +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@openright} +% A switch to indicate if chapters must start on a right-hand page. +% The default for the report class is no; for the book class it's +% yes. +% \begin{macrocode} +\newif\if@openright +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@openbib} +% A switch to indicate if the bibliography has to be produced in +% the ``open'' format. The default is to use a ``closed'' format. +% \begin{macrocode} +\newif\if@openbib +\@openbibfalse +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@oldtoc} +% A switch to indicate if `old' layout of the table of contents +% should be produced. These document classes normally produce a +% table of contents that looks quite different from what the +% standard classes produce. +% \begin{macrocode} +\newif\if@oldtoc +\@oldtocfalse +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@allcaps} +% By default the text on the titlepage is set in capital letters. +% This can be disabled by the option \Lopt{mctitle}, which sets the +% switch |\if@allcaps| to false. +% \begin{macrocode} +\newif\if@allcaps +% \end{macro} +% +% \begin{macro}{\if@titlecentered} +% In the document classes \file{wijzer3} the +% default placement of the title that is produced by |\maketitle| +% is flushleft. This can be changed by the switch +% |\if@titlecentered|. +% \begin{macrocode} +%<+type3>\newif\if@titlecentered +%<+type3>\@titlecenteredfalse +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@revlabel} +% These document classes need to be able to change the positioning +% of the label in labeled lists. This switch is used for that +% purpose. +% \begin{macrocode} +\newif\if@revlabel +% \end{macrocode} +% \end{macro} +% +% \section{Declaration of Options} +% +% +% \subsection{Setting Paper Sizes} +% +% The variables |\paperwidth| and |\paperheight| should reflect the +% physical paper size after trimming. For desk printer output this +% is usually the real paper size since there is no post-processing. +% Classes for real book production will probably add other paper +% sizes and additionally the production of crop marks for trimming. +% \begin{macrocode} +\DeclareOption{a4paper} + {\setlength\paperheight {297mm}% + \setlength\paperwidth {210mm}} +\DeclareOption{a5paper} + {\setlength\paperheight {210mm}% + \setlength\paperwidth {148mm}} +\DeclareOption{b5paper} + {\setlength\paperheight {250mm}% + \setlength\paperwidth {176mm}} +\DeclareOption{letterpaper} + {\setlength\paperheight {11in}% + \setlength\paperwidth {8.5in}} +\DeclareOption{legalpaper} + {\setlength\paperheight {14in}% + \setlength\paperwidth {8.5in}} +\DeclareOption{executivepaper} + {\setlength\paperheight {10.5in}% + \setlength\paperwidth {7.25in}} +% \end{macrocode} +% +% The option \Lopt{landscape} switches the values of |\paperheight| +% and |\paperwidth|, assuming the dimensions wer given for portrait +% paper. +% \begin{macrocode} +\DeclareOption{landscape} + {\setlength\@tempdima {\paperheight}% + \setlength\paperheight {\paperwidth}% + \setlength\paperwidth {\@tempdima}} +% \end{macrocode} +% +% \subsection{Choosing the type size} +% +% The type size options are handled by defining |\@ptsize| to contain +% the last digit of the size in question and branching on |\ifcase| +% statements. This is done for historical reasons to stay compatible +% with other packages that use the |\@ptsize| variable to select +% special actions. It makes the declarations of size options less +% than 10pt difficult, although one can probably use \texttt{9} +% and \texttt{8} assuming that a class won't define both +% \Lopt{8pt} and \Lopt{18pt} options. +% +% \begin{macrocode} +\DeclareOption{10pt}{\renewcommand\@ptsize{0}} +\DeclareOption{11pt}{\renewcommand\@ptsize{1}} +\DeclareOption{12pt}{\renewcommand\@ptsize{2}} +% \end{macrocode} +% +% +% \subsection{Two-side or one-side printing} +% +% For two-sided printing we use the switch |\if@twoside|. In +% addition we have to set the |\if@mparswitch| to get any margin +% paragraphs into the outside margin. +% \begin{macrocode} +\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse} +\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue} +% \end{macrocode} +% +% +% \subsection{Draft option} +% +% If the user requests \Lopt{draft} we show any overfull boxes. +% We could probably add some more interesting stuff to this option. +% \begin{macrocode} +\DeclareOption{draft}{\setlength\overfullrule{5pt}} +\DeclareOption{final}{\setlength\overfullrule{0pt}} +% \end{macrocode} +% +% \subsection{Titlepage option} +% An article usually has no separate titlepage, but the user can +% request one. +% \begin{macrocode} +\DeclareOption{titlepage}{\@titlepagetrue} +\DeclareOption{notitlepage}{\@titlepagefalse} +% \end{macrocode} +% +% \subsection{openright option} +% This option determines whether or not a chapter must start on +% a right-hand page +% request one. +% \begin{macrocode} +\DeclareOption{openright}{\@openrighttrue} +\DeclareOption{openany}{\@openrightfalse} +% \end{macrocode} +% +% For these document classes there used to be a file +% \file{voorwerk.sty} which was a replacement for +% \file{titlepag.sty}. Therefore we also have the option +% \Lopt{voorwerk}. +% \begin{macrocode} +\DeclareOption{voorwerk}{\@titlepagetrue} +\DeclareOption{geenvoorwerk}{\@titlepagefalse} +% \end{macrocode} +% +% +% \subsection{Table of contents formatting} +% +% This document class uses a new layout for the table of contents, +% but in order to maintain compatibility with the standard \LaTeXe +% document classes we supply an extra option: \Lopt{oldtoc}. If +% this option is specified the switch |\if@oldtoc| will be set +% true. +% \begin{macrocode} +\DeclareOption{oldtoc}{\@oldtoctrue} +% \end{macrocode} +% +% \subsection{Formatting of the title} +% +% The option \Lopt{titlecentered} changes the behaviour of the +% |\maketitle| command. It then produces a title like it does for +% the \file{artikel1} document class. +% \begin{macrocode} +%<+type3>\DeclareOption{titlecentered}{\@titlecenteredtrue} +% \end{macrocode} +% +% In this document class the titlepage uses all capital +% letters. The option \Lopt{mctitle} (for `mixed case') prevents +% this. +% \begin{macrocode} +\DeclareOption{mctitle}{\@allcapsfalse} +\DeclareOption{uctitle}{\@allcapstrue} +% \end{macrocode} +% +% \subsection{Twocolumn printing} +% +% Two-column and one-column printing is again realized via a switch. +% \begin{macrocode} +\DeclareOption{onecolumn}{\@twocolumnfalse} +\DeclareOption{twocolumn}{\@twocolumntrue} +% \end{macrocode} +% +% \subsection{Equation numbering on the left} +% +% The option \Lopt{leqno} can be used to get the equation numbers +% on the left side of the equation. +% \begin{macrocode} +\DeclareOption{leqno}{\input{leqno.clo}} +% \end{macrocode} +% +% \subsection{Flush left displays} +% +% The option \Lopt{fleqn} redefines the displayed math environmens +% in such a way that they come out flush left, with an indentation +% of |\mathindent| from the prevailing left margin. +% \begin{macrocode} +\DeclareOption{fleqn}{\input{fleqn.clo}} +% \end{macrocode} +% +% \subsection{Open bibliography} +% +% The option \Lopt{openbib} produces the ``open'' bibliography +% style, in which each block starts on a new line, and succeeding +% lines in a block are indented by |\bibindent|. +% \begin{macrocode} +\DeclareOption{openbib}{\@openbibtrue} +% \end{macrocode} +% +% +% \section{Executing Options} +% +% Here we execute the default options to initialize certain +% variables. +% \begin{macrocode} +\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,uctitle,openany} +% \end{macrocode} +% +% The |\ProcessOptions| command causes the execution of the code +% for every option \Lopt{FOO} +% which is declared and for which the user typed +% the \Lopt{FOO} option in his +% |\documentclass| command. For every option \Lopt{BAR} he typed, +% which is not declared, the option is assumed to be a global option. +% All options will be passed as document options to any +% |\usepackage| command in the document preamble. +% \begin{macrocode} +\ProcessOptions +% \end{macrocode} +% Now that all the options have been executed we can load the +% chosen class option file that contains all size dependent code. +% \begin{macrocode} +\input{ntg1\@ptsize.clo} +% \end{macrocode} +% +% \section{Loading Packages} +% +% These class files do not load additional packages. +% +% +% \section{Document Layout} +% \label{sec:maincode} +% +% In this section we are finally dealing with the nasty typographical +% details. +% +% \subsection{Paragraphing} +% +% \begin{macro}{\lineskip} +% \begin{macro}{\normallineskip} +% These parameters control \TeX's behaviour when two lines tend to +% come too close together. +% \begin{macrocode} +\setlength\lineskip{1\p@} +\setlength\normallineskip{1\p@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\baselinestretch} +% This is used as a multiplier for |\baselineskip|. The default is +% to {\em not\/} stretch the baselines. +% \begin{macrocode} +\renewcommand\baselinestretch{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\unitindent} +% These document classes all use a single dimension for a number of +% layout parameters: +% \begin{itemize} +% \item the label width in section heading, +% \item the |\parindent| +% \item the footnote label indent (= half |\unitindent|) +% \item listindent on the first level +% \end{itemize} +% \begin{macrocode} +\newdimen\unitindent +% \end{macrocode} +% The default setting accomodates three levels of single digit +% section numbering. +% \begin{macrocode} +{\setbox0\hbox{\normalsize\rmfamily 2.2.2\hskip.5em} + \global\unitindent=\wd0} +% \end{macrocode} +% +% \begin{macro}{\othermargin} +% Other indentations are maximal label width plus white space. +% \begin{macrocode} +\newdimen\othermargin +{\setbox0\hbox{\normalsize (m)\hskip.6em}\global\othermargin=\wd0} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{if@needwriteindent} +% If this is not enough, a new width is calculated, set, and the +% file{.aux} file contains an instruction that will set +% |\unitindent| on the next run. +% +% For this we need a switch +% \begin{macrocode} +\newif\if@needwriteindent +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@indentset} +% And a command that sets the various parameters. +% \begin{macrocode} +\newcommand\@indentset{% +%<-type3> \global\parindent=\unitindent + \global\leftmargini=\unitindent + \global\@needwriteindenttrue} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@writeindent} +% The |\end{document}| command will call |\@writeindent| to write +% the final width of |\unitindent| on the \file{.aux} file. Also a +% command is written to set |\unitindent|. To be compatible with +% other document classes a check is written to the \file{.aux} file +% for the existence of |\unitindent|. This prevents nasty errors +% when another document class is used. +% \begin{macrocode} +\newcommand\@writeindent[1]{\immediate\write\@mainaux + {\string\@ifundefined{unitindent}{\string\newdimen\string\unitindent + \let\string\@indentset\relax}{}} + \immediate\write\@mainaux{\global\string\unitindent=#1\string\relax + \string\@indentset \string\relax}} +% \end{macrocode} +% \end{macro} +% +% We need to use the hook into |\end{document}| to write the final +% value of |\unitindent| om the file{.aux} file for the next run. +% \begin{macrocode} +\AtEndDocument{% + \if@filesw + \if@needwriteindent + \@writeindent{\the\unitindent} + \fi + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\parskip} +% \begin{macro}{\parindent} +% |\parskip| gives extra vertical space between paragraphs and +% |\parindent| is the width of the paragraph indentation. The value +% of |\parindent| depends on whether we are in two column mode. +% \begin{macrocode} +%<*type1> +\setlength\parskip{0\p@} +\setlength\parindent{\unitindent} +%</type1> +%<*type3> +\setlength\parskip{.5\baselineskip \@plus .1\baselineskip + \@minus .1\baselineskip} +\setlength\parindent{\z@} +%</type3> +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@lowpenalty} +% \begin{macro}{\@medpenalty} +% \begin{macro}{\@highpenalty}% +% The commands |\nopagebreak| and |\nolinebreak| put in penalties +% to discourage these breaks at the point they are put in. +% They use |\@lowpenalty|, |\@medpenalty| or |\@highpenalty|, +% dependent on their argument. +% \begin{macrocode} +\@lowpenalty 51 +\@medpenalty 151 +\@highpenalty 301 +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\clubpenalty} +% \begin{macro}{\widowpenalty} +% These penalties are use to discourrage club and widow lines. +% Because we use their default values we only show them here, +% commented out. +% \begin{macrocode} +% \clubpenalty 150 +% \widowpenalty 150 +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\displaywidowpenalty} +% \begin{macro}{\predisplaypenalty} +% \begin{macro}{\postdisplaypenalty} +% Discourrage (but not so much) widows in front of a math display +% and forbid breaking directly in front of a display. Allow break +% after a display without a penalty. Again the default values are +% used, therefore we only show them here. +% \begin{macrocode} +% \displaywidowpenalty 50 +% \predisplaypenalty 10000 +% \postdisplaypenalty 0 +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\interlinepenalty} +% Allow the breaking of a page in the middle of a paragraph. +% \begin{macrocode} +% \interlinepenalty 0 +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\brokenpenalty} +% We allow the breaking of a page after a hyphenated line. +% \begin{macrocode} +% \brokenpenalty 0 +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Float placement parameters} +% +% All float parameters are given default values in the \LaTeXe{} +% kernel. For this reason counters only need to be set with +% |\setcounter| and other parameters are set using |\renewcommand|. +% +% \paragraph{Limits for the placement of floating objects} +% +% \begin{macro}{\c@topnumber} +% The \Lcount{topnumber} counter holds the maximum number of +% floats that can appear on the top of a text page. +% \begin{macrocode} +\setcounter{topnumber}{2} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\topfraction} +% This indicates the maximum part of a text page that can be +% occupied by floats at the top. +% \begin{macrocode} +\renewcommand\topfraction{.7} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\c@bottomnumber} +% The \Lcount{bottomnumber} counter holds the maximum number of +% floats that can appear on the bottom of a text page. +% \begin{macrocode} +\setcounter{bottomnumber}{1} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bottomfraction} +% This indicates the maximum part of a text page that can be +% occupied by floats at the bottom. +% \begin{macrocode} +\renewcommand\bottomfraction{.3} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\c@totalnumber} +% This indicates the maximum number of floats that can appear on +% any text page. +% \begin{macrocode} +\setcounter{totalnumber}{3} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textfraction} +% This indicates the minimum part of a text page that has to be +% occupied by text. +% \begin{macrocode} +\renewcommand\textfraction{.2} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\floatpagefraction} +% This indicates the minimum part of a page that has to be +% occupied by floating objects before a `float page' is produced. +% \begin{macrocode} +\renewcommand\floatpagefraction{.5} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\c@dbltopnumber} +% The \Lcount{dbltopnumber} counter holds the maximum number of +% two column floats that can appear on the top of a two column text +% page. +% \begin{macrocode} +\setcounter{dbltopnumber}{2} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dbltopfraction} +% This indicates the maximum part of a two column text page that +% can be occupied by two column floats at the top. +% \begin{macrocode} +\renewcommand\dbltopfraction{.7} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dblfloatpagefraction} +% This indicates the minimum part of a page that has to be +% occupied by two column wide floating objects before a `float +% page' is produced. +% \begin{macrocode} +\renewcommand\dblfloatpagefraction{.5} +% \end{macrocode} +% \end{macro} +% +% \subsection{Page Styles} +% +% The page style \pstyle{foo} is defined by defining the command +% |\ps@foo|. This command should make only local definitions. +% There should be no stray spaces in the definition, since they +% could lead to mysterious extra spaces in the output (well, that's +% something that should be always avoided). +% +% \begin{macro}{\@evenhead} +% \begin{macro}{\@oddhead} +% \begin{macro}{\@evenfoot} +% \begin{macro}{\@oddfoot} +% The |\ps@...| command defines the macros |\@oddhead|, +% |\@oddfoot|, |\@evenhead|, and |\@evenfoot| to define the running +% heads and feet---e.g., |\@oddhead| is the macro to produce the +% contents of the heading box for odd-numbered pages. It is called +% inside an |\hbox| of width |\textwidth|. +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\thispagestyle} +% Several commands (|\index|, |\maketitle|) give a +% |\thispagestyle{plain}| command, which will overrule a +% |\pagestyle{empty}| command. This situation is almost always +% unwanted. Therefore we provide a more careful definition. +% +% First save the original definition. +% \begin{macrocode} +\let\Thispagestyle\thispagestyle +% \end{macrocode} +% Then we provide the new definition, for which we must also adapt +% |\pagestyle| a little. +% \begin{macrocode} +\newcommand\@emptypagestyle{empty} +\renewcommand\pagestyle[1]{\@nameuse{ps@#1}\def\@currentpagestyle{#1}} +\renewcommand\thispagestyle[1]{% + \ifx\@currentpagestyle\@emptypagestyle + \else + \global\@specialpagetrue + \gdef\@specialstyle{#1}% + \fi} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Marking conventions} +% +% To make headings determined by the sectioning commands, the page +% style defines the commands |\chaptermark|, |\sectionmark|, +% \ldots,\\ +% where |\chaptermark{|\meta{TEXT}|}| is called by +% |\chapter| to set a mark, and so on. +% +% The |\...mark| commands and the |\...head| macros are defined +% with the help of the following macros. (All the |\...mark| +% commands should be initialized to no-ops.) +% +% \LaTeX{} extends \TeX's |\mark| facility by producing two kinds +% of marks, a `left' and a `right' mark, using the following +% commands: +% \begin{flushleft} +% |\markboth{|\meta{LEFT}|}{|\meta{RIGHT}|}|: Adds both marks. +% +% |\markright{|\meta{RIGHT}|}|: Adds a `right' mark. +% +% |\leftmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead| +% or |\@evenfoot| macros, it gets the current `left' +% mark. |\leftmark| works like \TeX's |\botmark| +% command. +% +% |\rightmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead| +% or |\@evenfoot| macros, it gets the current +% `right' mark. |\rightmark| works like \TeX's +% |\firstmark| command. +% \end{flushleft} +% +% The marking commands work reasonably well for right marks +% `numbered within' left marks--e.g., the left mark is changed by a +% |\chapter| command and the right mark is changed by a |\section| +% command. However, it does produce somewhat anomalous results if +% two |\markboth|'s occur on the same page. +% +% +% Commands like |\tableofcontents| that should set the marks in some +% page styles use a |\@mkboth| command, which is |\let| by the +% pagestyle command (|\ps@...|) to |\markboth| for setting the +% heading or to |\@gobbletwo| to do nothing. +% +% +% \begin{macrocode} +% %%%\mark{{}{}} % Initializes TeX's marks <--- can vanish +% \end{macrocode} +% +% \subsubsection{Defining the page styles} +% \label{sec:pagestyle} +% +% The pagestyle \pstyle{empty} is defined in \file{latex.dtx}, but +% the pagestyle \pstyle{plain} is slightly altered here. The +% difference is that the page numbers are set flush right in +% onesided and flush left and right in the twosided style. +% +% \begin{macro}{\ps@plain} +% +% \begin{macrocode} +\renewcommand\ps@plain{% +% \end{macrocode} +% The running head are empty in this pagestyle, the page number +% appears in the running foot. +% \begin{macrocode} + \let\@oddhead\@empty\let\@evenhead\@empty + \def\@oddfoot{\hfil\PageFont\thepage}% + \if@twoside + \def\@evenfoot{\PageFont\thepage\hfil}% + \else + \let\@evenfoot\@oddfoot + \fi +% \end{macrocode} +% Because the running heads should be empty we |let| |\@mkboth| to +% |\@gobbletwo|, thus disabling the mark commands. +% \begin{macrocode} + \let\@mkboth\@gobbletwo} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ps@headings} +% The definition of the page style \pstyle{headings} has to be +% different for two sided printing than it is for one sided +% printing. +% +% \begin{macrocode} +\if@twoside + \def\ps@headings{% +% \end{macrocode} +% The running feet are empty in this page style, the running head +% contains the page number and one of the marks. +% \begin{macrocode} + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{{\PageFont\thepage}\hfil\MarkFont\leftmark}% + \def\@oddhead{{\MarkFont\rightmark}\hfil\PageFont\thepage}% +% \end{macrocode} +% +% When using this page style, the contents of the running head is +% determined by the chapter and section titles. So we |\let| +% |\@mkboth| to |\markboth|. +% \begin{macrocode} + \let\@mkboth\markboth +% \end{macrocode} +% +% In thisdocument class we use the |\chaptermark| +% and |\sectionmark| macros to fill the running heads. +% +% Note the use of |##1| for the parameter of the |\chaptermark| +% command, which will be defined when |\ps@headings| is executed. +% +% \begin{macrocode} + \def\chaptermark##1{% + \markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne + \@chapapp\ \thechapter. \ \fi + ##1}}{}}% + \def\sectionmark##1{% + \markright {\uppercase{\ifnum \c@secnumdepth >\z@ + \thesection. \ \fi + ##1}}}} +% \end{macrocode} +% +% The definition of |\ps@headings| for one sided printing can be +% much simpler, because we treat even and odd pages the same. +% Therefore we don't need to define |\@even...|. +% \begin{macrocode} +\else + \def\ps@headings{% + \let\@oddfoot\@empty + \def\@oddhead{{\MarkFont\rightmark}\hfil\PageFont\thepage}% + \let\@mkboth\markboth +% \end{macrocode} +% We use |\markright| now instead of |\markboth| as we did for two +% sided printing. +% \begin{macrocode} + \def\chaptermark##1{% + \markright {\uppercase{\ifnum \c@secnumdepth >\m@ne + \@chapapp\ \thechapter. \ \fi + ##1}}}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ps@myheadings} +% The definition of the page style \pstyle{myheadings} is fairly +% simple because the user determines the contents of the running +% head himself by using the |\markboth| and |\markright| commands. +% +% \begin{macrocode} +\def\ps@myheadings{% + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{{\PageFont\thepage}\hfil\MarkFont\leftmark}% + \def\@oddhead{{\MarkFont\rightmark}\hfil\PageFont\thepage}% +% \end{macrocode} +% +% We have to make sure that the marking commands that are used by +% the chapter and section headings are disabled. We do this +% |\let|ting them to a macro that gobbles its argument(s). +% \begin{macrocode} + \let\@mkboth\@gobbletwo + \let\chaptermark\@gobble + \let\sectionmark\@gobble + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PageFont} +% \begin{macro}{\MarkFont} +% These macros are use to store the fonts that are used to typeset +% the pagenumber (|\PageFont|) and the marks (|\MarkFont|) in the +% running head and feet. +% \begin{macrocode} +\newcommand\PageFont{\rmfamily} +\newcommand\MarkFont{\slshape} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\RunningFonts} +% Use this macro to change the fonts that are used in the running +% heads. +% \begin{macrocode} +\newcommand\RunningFonts[2]{% + \renewcommand\PageFont{#1}\renewcommand\MarkFont{#2}} +% \end{macrocode} +% \end{macro} +% +% \section{Document Markup} +% +% \subsection{The title} +% +% \begin{macro}{\title} +% \begin{macro}{\author} +% \begin{macro}{\date} +% These three macros are provided by \file{latex.dtx} to provide +% information about the title, author(s) and date of the document. +% The information is stored away in internal control sequences. +% It is the task of the |\maketitle| command to use the +% information provided. The definitions of these macros are shown +% here for information. +% \begin{macrocode} +% \newcommand\title[1]{\gdef\@title{#1}} +% \newcommand\author[1]{\gdef\@author{#1}} +% \newcommand\date[1]{\gdef\@date{#1}} +% \end{macrocode} +% The |\date| macro gets today's date by default. +% \begin{macrocode} +% \gdef\@date{\today} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\TitleFont} +% This selects the font to use in the title of the document. +% \begin{macrocode} +\newcommand\TitleFont{\bfseries} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\maketitle} +% The definition of |\maketitle| depends on whether a seperate +% title page is made. This is the default for this document class. +% Note that the title, author and date information is printed in +% capital letters by default. This can be changed by the option +% \Lopt{mctitle}. +% +% When we are making a title page, we locally redefine +% |\footnotesize| and |\footnoterule| to change the appearance of +% the footnotes that are produced by the |\thanks| command. +% \begin{macrocode} +\renewcommand\TitleFont{\rmfamily} +\newcommand\maketitle{% + \begin{titlepage}% + \let\footnotesize\small + \let\footnoterule\relax +% \end{macrocode} +% Footnotes on the titlepage, generated by the use of |\thanks|, +% use symbols in these document classes. +% \begin{macrocode} + \long\def\@makefntext##1{\parindent\z@ + \def\labelitemi{--}\@revlabeltrue + \leavevmode$\m@th^{\@thefnmark}$\kern1em\relax ##1} + \renewcommand\thefootnote{\fnsymbol{footnote}}% +% \end{macrocode} +% We center the entire title vertically; the centering is set off a +% little by adding a |\vskip|. In compatibility mode the pagenumber +% is set to 0 to keep the behaviour of \LaTeX\ 2.09 style files +% \begin{macrocode} + \if@compatibility\setcounter{page}{0}\fi + \null\vfil + \vskip 60\p@ +% \end{macrocode} +% Then we set the title, in a |\LARGE| font; leave a little space +% and set the author(s) in a |\large| font. We do this inside a +% tabular environment to get them in a single column. +% Before the date we leave a little whitespace again. +% \begin{macrocode} + \begin{center}% + \TitleFont + {\LARGE \def\\{\penalty -\@M} + \if@allcaps + \expandafter\uc@nothanks\@title\thanks\relax + \else + \@title + \fi\par}% + \vskip 3em% + {\large + \lineskip .75em \parindent\z@ + \begin{tabular}[t]{c}% + \if@allcaps + \expandafter\uc@authornothanks\@author\and\relax + \else + \@author + \fi + \end{tabular}\par}% + \vskip 1.5em% + {\large + \if@allcaps + \uppercase\expandafter{\@date}% + \else + \@date + \fi\par}% + \end{center}\par +% \end{macrocode} +% Then we call |\@thanks| to print the information that goes into +% the footnote and finish the page. +% \begin{macrocode} + \@thanks + \vfil\null + \end{titlepage}% +% \end{macrocode} +% We reset the \Lcount{footnote} counter, disable |\thanks| and +% |\maketitle| and save some storage space by emptying the internal +% information macros. +% \begin{macrocode} + \setcounter{footnote}{0}% + \let\thanks\relax\let\maketitle\relax + \gdef\@thanks{}\gdef\@author{}\gdef\@title{}} +% \end{macrocode} +% +% We want to have the title, author and date information in +% uppercase, but we have to be very carefull not to put too much +% text in uppercase. The macros that perform the filtering of texts +% that shouldn't be in uppercase were developped with th help of +% Howard Trickey. +% +% \begin{macro}{\uc@nothanks} +% This macro takes all the text up to the first use of |\thanks| +% and passes it to |\uppercase|. The use of |\futurelet| will store +% the token \emph{after} the |\thanks| in |\@tempa|. The macro +% |\u@tx| uses that information to determine what to do next. +% \begin{macrocode} +\def\uc@nothanks#1\thanks{\uppercase{#1}\futurelet\@tempa\uc@tx} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\uc@authornothanks} +% A document can have more than one author. Usually they are +% seperated with |\and|. For each author a footnote --using +% |\thanks| can be present. Therefore this macro takes all the text +% up to the first use of |\and|, thus picking up all the +% information for one author. This is than passsed to +% |\uc@nothanks|, which checks for the presence of |\thanks|. For +% this to work the argument of |\uc@nothanks| has to be delimited +% by |\thanks\relax|. +% \begin{macrocode} +\def\uc@authornothanks#1\and{\uc@nothanks#1\thanks\relax +% \end{macrocode} +% Then we have to check whether the |\and| we ound earlier was put +% in by the user, in which case information for another user will +% follow, or by the call from another macro, in which case the +% |\and| will be followed by a |\relax| token. The |\futurelet| +% contstruct stores the first token \emph{after} the |\and| in +% |\@tempa| to be inspected by |\u@ax|. +% \begin{macrocode} + \futurelet\@tempa\uc@ax} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\uc@ax} +% When |\@tempa| contains a |\relax| token nothing needs to be +% done, when it doesn't we put in a linebreak |\\| the word `and' +% (stored in |\andname| so that this control sequence can be +% redeined for other languages), another linebreak and we call +% |\uc@authornothanks| to continue processing. The |\expandafter| +% lets \TeX\ see the |\fi| first. +% \begin{macrocode} +\def\uc@ax{% + \ifx\@tempa\relax + \else + \\ \andname \\ \expandafter\uc@authornothanks + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\uc@tx} +% This macro simply checks whether |\@tempa| contains a |\relax| +% token. When it doesn't further processing is performed by +% |\u@ty|. +% \begin{macrocode} +\def\uc@tx{\ifx\@tempa\relax + \else \expandafter\uc@ty \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\uc@ty} +% The macro |\uc@ty| gets executed when the |\thanks| that +% delimited text earlier on in the processing had a real argument. +% In that case it was a |\thanks| put in by the user, \emph{not} by +% these macros. Therefore the argument is now passed to |\thanks| +% and processing continues by calling |\uc@nothanks|. +% \begin{macrocode} +\def\uc@ty#1{\thanks{#1}\uc@nothanks} +% \end{macrocode} +% \end{macro} +% +% When the title is not on a page of its own, the layout of the +% title is a little different. We use symbols to mark the footnotes +% and we have to deal with two column documents. +% +% Therefore we first start a new group to keep changes local. Then +% we redefine |\thefootnote| to use |\fnsymbol|; and change +% |\@makefnmark| so that footnotemarks have zero width (to make the +% centering of the author names look better). We also want raised +% footnotemarkers in the footnotes here. +% \begin{macrocode} +\else +\newcommand\maketitle{\par + \begingroup + \renewcommand\thefootnote{\fnsymbol{footnote}}% + \def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}% + \def\@makefntext{\@xmakefntext{$\m@th^{\@thefnmark}$}}% +% \end{macrocode} +% If this is a twocolumn document we start a new page in twocolumn +% mode, with the title set to the full width of the text. The +% actual printing of the title information is left to +% |\@maketitle|. +% \begin{macrocode} + \if@twocolumn + \ifnum \col@number=\@ne + \@maketitle + \else + \twocolumn[\@maketitle]% + \fi + \else +% \end{macrocode} +% When this is not a twocolumn document we just start a new page, +% prevent floating objects from appearing on the top of this page +% and print the title information. +% \begin{macrocode} + \newpage + \global\@topnum\z@ + \@maketitle + \fi +% \end{macrocode} +% This page gets a \pstyle{plain} layout. We call |\@thanks| to +% produce the footnotes. +% \begin{macrocode} + \thispagestyle{plain}\@thanks +% \end{macrocode} +% Now we can close the group, reset the \Lcount{footnote} counter, +% disable |\thanks|, |\maketitle| and |\@maketitle| and save some +% storage space by emptying the internal information macros. +% \begin{macrocode} + \endgroup + \setcounter{footnote}{0}% + \let\thanks\relax + \let\maketitle\relax\let\@maketitle\relax + \gdef\@thanks{}\gdef\@author{}\gdef\@title{}} +% \end{macrocode} +% +% \begin{macro}{\@maketitle} +% This macro takes care of formatting the title information when we +% have no seperate title page. +% +% We always start a new page, leave some white space and center the +% information. The title is set in a |\LARGE| font, the author +% names and the in a |\large| font. +% \begin{macrocode} +\def\@maketitle{% + \newpage + \null + \vskip 2em% +%<+type3>\if@titlecentered + \begin{center}% + {\LARGE \TitleFont \@title \par}% + \vskip 1.5em% + {\large \TitleFont + \lineskip .5em% + \begin{tabular}[t]{c}% + \@author + \end{tabular}\par}% + \vskip 1em% + {\large \TitleFont \@date}% + \end{center}% +%<*type3> + \else + {\LARGE \TitleFont \head@style \@title \par} \vskip 1.5em + {\large \TitleFont \lineskip .5em \tabcolsep\z@ + \def\and{%%% \begin{tabular} has already started + \end{tabular}\hskip 1em plus .17fil + \begin{tabular}[t]{l}}%% \end{tabular} will come + \begin{tabular}[t]{l}\@author\end{tabular}\par} + \vskip 1em {\large \TitleFont \@date} + \fi +%</type3> + \par + \vskip 1.5em} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Chapters and Sections} +% +% \subsubsection{Building blocks} +% The definitions in this part of the class file make use of two +% macros, |\@startsection| and |\secdef|, which are defined by +% \file{latex.dtx}. To understand what is going on here, we +% describe their syntax. +% +% The macro |\@startsection| has 6 required arguments, optionally +% followed by a $*$, an optional argument and a required argument: +% +% |\@startsection|\meta{name}\meta{level}\meta{indent}^^A +% \meta{beforeskip}\meta{afterskip}\meta{style} +% optional *\\ +% \null\hphantom{\bslash @startsection}^^A +% |[|\meta{altheading}|]|\meta{heading} +% +% It is a generic command to start a section, the arguments have +% the following meaning: +% +% \begin{description} +% \item[\meta{name}] The name of the user level command, e.g., +% `section'. +% \item[\meta{level}] A number, denoting the depth of the section +% -- e.g., chapter=1, section = 2, etc. A section number +% will be printed if and only if \meta{level} $<=$ the value +% of the \Lcount{secnumdepth} counter. +% \item[\meta{indent}] The indentation of the heading from the left +% margin +% \item[\meta{beforeskip}] The absolute value of this argument +% gives the skip to leave above the heading. If it is +% negative, then the paragraph indent of the text following +% the heading is suppressed. +% \item[\meta{afterskip}] If positive, this gives the skip to leave +% below the heading, else it gives the skip to leave to the +% right of a run-in heading. +% \item[\meta{style}] Commands to set the style of the heading. +% \item[$*$] When this is missing the heading is numbered and the +% corresponding counter is incremented. +% \item[\meta{altheading}] Gives an alternative heading to use in +% the table of contents and in the running heads. This should +% be present when the $*$ form is used. +% \item[\meta{heading}] The heading of the new section. +% \end{description} +% A sectioning command is normally defined to |\@startsection| and +% its first six arguments. +% +% The macro |\secdef| can be used when a sectioning command is +% defined without using |\@startsection|. It has two arguments: +% +% |\secdef|\meta{unstarcmds}\meta{starcmds} +% +% \begin{description} +% \item[\meta{unstarcmds}] Used for the normal form of the +% sectioning command. +% \item[\meta{starcmds}] Used for the $*$-form of the +% sectioning command. +% \end{description} +% +% You can use |\secdef| as follows: +% \begin{verbatim} +% \def\chapter { ... \secdef \CMDA \CMDB } +% \def\CMDA [#1]#2{ ... } % Command to define +% % \chapter[...]{...} +% \def\CMDB #1{ ... } % Command to define +% % \chapter*{...} +% \end{verbatim} +% +% \begin{macro}{\head@style} +% In the definition of chapter and section commands a number of +% settings frequently occur. Therefore we store them in a control +% sequence. +% +% Section headings are to be set extremely raggedright, with no +% hyphenations, not even at explicit hyphens. +% +% \begin{macrocode} +\newcommand\head@style{% + \interlinepenalty \@M + \hyphenpenalty=\@M \exhyphenpenalty=\@M + \rightskip=0cm plus .7\hsize\relax} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@sect} +% The definition of this macro from \file{latex.dtx} needs to be +% repeated here because we want to modify its behaviour with +% respect to: +% \begin{enumerate} +% \item the width of the number, which is fixed; +% \item checking the value of |\unitindent|; +% \item formatting the section title ragged right; +% \item changing the argument of |\contentsline|. +% \end{enumerate} +% \begin{macrocode} +\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth + \let\@svsec\@empty\else + \refstepcounter{#1}% +% \end{macrocode} +% The following code (within the group) checks the value of +% |\unitindent|. If the sectionnumber is wider than |\unitindent| +% its value is adapted and a flag is set to rememeber to store the +% new value in the \file{.aux}-file. +% \begin{macrocode} + \begingroup + \setbox\@tempboxa=\hbox{#6\relax + \csname the#1\endcsname + \hskip.5em} + \ifdim\wd\@tempboxa>\unitindent + \global\unitindent=\wd\@tempboxa + \@indentset + \fi + \endgroup + \let\@@protect\protect + \def\protect{\noexpand\protect\noexpand}% + \edef\@svsec{\@seccntformat{#1}}% + \let\protect\@@protect\fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup #6\relax + \@hangfrom{\hskip #3\relax\@svsec}{\head@style #8\par}% + \endgroup + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth + \else + \protect\numberline{\csname the#1\endcsname}% + \fi + \toc@font#2 #7}% + \else + \def\@svsechd{#6\hskip #3\relax + \@svsec #8\csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth + \else + \protect\numberline{\csname the#1\endcsname}% + \fi + \toc@font#2 #7}}% + \fi + \@xsect{#5}} +% \end{macrocode} +% This macro was introduced in \LaTeXe, its definition is changed +% here to get the fixed with of the section number. +% \begin{macrocode} +\def\@seccntformat#1{% + \hbox to \unitindent{\csname the#1\endcsname \hfil}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@ssect} +% Similar changes need to be made to the definition of |\@ssect|, +% which is used in `starred' sections. +% \begin{macrocode} +\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + \begingroup #4\relax + \@hangfrom{\hskip #1}{\head@style #5\par}\endgroup + \else \def\@svsechd{#4\hskip #1\relax #5}\fi + \@xsect{#3}} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Mark commands} +% +% \begin{macro}{\chaptermark} +% \begin{macro}{\sectionmark} +% \begin{macro}{\subsectionmark} +% \begin{macro}{\subsubsectionmark} +% \begin{macro}{\paragraphmark} +% \begin{macro}{\subparagraphmark} +% Default initializations of |\...mark| commands. These commands +% are used in the definition of the page styles (see +% section~\ref{sec:pagestyle}) Most of them are already defined by +% \file{latex.ltx}, so they are only shown here. +% +% \begin{macrocode} +\newcommand\chaptermark[1]{} +% \newcommand\sectionmark[1]{} +% \newcommand\subsectionmark[1]{} +% \newcommand\subsubsectionmark[1]{} +% \newcommand\paragraphmark[1]{} +% \newcommand\subparagraphmark[1]{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{Define Counters} +% +% \begin{macro}{\c@secnumdepth} +% The value of the counter \Lcount{secnumdepth} gives the depth of +% the highest-level sectioning command that is to produce section +% numbers. +% \begin{macrocode} +\setcounter{secnumdepth}{2} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\c@part} +% \begin{macro}{\c@chapter} +% \begin{macro}{\c@section} +% \begin{macro}{\c@subsection} +% \begin{macro}{\c@subsubsection} +% \begin{macro}{\c@paragraph} +% \begin{macro}{\c@subparagraph} +% These counters are used for the section numbers. The macro\\ +% |\newcounter{|\meta{newctr}|}[|\meta{oldctr}|]|\\ +% defines \meta{newctr} to be a counter, which is reset to zero when +% counter \meta{oldctr} is stepped. Counter \meta{oldctr} must +% already be defined. +% +% \begin{macrocode} +\newcounter {part} +\newcounter {chapter} +\newcounter {section}[chapter] +\newcounter {subsection}[section] +\newcounter {subsubsection}[subsection] +\newcounter {paragraph}[subsubsection] +\newcounter {subparagraph}[paragraph] +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\thepart} +% \begin{macro}{\thechapter} +% \begin{macro}{\thesection} +% \begin{macro}{\thesubsection} +% \begin{macro}{\thesubsubsection} +% \begin{macro}{\theparagraph} +% \begin{macro}{\thesubparagraph} +% For any counter \Lcount{CTR}, |\theCTR| is a macro that defines +% the printed version of counter \Lcount{CTR}. It is defined in +% terms of the following macros: +% +% |\arabic{|\Lcount{COUNTER}|}| prints the value of +% \Lcount{COUNTER} as an arabic numeral. +% +% |\roman{|\Lcount{COUNTER}|}| prints the value of +% \Lcount{COUNTER} as a lowercase roman numberal. +% +% |\Roman{|\Lcount{COUNTER}|}| prints the value of +% \Lcount{COUNTER} as an uppercase roman numberal. +% +% |\alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER} +% as a lowercase letter: $1 =$~a, $2 =$~ b, etc. +% +% |\Alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER} +% as an uppercase letter: $1 =$~A, $2 =$~B, etc. +% +% \begin{macrocode} +\renewcommand\thepart {\Roman{part}} +\renewcommand\thechapter {\arabic{chapter}} +\renewcommand\thesection {\thechapter.\arabic{section}} +\renewcommand\thesubsection {\thesection.\arabic{subsection}} +\renewcommand\thesubsubsection {\thesubsection .\arabic{subsubsection}} +\renewcommand\theparagraph {\thesubsubsection.\arabic{paragraph}} +\renewcommand\thesubparagraph {\theparagraph.\arabic{subparagraph}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@chapapp} +% |\@chapapp| is initially defined to be `|\chaptername|'. The +% |\appendix| command redefines it to be `|\appendixname|'. +% +% \begin{macrocode} +\newcommand\@chapapp{\chaptername} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Parts} +% +% \begin{macro}{\part} +% The command to start a new part of our document. +% +% We start a new (righthand) page and use the \pstyle{empty}. +% \begin{macrocode} +\newcommand\part{\cleardoublepage + \thispagestyle{empty}% +% \end{macrocode} +% When we are making a two column document, this will be a one +% column page. We use |@tempswa| to remember to switch back to two +% columns. +% \begin{macrocode} + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi +% \end{macrocode} +% We need an empty box to prevent the fil glue from disappearing. +% \begin{macrocode} + \hbox{}\vfil +% \end{macrocode} +% Here we use |\secdef| to indicate wwhich commands to use to make +% the actual heading. +% \begin{macrocode} + \secdef\@part\@spart} +% \end{macrocode} +% +% \begin{macro}{\@part} +% This macro does the actual formatting of the title of the part. +% +% \begin{macro}{\PartFont} +% The font used to typeset the part is stored in this maro. +% \begin{macrocode} +\newcommand\PartFont{\bfseries} +% \end{macrocode} +% \end{macro} +% +% When \Lcount{secnumdepth} is larger than $-2$ for this document +% class, we have a numbered part, otherwise it is unnumbered. +% \begin{macrocode} +\def\@part[#1]#2{% + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}\toc@case{#1}}% + \else + \addcontentsline{toc}{part}{\toc@case{#1}}% + \fi +% \end{macrocode} +% We empty the mark registers and center the title on the page. +% Also we prevent breaking between lines and reset the font. +% \begin{macrocode} + \markboth{}{} + {\centering + \interlinepenalty \@M + \reset@font +% \end{macrocode} +% When this is a numbered part we have to print the number. We have +% to expand |\partname| before |\uppercase| is called, therefore we +% use a temporary control sequence that, when called will execute +% |\uppercase| on the contents of |\partname|. +% \begin{macrocode} + \ifnum \c@secnumdepth >-2\relax + \Large\PartFont + \edef\@tempa{\noexpand\uppercase{\partname}}\@tempa~\thepart + \par +% \end{macrocode} +% We leave some space before we print the title and leave the +% finishing up to |\@endpart|. +% \begin{macrocode} + \vskip 20\p@ + \fi + \Large \PartFont \uppercase{#2}\par}% + \@endpart} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@spart} +% This macro does the actual formatting of the title of the part +% when the star form of the user command was used. In this case we +% {\em never} print a number. Otherwise the formatting is the same. +% +% \begin{macrocode} +\def\@spart#1{% + {\centering + \interlinepenalty \@M + \reset@font + \Large \PartFont #1\par}% + \@endpart} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@endpart} +% This macro finishes the part page, for both |\@part| and +% |\@spart|. +% +% First we fill the current page. +% \begin{macrocode} +\def\@endpart{\vfil\newpage +% \end{macrocode} +% Then, when we are in twosided mode, we produce a completely blank +% page. +% \begin{macrocode} + \if@twoside + \hbox{}% + \thispagestyle{empty}% + \newpage + \fi +% \end{macrocode} +% When this was a two column document we have to switch back to two +% column mode. +% \begin{macrocode} + \if@tempswa + \twocolumn + \fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsubsection{Chapters} +% +% \begin{macro}{\chapter} +% A chapter should always start on a new page therefore we start by +% calling |\clearpage| and setting the pagestyle for this page to +% \pstyle{plain}. +% \begin{macrocode} +\newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi + \thispagestyle{plain}% +% \end{macrocode} +% Then we prevent floats from appearing at the top of this page +% because it looks weird to see a floating object above a chapter +% title. +% \begin{macrocode} + \global\@topnum\z@ +% \end{macrocode} +% Then we suppress the indentation of the first paragraph by +% setting the switch |\@afterindent| to |false|. We use |\secdef| +% to specify the macros to use for actually setting the chapter +% title. +% \begin{macrocode} + \@afterindentfalse + \secdef\@chapter\@schapter} +% \end{macrocode} +% +% \begin{macro}{\@chapter} +% This macro is called when we have a numbered chapter. When +% \Lcount{secnumdepth} is larger than $-1$ we display the chapter +% number. We also inform the user that a new chapter is about to be +% typeset by writing a message to the terminal. +% \begin{macrocode} +\def\@chapter[#1]#2{% + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}\toc@font0 #1}% + \else + \addcontentsline{toc}{chapter}{\toc@font0 #1}% + \fi +% \end{macrocode} +% After having written an entry to the table of contents we store +% the (alternative) title of this chapter with |\chaptermark| and +% add some white space to the lists of figures and tables. +% \begin{macrocode} + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% +% \end{macrocode} +% Then we call upon |\@makechapterhead| to format the actual +% chapter title. We have to do this in a special way when we are in +% twocolumn mode in order to have the chapter title use the entire +% |\textwidth|. In one column mode we call |\@afterheading| which +% takes care of suppressing the indentation. +% \begin{macrocode} + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +% \end{macrocode} +% +% \begin{macro}{\ChapFont} +% The font used to typeset the chapters is stored in this maro. +% \begin{macrocode} +\newcommand\ChapFont{\bfseries} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@makechapterhead} +% The macro above uses |\@makechapterhead|\meta{text} to format the +% heading of the chapter. +% +% We begin by leaving some white space. The we open a group in +% which we have a paragraph indent of 0pt, and in which we have the +% text set ragged right. We also reset the font. +% \begin{macrocode} +\def\@makechapterhead#1{% + \vspace*{50\p@ \@plus 5\p@}% + {\setlength\parindent{\z@}% + \setlength\parskip {\z@}% + \head@style \reset@font +% \end{macrocode} +% Then we check whether the number of the chapter has to be printed. +% If so we leave some whitespace between the chapternumber and its +% title. +% \begin{macrocode} + \ifnum \c@secnumdepth >\m@ne + \Large\ChapFont \@chapapp{} \thechapter + \par + \vskip 20\p@ + \fi +% \end{macrocode} +% Now we set the title in a large bold font. We prevent a pagebreak +% at this point and leave some whitespace before the text begins. +% \begin{macrocode} + \Large \ChapFont #1\par + \nobreak + \vskip 40\p@ + }} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@schapter} +% This macro is called when we have an unnumbered chapter. It is +% much simpler than |\@chapter| because it only needs to typeset +% the chapter title. +% \begin{macrocode} +\def\@schapter#1{\if@twocolumn + \@topnewpage[\@makeschapterhead{#1}]% + \else + \@makeschapterhead{#1}% + \@afterheading + \fi} +% \end{macrocode} +% +% \begin{macro}{\@makeschapterhead} +% The macro above uses |\@makeschapterhead|\meta{text}to format +% the heading of the chapter. It is similar to |\@makechapterhead| +% except that it never has to print a chapter number. +% +% \begin{macrocode} +\def\@makeschapterhead#1{% + \vspace*{50\p@\@plus 5\p@}% + {\setlength\parindent{\z@}% + \setlength\parskip{\z@}% + \head@style + \reset@font + \Large \ChapFont #1\par + \nobreak + \vskip 40\p@ + }} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \subsubsection{Lower level headings} +% +% These commands all make use of |\@startsection|. +% \begin{macro}{\section} +% This gives a normal heading with white space above the heading +% (the whitespace below the heading will be generated by the +% |\parskip| that is inserted at the start of the first paragraph), +% the title set in |\large\bfseries|, and no indentation on the +% first paragraph. +% \begin{macrocode} +\newcommand\section{% + \@startsection {section}{1}{\z@}% + {-2\baselineskip\@plus -1\baselineskip \@minus -.5\baselineskip}% +%<+type1> {.5\baselineskip}% +%<+type3> {.01\baselineskip}% + {\reset@font\large\SectFont}} +% \end{macrocode} +% +% \begin{macro}{\SectFont} +% The font used to typeset the sections is stored in this maro. +% \begin{macrocode} +\newcommand\SectFont{\bfseries} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\subsection} +% This gives a normal heading with white space above the heading, +% the title set in |\normalsize\bfseries|, and no indentation on +% the first paragraph. +% \begin{macrocode} +\newcommand\subsection{% + \@startsection{subsection}{2}{\z@}% + {-1\baselineskip\@plus -.5\baselineskip \@minus -.25\baselineskip}% +%<+type1> {.25\baselineskip}% +%<+type3> {.01\baselineskip}% + {\reset@font\normalsize\SSectFont}} +% \end{macrocode} +% +% \begin{macro}{\SSectFont} +% The font used to typeset the subsections is stored in this maro. +% \begin{macrocode} +\newcommand\SSectFont{\bfseries} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\subsubsection} +% This gives a normal heading with white space above the heading, +% the title set in |\normalsize\tm|, and no indentation on the +% first paragraph. +% \begin{macrocode} +\newcommand\subsubsection{% + \@startsection{subsubsection}{3}{\z@}% + {-1\baselineskip plus -.5\baselineskip minus -.25\baselineskip}% +%<+type1> {.25\baselineskip}% +%<+type3> {.01\baselineskip}% + {\reset@font\normalsize\SSSectFont}} +% \end{macrocode} +% +% \begin{macro}{\SSSectFont} +% The font used to typeset the subsubsections is stored in this maro. +% \begin{macrocode} +\newcommand\SSSectFont{\rmfamily} +\newcommand\SSSectFont{\slshape} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\paragraph} +% This gives a run-in heading with white space above and to the +% right of the heading, the title set in |\normalsize\slshape|. +% \begin{macrocode} +\newcommand\paragraph{% + \@startsection{paragraph}{4}{\z@}% + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {\reset@font\normalsize\ParaFont}} +% \end{macrocode} +% +% \begin{macro}{\ParaFont} +% The font used to typeset the paragraphs is stored in this maro. +% \begin{macrocode} +\newcommand\ParaFont{\slshape} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\subparagraph} +% This gives an indented run-in heading with white space above and +% to the right of the heading, the title set in +% |\normalsize\slshape|. +% \begin{macrocode} +\newcommand\subparagraph{% + \@startsection{subparagraph}{5}{\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\reset@font\normalsize\SParaFont}} +% \end{macrocode} +% +% \begin{macro}{\SParaFont} +% The font used to typeset the subparagraphs is stored in this maro. +% \begin{macrocode} +\newcommand\SParaFont{\slshape} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\Headingfonts} +% To change the fonts that are used to typeset the title,part, +% chapter and section headings this macro can be used. +% \begin{macrocode} +\newcommand\HeadingFonts[8]{% + \renewcommand\TitleFont{#1}% + \renewcommand\PartFont{#2}% + \renewcommand\ChapFont{#3}% + \renewcommand\SectFont{#4}% + \renewcommand\SSectFont{#5}% + \renewcommand\SSSectFont{#6}% + \renewcommand\ParaFont{#7}% + \renewcommand\SParaFont{#8}} +% \end{macrocode} +% \end{macro} +% +% \subsection{Lists} +% +% \subsubsection{General List Parameters} +% +% The following commands are used to set the default values for the list +% environment's parameters. See the \LaTeX{} manual for an explanation +% of the meanings of the parameters. Defaults for the list +% environment are set as follows. First, |\rightmargin|, +% |\listparindent| and |\itemindent| are set to 0pt. Then, for a Kth +% level list, the command |\@listK| is called, where `K' denotes `i', +% '`i', ... , `vi'. (I.e., |\@listiii| is called for a third-level +% list.) By convention, |\@listK| should set |\leftmargin| to +% |\leftmarginK|. +% +% \begin{macro}{\leftmargin} +% \begin{macro}{\leftmargini} +% \begin{macro}{\leftmarginii} +% \begin{macro}{\leftmarginiii} +% \begin{macro}{\leftmarginiv} +% \begin{macro}{\leftmarginv} +% \begin{macro}{\leftmarginvi} +% For efficiency, level-one list's values are defined at top level, and +% |\@listi| is defined to set only |\leftmargin|. +% +% \begin{macrocode} +\setlength\leftmargini {\unitindent} +\setlength\leftmarginii {\othermargin} +\setlength\leftmarginiii{\othermargin} +\setlength\leftmarginiv {\othermargin} +\setlength\leftmarginv {\othermargin} +\setlength\leftmarginvi {1em} +% \end{macrocode} +% Here we set the top level leftmargin. +% \begin{macrocode} +\setlength\leftmargin {\leftmargini} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\labelsep} +% \begin{macro}{\labelwidth} +% |\labelsep| is the distance between the label and the text of an +% item; |\labelwidth| is the width of the label. +% \begin{macrocode} +\setlength \labelsep {5\p@} +\setlength \labelwidth{\leftmargini} +\addtolength\labelwidth{-\labelsep} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\partopsep} +% When the user leaves a blank line before the environment an extra +% vertical space of |\partopsep| is inserted, in addition to +% |\parskip| and |\topsep|. +% \begin{macrocode} +\setlength\partopsep{\z@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\topsep} +% Extra vertical space, in addition to |\parskip|, added above and +% below list and paragraphing environments. +% \begin{macrocode} +\setlength\topsep{\z@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@beginparpenalty} +% \begin{macro}{\@endparpenalty} +% These penalties are inserted before and after a list or paragraph +% environment. They are set to a bonus value to encourage page +% breaking at these points. +% \begin{macro}{\@itempenalty} +% This penalty is inserted between list items. +% \begin{macrocode} +\@beginparpenalty -\@lowpenalty +\@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@listI} +% \begin{macro}{\@listi} +% |\@listI| defines top level and |\@listi| values of +% |\leftmargin|, |\parsep|, |\topsep|, and |\itemsep| +% +% \begin{macrocode} +\def\@listI{% + \leftmargin\unitindent + \labelsep.5em% + \labelwidth\leftmargin + \advance\labelwidth-\labelsep + \parsep \z@ +%<-type3> \topsep 0\p@ \@plus\p@ +%<+type3> \topsep -.5\parskip \@plus\p@ + \itemsep 0\p@ \@plus1\p@} +\let\@listi\@listI +% \end{macrocode} +% We have to initialise these parameters. +% \begin{macrocode} +\@listi +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@listii} +% \begin{macro}{\@listiii} +% \begin{macro}{\@listiv} +% \begin{macro}{\@listv} +% \begin{macro}{\@listvi} +% Here are the same macros for the higher level lists. +% \begin{macrocode} +\def\@listii {\leftmargin\leftmarginii + \labelsep .5em% + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep +%<-type3> \topsep 0\p@ \@plus\p@ +%<+type3> \topsep -.5\parskip\@plus\p@ + \parsep \z@ + \itemsep \z@ \@plus\p@} +\def\@listiii{\leftmargin\leftmarginiii + \labelsep .5em% + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep +%<-type3> \topsep 0\p@ \@plus\p@ +%<+type3> \topsep -.5\parskip\@plus\p@ + \parsep \z@ + \partopsep \z@ \@plus\p@ + \itemsep \z@ \@plus\p@} +\def\@listiv {\leftmargin\leftmarginiv + \labelsep .5em% + \labelwidth\leftmarginiv% + \advance\labelwidth-\labelsep +%<-type3> \topsep 0\p@ \@plus\p@ +%<+type3> \topsep -.5\parskip\@plus\p@ + \parsep \z@ + \itemsep \z@ \@plus\p@} +\def\@listv {\leftmargin\leftmarginv + \labelsep .5em% + \labelwidth\leftmarginv + \advance\labelwidth-\labelsep% +%<-type3> \topsep 0\p@ \@plus\p@ +%<+type3> \topsep -.5\parskip\@plus\p@ + \parsep \z@ + \itemsep \z@ \@plus\p@} +\def\@listvi {\leftmargin\leftmarginvi + \labelsep .5em + \labelwidth\leftmarginvi + \advance\labelwidth{-\labelsep}% +%<-type3> \topsep 0\p@ \@plus\p@ +%<+type3> \topsep -.5\parskip\@plus\p@ + \parsep \z@ + \itemsep \z@ \@plus\p@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{Enumerate} +% +% The enumerate environment uses four counters: \Lcount{enumi}, +% \Lcount{enumii}, \Lcount{enumiii} and \Lcount{enumiv}, where +% \Lcount{enumN} controls the numbering of the Nth level +% enumeration. +% +% \begin{macro}{\theenumi} +% \begin{macro}{\theenumii} +% \begin{macro}{\theenumiii} +% \begin{macro}{\theenumiv} +% The counters are already defined in \file{latex.dtx}, but their +% representation is changed here. +% +% \begin{macrocode} +\renewcommand\theenumi{\arabic{enumi}} +\renewcommand\theenumii{\alph{enumii}} +\renewcommand\theenumiii{\roman{enumiii}} +\renewcommand\theenumiv{\Alph{enumiv}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\labelenumi} +% \begin{macro}{\labelenumii} +% \begin{macro}{\labelenumiii} +% \begin{macro}{\labelenumiv} +% The label for each item is generated by the commands\\ +% |\labelenumi| ... |\labelenumiv|. +% \begin{macrocode} +\newcommand\labelenumi{\theenumi.} +\newcommand\labelenumii{(\theenumii)} +\newcommand\labelenumiii{\theenumiii.} +\newcommand\labelenumiv{\theenumiv.} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\p@enumii} +% \begin{macro}{\p@enumiii} +% \begin{macro}{\p@enumiv} +% The expansion of |\p@enumN||\theenumN| defines the output of a +% |\ref| command when referencing an item of the Nth level of an +% enumerated list. +% \begin{macrocode} +\renewcommand\p@enumii{\theenumi} +\renewcommand\p@enumiii{\theenumi(\theenumii)} +\renewcommand\p@enumiv{\p@enumiii\theenumiii} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \begin{environment}{enumerate} +% We want to have different label positioning on different levels of +% list. To acheive this we have to redefine the \Lenv{enumerate} +% environment. +% +% \begin{macrocode} +\renewenvironment{enumerate}{% + \ifnum \@enumdepth >3 + \@toodeep + \else + \advance\@enumdepth \@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \list{\csname label\@enumctr\endcsname} + {\usecounter{\@enumctr}% +%<+type1> \ifnum \@listdepth=1 + \if@revlabel + \def\makelabel##1{\hskip .5\unitindent{##1\hfil}}% + \else +%<-type3> \def\makelabel##1{\hfil##1} +%<+type3> \def\makelabel##1{##1\hfil} + \fi +%<*type1> + \else + \def\makelabel##1{##1\hfil}% +%</type1> + \fi + }% + \fi} +% \end{macrocode} +% We try to suppress spaces after these list constructs. +% \begin{macrocode} + {\global\@ignoretrue \endlist} +% \end{macrocode} +% \end{environment} +% +% \subsubsection{Itemize} +% +% \begin{macro}{\labelitemi} +% \begin{macro}{\labelitemii} +% \begin{macro}{\labelitemiii} +% \begin{macro}{\labelitemiv} +% Itemization is controlled by four commands: |\labelitemi|, +% |\labelitemii|, |\labelitemiii|, and |\labelitemiv|, which define +% the labels of thevarious itemization levels: the symbols used are +% bullet, bold en-dash, asterisk and centred dot. +% +% \begin{macrocode} +\newcommand\labelitemi{$\m@th\bullet$} +\newcommand\labelitemii{\bfseries --} +\newcommand\labelitemiii{$\m@th\ast$} +\newcommand\labelitemiv{$\m@th\cdot$} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{environment}{itemize} +% We want to have differen label positioning on different levels of +% list. To acheive this we have to redefine the \Lenv{itemize} +% environment. +% \begin{macrocode} +\renewenvironment{itemize}{% + \ifnum \@itemdepth >3 + \@toodeep + \else + \advance\@itemdepth \@ne + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \list{\csname\@itemitem\endcsname}% + {% +%<+type1> \ifnum \@listdepth=1\relax + \if@revlabel + \def\makelabel##1{\hskip .5\unitindent{##1\hfil}}\else +%<+type1> \def\makelabel##1{\hfil##1} +%<+type3> \def\makelabel##1{##1\hfil} + \fi +%<*type1> + \else + \def\makelabel##1{##1\hfil} + \fi +%</type1> + }% + \fi} +% \end{macrocode} +% We try to suppress spaces after these list constructs. +% \begin{macrocode} + {\global\@ignoretrue \endlist} +% \end{macrocode} +% \end{environment} +% +% \subsubsection{Description} +% +% \begin{environment}{description} +% The description environment is defined here -- while the itemize +% and enumerate environments are defined in \file{latex.dtx}. +% +% \begin{macrocode} +\newenvironment{description} + {\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}} + {\endlist} +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\descriptionlabel} +% To change the formatting of the label, you must redefine +% |\descriptionlabel|. +% +% \begin{macrocode} +\newcommand\descriptionlabel[1]{\hspace\labelsep \bfseries #1} +% \end{macrocode} +% \end{macro} +% +% \subsection{Adapting existing environments} +% +% Because we globally set |\topsep| to zero, we need to modify the +% definitions of a number of environments slightly to get a litle +% whitespace around them. +% +% \begin{environment}{center} +% Add a litle surrounding whitespace. +% \begin{macrocode} +%<*type1> +\def\center + {\topsep=.25\baselineskip \@plus .1\baselineskip + \@minus .1\baselineskip + \trivlist \centering\item[]} +\let\endcenter\endtrivlist +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{flushleft} +% Add a litle surrounding whitespace. +% \begin{macrocode} +\def\flushleft + {\topsep=.25\baselineskip \@plus .1\baselineskip + \@minus .1\baselineskip + \trivlist \raggedright\item[]} +\let\endflushleft=\endtrivlist +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{flushright} +% Add a litle surrounding whitespace. +% \begin{macrocode} +\def\flushright + {\topsep=.25\baselineskip \@plus .1\baselineskip + \@minus .1\baselineskip + \trivlist \raggedleft\item[]} +\let\endflushright=\endtrivlist +%</type1> +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{verbatim} +% In \Lenv{verbatim} we add a little surrounding whitespace, +% --which for \file{rapport3} is negative to +% compensate for the positive |\parskip|-- but also an indent for +% the \file{rapport1} document class. +% \begin{macrocode} +\def\verbatim{% +%<*type1> + \topsep=.25\baselineskip \@plus .1\baselineskip + \@minus .1\baselineskip + \@verbatim + \leftskip\unitindent +%</type1> +%<*type3> + \topsep=-.5\parskip + \@verbatim +%</type3> + \frenchspacing\@vobeyspaces \@xverbatim} +%<+type1>\def\endverbatim{\if@newlist \leavevmode\fi\endtrivlist} +% \end{macrocode} +% \end{environment} +% +% \subsection{Defining new environments} +% +% \subsubsection{Abstract} +% +% \begin{environment}{abstract} +% When we are producing a separate titlepage we also put the +% abstract on a page of its own. It will be centred vertically on +% the page. +% +% \begin{macrocode} +\if@titlepage + \newenvironment{abstract}{% + \titlepage + \null\vfil + \hbox{\SectFont \abstractname} + \noindent\ignorespaces} + {\par\vfil\null\endtitlepage} +% \end{macrocode} +% When we are not making a seperate titlepagewe have to check if we +% are in twocolumn mode. In that case the abstract is set as a +% |\section*|, otherwise the abstract is typeset flushleft, an +% amount |\unitindent| smaller as the normal text. +% \begin{macrocode} +\else + \newenvironment{abstract}{% + \if@twocolumn + \section*{\abstractname}% + \else + \small + \bgroup\rightskip=\unitindent + \hbox{\SectFont \abstractname}% + \noindent\ignorespaces +% \end{macrocode} + \fi} +% \end{macrocode} +% Which implies that the definition of |\end{abstract}| is also +% different. +% \begin{macrocode} + {\if@twocolumn\else\par\egroup\fi} +\fi +% \end{macrocode} +% \end{environment} +% +% \subsubsection{Verse} +% +% \begin{environment}{verse} +% The verse environment is defined by making clever use of the +% list environment's parameters. The user types |\\| to end a line. +% This is implemented by |\let|'ing |\\| equal |\@centercr|. +% +% \begin{macrocode} +\newenvironment{verse} + {\let\\=\@centercr + \list{}{\itemsep\z@ + \itemindent-1.5em% + \listparindent\itemindent + \rightmargin\leftmargin + \advance\leftmargin1.5em}% + \item[]} + {\endlist} +% \end{macrocode} +% \end{environment} +% +% \subsubsection{Quotation} +% +% \begin{environment}{quotation} +% The quotation environment is also defined by making clever use of +% the list environment's parameters. The lines in the environment +% are set smaller than |\textwidth|. The first line of a paragraph +% inside this environment is indented. +% +% \begin{macrocode} +\newenvironment{quotation} + {\list{}{% + \listparindent\z@ + \itemindent\listparindent + \rightmargin\leftmargin + \parsep\z@ \@plus\p@}% + \item[]} + {\endlist} +% \end{macrocode} +% \end{environment} +% +% \subsubsection{Quote} +% +% \begin{environment}{quote} +% The quote environment is like the quotation environment except +% that paragraphs are not indented. +% +% \begin{macrocode} +\newenvironment{quote} + {\list{}{\rightmargin\leftmargin}% + \item[]} + {\endlist} +% \end{macrocode} +% \end{environment} +% +% \subsubsection{Theorem} +% +% \begin{macro}{\@begintheorem} +% \begin{macro}{\@opargbegintheorem} +% \begin{macro}{\@endtheorem} +% These document classes have a slightly modified \Lenv{theorem} +% environment style. Surrounding whitespace is added and an +% initialisation of |\labelsep|. Finally a slanted font instead of +% an italic font is used. +% \begin{macrocode} +\def\@begintheorem#1#2{% + \vskip\baselineskip \labelsep=.5em% + \trivlist + \item[\hskip \labelsep{\bfseries #1\ #2}]\slshape} +\def\@opargbegintheorem#1#2#3{% + \vskip\baselineskip \labelsep=.5em% + \trivlist + \item[\hskip \labelsep{\bfseries #1\ #2\ (#3)}]\slshape} +\def\@endtheorem{\endtrivlist \vskip\baselineskip} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{Titlepage} +% +% \begin{environment}{titlepage} +% In the normal environments, the titlepage environment does nothing +% but start and end a page, and inhibit page numbers. It also resets +% the page number to zero. In two-column style, it still makes a +% one-column page. +% +% \begin{macrocode} +\newenvironment{titlepage} + { + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse\newpage + \fi + \thispagestyle{empty}% + \if@compatibility + \setcounter{page}{0} + \else + \setcounter{page}{1}% + \fi} + {\if@restonecol\twocolumn \else \newpage \fi + \setcounter{page}{1}% + } +% \end{macrocode} +% \end{environment} +% +% \subsubsection{Appendix} +% +% \begin{macro}{\appendix} +% +% The |\appendix| command is not really an environment, it is a +% macro that makes some changes in the way things are done. +% +% In this document class the |\appendix| command must do the +% following: +% \begin{itemize} +% \item reset the chapter and section counters to zero, +% \item set |\@chapapp| to |\appendixname| (for messages), +% \item redefine the chapter counter to produce appendix numbers, +% \item possibly redefine the |\chapter| command if appendix titles +% and headings are to look different from chapter titles and +% headings. +% \end{itemize} +% +% \begin{macrocode} +\newcommand\appendix{\par + \setcounter{chapter}{0}% + \setcounter{section}{0}% + \renewcommand\@chapapp{\appendixname}% + \renewcommand\thechapter{\Alph{chapter}}} +% \end{macrocode} +% \end{macro} +% +% \subsection{Setting parameters for existing environments} +% +% \subsubsection{Array and tabular} +% +% \begin{macro}{\arraycolsep} +% The columns in an array environment are separated by +% 2|\arraycolsep|. +% \begin{macrocode} +\setlength\arraycolsep{5\p@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\tabcolsep} +% The columns in an tabular environment are separated by +% 2|\tabcolsep|. +% \begin{macrocode} +\setlength\tabcolsep{6\p@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\arrayrulewidth} +% The width of rules in the array and tabular environments is given +% by |\arrayrulewidth|. +% \begin{macrocode} +\setlength\arrayrulewidth{.4\p@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\doublerulesep} +% The space between adjacent rules in the array and tabular +% environments is given by |\doublerulesep|. +% \begin{macrocode} +\setlength\doublerulesep{2\p@} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Tabbing} +% +% \begin{macro}{\tabbingsep} +% This controls the space that the |\'| command puts in. (See +% \LaTeX{} manual for an explanation.) +% \begin{macrocode} +\setlength\tabbingsep{\labelsep} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Minipage} +% +% \begin{macro}{\@minipagerestore} +% The macro |\@minipagerestore| is called upon entry to a minipage +% environment to set up things that are to be handled differently +% inside a minipage environment. +% +% \begin{macrocode} +%<+type1>\def\@minipagerestore{\parindent\unitindent} +%<*type3> +\def\@minipagerestore{% + \parskip=.5\baselineskip \@plus .1\baselineskip + \@minus .1\baselineskip} +%</type3> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@mpfootins} +% Minipages have their own footnotes; |\skip||\@mpfootins| plays +% same r\^ole for footnotes in a minipage as |\skip||\footins| does +% for ordinary footnotes. +% +% \begin{macrocode} +\skip\@mpfootins = \skip\footins +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Framed boxes} +% +% \begin{macro}{\fboxsep} +% The space left by |\fbox| and |\framebox| between the box and the +% text in it. +% \begin{macro}{\fboxrule} +% The width of the rules in the box made by |\fbox| and |\framebox|. +% \begin{macrocode} +\setlength\fboxsep{3\p@} +\setlength\fboxrule{.4\p@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsubsection{Equation and eqnarray} +% +% \begin{macro}{\theequation} +% The equation counter will be reset at beginning of a new chapter +% and the equation number will be prefixed by the chapter number. +% +% This code must follow the |\chapter| definition, or more exactly +% the definition of the chapter counter. +% \begin{macrocode} +\@addtoreset{equation}{chapter} +\renewcommand\theequation{\thechapter.\arabic{equation}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\jot} +% |\jot| is the extra space added between lines of an eqnarray +% environment. The default value is used. +% \begin{macrocode} +% \setlength\jot{3pt} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@eqnnum} +% The macro |\@eqnnum| defines how equation numbers are to appear in +% equations. Again the default is used. +% +% \begin{macrocode} +% \def\@eqnnum{(\theequation)} +% \end{macrocode} +% \end{macro} +% +% \subsection{Floating objects} +% +% The file \file{latex.dtx} only defines a number of tools with +% which floating objects can be defined. This is done in the +% document class. It needs to define the following macros for each +% floating object of type \texttt{TYPE} (e.g., \texttt{TYPE} = +% figure). +% +% \begin{description} +% \item[\texttt{\bslash fps@TYPE}] +% The default placement specifier for floats of type +% \texttt{TYPE}. +% +% \item[\texttt{\bslash ftype@TYPE}] +% The type number for floats of type \texttt{TYPE}. Each +% \texttt{TYPE} has associated a unique positive {\texttt +% TYPE} number, which is a power of two. E.g., figures might +% have type number 1, tables type number 2, programs type +% number 4, etc. +% +% \item[\texttt{\bslash ext@TYPE}] +% The file extension indicating the file on which the contents +% list for float type \texttt{TYPE} is stored. For example, +% |\ext@figure| = `lof'. +% +% \item[\texttt{\bslash fnum@TYPE}] +% A macro to generate the figure number for a caption. For +% example, |\fnum@TYPE| == `Figure |\thefigure|'. +% +% \item[\texttt{\bslash @makecaption{\meta{num}}{\meta{text}}}] +% A macro to make a caption, with \meta{num} the value produced +% by |\fnum@...| and \meta{text} the text of the caption. It +% can assume it's in a |\parbox| of the appropriate width. +% This will be used for {\em all} floating objects. +% +% \end{description} +% +% The actual environment that implements a floating object such as +% a figure is defined using the macros |\@float| and |\end@float|, +% which are defined in \file{latex.dtx}. +% +% An environment that implements a single column floating object is +% started with |\@float{|\texttt{TYPE}|}[|\meta{placement}|]| of type +% \texttt{TYPE} with \meta{placement} as the placement specifier. +% The default value of \meta{PLACEMENT} is defined by |\fps@TYPE|. +% +% The environment is ended by |\end@float|. E.g., |\figure| == +% |\@float|{figure}, |\endfigure| == |\end@float|. +% +% \subsubsection{Figure} +% +% Here is the implementation of the figure environment. +% +% \begin{macro}{\c@figure} +% First we have to allocate a counter to number the figures. In +% this document class the figures are numbered per chapter. +% \begin{macrocode} +\newcounter{figure}[chapter] +\renewcommand\thefigure{\thechapter.\@arabic\c@figure} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fps@figure} +% \begin{macro}{\ftype@figure} +% \begin{macro}{\ext@figure} +% \begin{macro}{\num@figure} +% Here are the parameters for the floating objects of type `figure'. +% \begin{macrocode} +\def\fps@figure{tbp} +\def\ftype@figure{1} +\def\ext@figure{lof} +\def\fnum@figure{\figurename~\thefigure} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{environment}{figure} +% \begin{environment}{figure*} +% And the definition of the actual environment. The form with the +% |*| is used for double column figures. +% \begin{macrocode} +\newenvironment{figure} + {\@float{figure}} + {\end@float} +\newenvironment{figure*} + {\@dblfloat{figure}} + {\end@dblfloat} +% \end{macrocode} +% \end{environment} +% \end{environment} +% +% \subsubsection{Table} +% +% Here is the implementation of the table environment. It is very +% much the same as the figure environment. +% +% \begin{macro}{\c@table} +% First we have to allocate a counter to number the tables. In this +% document class the tables are numbered per chapter. +% \begin{macrocode} +\newcounter{table}[chapter] +\renewcommand\thetable{\thechapter.\@arabic\c@table} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fps@table} +% \begin{macro}{\ftype@table} +% \begin{macro}{\ext@table} +% \begin{macro}{\num@table} +% Here are the parameters for the floating objects of type `table'. +% \begin{macrocode} +\def\fps@table{tbp} +\def\ftype@table{2} +\def\ext@table{lot} +\def\fnum@table{\tablename~\thetable} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{environment}{table} +% \begin{environment}{table*} +% And the definition of the actual environment. The form with the +% |*| is used for double column tables. +% \begin{macrocode} +\newenvironment{table} + {\@float{table}} + {\end@float} +\newenvironment{table*} + {\@dblfloat{table}} + {\end@dblfloat} +% \end{macrocode} +% \end{environment} +% \end{environment} +% +% \subsubsection{Captions} +% +% \begin{macro}{\@makecaption} +% The |\caption| command calls |\@makecaption| to format the +% caption of floating objects. It gets two arguments, +% \meta{number}, the number of the floating object and \meta{text}, +% the text of the caption. Usually \meta{number} contains a string +% such as `Figure 3.2'. The macro can assume it is called inside a +% |\parbox| of right width, with |\normalsize|. +% +% \begin{macro}{\abovecaptionskip} +% \begin{macro}{\belowcaptionskip} +% These lengths contain the amount of white space to leave above +% and below the caption. +% \begin{macrocode} +\newlength\abovecaptionskip +\newlength\belowcaptionskip +\setlength\abovecaptionskip{10\p@} +\setlength\belowcaptionskip{0\p@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The definition of this macro is |\long| in order to allow more +% then one paragraph in a caption. +% \begin{macrocode} +\long\def\@makecaption#1#2{% + \vskip\abovecaptionskip +% \end{macrocode} +% We want to see if the caption fits on one line on the page, +% therefore we first typeset it in a temporary box. +% \begin{macrocode} + \sbox\@tempboxa{{\CaptionLabelFont#1:} \CaptionTextFont#2}% +% \end{macrocode} +% We can the measure its width. It that is larger than the current +% |\hsize| we typeset the caption as an ordinary paragraph. +% \begin{macrocode} + \ifdim \wd\@tempboxa >\hsize + {\CaptionLabelFont#1:} \CaptionTextFont#2\par +% \end{macrocode} +% If the caption fits, we center it. +% \begin{macrocode} + \else + \hbox to\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\CaptionLabelFont} +% \begin{macro}{\CaptionTextFont} +% These macros can contain the fonts used for typesetting captions. +% By default they do nothing. +% \begin{macrocode} +\newcommand\CaptionLabelFont{\relax} +\newcommand\CaptionTextFont{\relax} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\CaptionFonts} +% To change the fonts that are used to typeset captions +% this macro can be used. +% \begin{macrocode} +\newcommand\CaptionFonts[2]{% + \renewcommand\CaptionLabelFont{#1}% + \renewcommand\CaptionTextFont{#2}% + } +% \end{macrocode} +% \end{macro} +% +% \subsection{Font changing} +% +% Here we supply the declarative font changing commands that were +% common in \LaTeX\ version 2.09 and earlier. These commands work +% in text mode \emph{and} in math mode. They are provided for +% compatibility, but one should start using the |\text...| and +% |\math...| commands instead. These commands are defined using +% |\DeclareOldFontCommand|, a command with three arguments: the user +% command to be defined; \LaTeX\ commands to execute in text mode +% and \LaTeX\ commands to execute in math mode. +% +% \begin{macro}{\rm} +% \begin{macro}{\tt} +% \begin{macro}{\sf} +% +% The commands to change the family. When in compatibility mode we +% select the `default' font first, to get \LaTeX2.09 behviour. +% \begin{macrocode} +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\bf} +% The command to change to the bold series. One should use +% |\mdseries| to explicitly switch back to medium series. +% \begin{macrocode} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sl} +% \begin{macro}{\it} +% \begin{macro}{\sc} +% +% And the commands to change the shape of the font. The slanted and +% small caps shapes are not available by default as math alphabets, +% so those changes do nothing in math mode. One should use +% |\upshape| to explicitly change back to the upright shape. +% \begin{macrocode} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\relax} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\relax} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\cal} +% \begin{macro}{\mit} +% +% The commands |\cal| and |\mit| should only be used in math mode, +% outside math mode they have no effect. Currently the New Font +% Selection Scheme defines these commands to generate warning +% messages. Therefore we have to define them `by hand'. +% \begin{macrocode} +\renewcommand{\cal}{\protect\pcal} +\newcommand{\pcal}{\@fontswitch{\relax}{\mathcal}} +\renewcommand{\mit}{\protect\pmit} +\newcommand{\pmit}{\@fontswitch{\relax}{\mathnormal}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\pem} +% The definition of |\pem| is changed here to have slanted instead +% of italic fonts. +% \begin{macrocode} +\def\pem{\@nomath\em \ifdim \fontdimen\@ne\font >\z@ + \upshape \else \slshape \fi} +% \end{macrocode} +% \end{macro} +% +% \section{Cross Referencing} +% \subsection{Table of Contents, etc.} +% +% A |\section| command writes a +% |\contentsline{section}{|\meta{title}|}{|\meta{page}|}| command +% on the \file{.toc} file, where \meta{title} contains the +% contents of the entry and \meta{page} is the page number. If +% sections are being numbered, then \meta{title} will be of the +% form |\numberline{|\meta{num}|}{|\meta{heading}|}| where +% \meta{num} is the number produced by |\thesection|. Other +% sectioning commands work similarly. +% +% A |\caption| command in a `figure' environment writes +% +% |\contentsline{figure}{\numberline{|\meta{num}|}{|% +% \meta{caption}|}}{|\meta{page}|}| +% +% on the .\file{lof} file, where \meta{num} is the number produced +% by |\thefigure| and \meta{caption} is the figure caption. It +% works similarly for a `table' environment. +% +% The command |\contentsline{|\meta{name}|}| expands to +% |\l@|\meta{name}. So, to specify the table of contents, we must +% define |\l@chapter|, |\l@section|, |\l@subsection|, ... ; to +% specify the list of figures, we must define |\l@figure|; and so +% on. Most of these can be defined with either the +% |\@dottedtocline| or the |\@regtocline| command, which work as +% follows. +% +% |\@dottedtocline{|\meta{level}|}{|\meta{indent}|}{|^^A +% \meta{numwidth}|}{|^^A +% \meta{title}|}{|\meta{page}|}| +% +% |\@regtocline{|\meta{level}|}{|\meta{title}|}{|\meta{page}|}| +% +% \begin{description} +% \item[\meta{level}] An entry is produced only if\meta{ level} +% $<=$ value of the \Lcount{tocdepth} counter. Note, +% |\chapter| is level 0, |\section| is level 1, etc. +% \item[\meta{indent}] The indentation from the outer left margin +% of the start of the contents line. +% \item[\meta{numwidth}] The width of a box in which the section +% number is to go, if \meta{title} includes a |\numberline| +% command. +% \end{description} +% +% \begin{macro}{\@pnumwidth} +% \begin{macro}{\@tocrmarg} +% \begin{macro}{\@dotsep} +% This command uses the following three parameters, which are set +% with a |\newcommand| (so em's can be used to make them depend upon +% the font). +% \begin{description} +% \item[\texttt{\bslash @pnumwidth}] The width of a box in which the +% page number is put. +% \item[\texttt{\bslash @tocrmarg}] The right margin for multiple +% line entries. One wants |\@tocrmarg| > or = |\@pnumwidth| +% \item[\texttt{\bslash @dotsep}] Separation between dots, in mu +% units. Should be defined as a number like 2 or 1.7 +% \end{description} +% +% \begin{macrocode} +\newcommand\@pnumwidth{1.55em} +\newcommand\@tocrmarg {2.55em} +\newcommand\@dotsep{4.5} +\setcounter{tocdepth}{2} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{Table of Contents} +% +% \begin{macro}{\tableofcontents} +% This macro is used to request that \LaTeX{} produces a table of +% contents. The tables of contents, figures etc. are always set in +% single-column style. +% +% \begin{macrocode} +\newcommand\tableofcontents{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi +% \end{macrocode} +% The title is set using the |\chapter*| command, making sure that +% the running head --if one is required-- contains the right +% information. +% \begin{macrocode} + \chapter*{\contentsname + \@mkboth{\uppercase{\contentsname}}{\uppercase{\contentsname}}}% +% \end{macrocode} +% The the actual table of contents is made by calling +% |\@starttoc{toc}|. After that we restore twocolumn mode if +% necessary. +% \begin{macrocode} + \@starttoc{toc}% + \if@restonecol\twocolumn\fi + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@starttoc} +% The internal \LaTeXe macro |\@starttoc| needs to be adapted for +% the \file{rapport3} document classes,in order to deal with a the +% fact that for these document classes the |\parskip| is normally +% non-zero. We don't want that in the table of contents. +% \begin{macrocode} +%<*type3> +\def\@starttoc#1{\begingroup + \makeatletter + \parskip\z@ + \@input{\jobname.#1}% + \if@filesw + \expandafter\newwrite\csname tf@#1\endcsname + \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax + \fi \global\@nobreakfalse \endgroup} +%</type3> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@regtocline} +% These document classes use a different format for the table of +% contents than the standard classes from which they were +% developped. In order to acheive this different format we defined +% the macro |\@regtocline|. +% \begin{macrocode} +\newcommand\@regtocline[3]{% + \ifnum #1>\c@tocdepth + \else + \vskip \z@ plus .2pt + {\hangindent\z@ \@afterindenttrue \interlinepenalty\@M + \leftskip\unitindent + \rightskip=\unitindent plus 1fil + \parfillskip=0cm + \@tempdima=\unitindent + \parindent\z@ + \leavevmode + \hbox{}\hskip -\leftskip\relax#2\nobreak + \hskip 1em \nobreak{\slshape #3}\par + }% + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\toc@font} +% The changed definition of |\@sect| that we use, selects a +% different font for the table of contents for the various header +% levels. It does this using |\toc@font|. +% \begin{macrocode} +\if@oldtoc + \newcommand\toc@font[1]{\relax} +\else + \newcommand\toc@font[1]{% + \ifcase#1\relax + \bfseries + \or\slshape + \or\rmfamily + \fi} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\toc@case} +% The entries for parts are typeset in capital letters in the new +% style of the table of contents. In the old style this isn't +% done. The macro |\toc@case| is used to switch this. +% \begin{macrocode} +\if@oldtoc + \newcommand\toc@case{\relax} +\else + \newcommand\toc@case{\uppercase} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@part} +% Each sectioning command needs an additional macro to format its +% entry in the table of contents, as described above. The macro for +% the entry for parts is defined in a special way. +% +% First we make sure that if a pagebreak should occur, it occurs +% {\em before} this entry. Also a little whitespace is added and a +% group begun to keep changes local. +% +% First we have the definition from the standard classes. +% \begin{macrocode} +\if@oldtoc +\newcommand\l@part[2]{% + \addpenalty{-\@highpenalty}% + \addvspace{2.25em \@plus\p@}% + \begingroup +% \end{macrocode} +% The macro |\numberline| requires that the width of the box that +% holds the part number is stored in \LaTeX's scratch register +% |\@tempdima|. Therefore we put it there. +% \begin{macrocode} + \setlength\@tempdima{3em}% +% \end{macrocode} +% The we set |\parindent| to 0pt and use |\rightskip| to leave +% enough room for the pagenumbers. To prevent overfull box messages +% the |\parfillskip| is set to a negative value. +% \begin{macrocode} + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth +% \end{macrocode} +% Now we can set the entry, in a large bold font. We make sure to +% leave vertical mode, set the part title and add the pagenumber, +% set flush right. +% \begin{macrocode} + {\leavevmode + \large \bfseries #1\hfil \hbox to\@pnumwidth{\hss #2}}\par +% \end{macrocode} +% Prevent a pagebreak immediately after this entry, but use +% |\everypar| to reset the |\if@nobreak| switch. Finally we close +% the group. +% \begin{macrocode} + \nobreak + \global\@nobreaktrue + \everypar{\global\@nobreakfalse\everypar{}} + \endgroup} +% \end{macrocode} +% Then we can introduce our new definition. +% \begin{macrocode} +\else + \newcommand\l@part{\addpenalty{-\@highpenalty} + \addvspace{2.25em \@plus \p@}\@regtocline{0}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@chapter} +% This macro formats the entries in the table of contents for +% chapters. It is very similar to |\l@part| +% +% First we make sure that if a pagebreak should occur, it occurs +% {\em before} this entry. Also a little whitespace is added and a +% group begun to keep changes local. +% +% Again we first present the `standard' definition +% \begin{macrocode} +\if@oldtoc +\newcommand\l@chapter[2]{% + \addpenalty{-\@highpenalty}% + \vskip 1.0em \@plus\p@ +% \end{macrocode} +% +% The macro |\numberline| requires that the width of the box that +% holds the part number is stored in \LaTeX's scratch register +% |\@tempdima|. Therefore we put it there. We begin a group, and +% change some of the paragraph parameters. +% \begin{macrocode} + \setlength\@tempdima{1.5em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth +% \end{macrocode} +% Then we leave vertical mode and switch to a bold font. +% \begin{macrocode} + \leavevmode \bfseries +% \end{macrocode} +% Because we do not use |\numberline| here, we have do some fine +% tuning `by hand', before we can set the entry. We discourage but +% not disallow a pagebreak immediately after a chapter entry. +% \begin{macrocode} + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par + \penalty\@highpenalty + \endgroup} +% \end{macrocode} +% Then we present our new definition. +% \begin{macrocode} +\else + \newcommand\l@chapter{\@regtocline{0}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@section} +% In this document class the definition for +% |\l@section| is very simple. +% \begin{macrocode} +\if@oldtoc + \newcommand\l@section {\@dottedtocline{1}{1.5em}{2.3em}} +\else + \newcommand\l@section {\@regtocline{1}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@subsection} +% \begin{macro}{\l@subsubsection} +% \begin{macro}{\l@paragraph} +% \begin{macro}{\l@subparagraph} +% All lower level entries are defined using the macro +% |\@dottedtocline| or |\@regtocline| (see above). +% \begin{macrocode} +\if@oldtoc + \newcommand\l@subsection {\@dottedtocline{2}{3.8em}{3.2em}} + \newcommand\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}} + \newcommand\l@paragraph {\@dottedtocline{4}{10em}{5em}} + \newcommand\l@subparagraph {\@dottedtocline{5}{12em}{6em}} +\else + \newcommand\l@subsection {\@regtocline{2}} + \newcommand\l@subsubsection{\@regtocline{3}} + \newcommand\l@paragraph {\@regtocline{4}} + \newcommand\l@subparagraph {\@regtocline{5}} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{List of figures} +% +% \begin{macro}{\listoffigures} +% This macro is used to request that \LaTeX{} produces a list of +% figures. It is very similar to |\tableofcontents|. +% +% \begin{macrocode} +\newcommand\listoffigures{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \chapter*{\listfigurename + \@mkboth{\uppercase{\listfigurename}}% + {\uppercase{\listfigurename}}}% + \@starttoc{lof}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@figure} +% This macro produces an entry in the list of figures. +% \begin{macrocode} +\if@oldtoc + \newcommand\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} +\else + \newcommand\l@figure{\@regtocline{1}} +\fi +% \end{macrocode} +% \end{macro} +% +% \subsubsection{List of tables} +% +% \begin{macro}{\listoftables} +% This macro is used to request that \LaTeX{} produces a list of +% tables. It is very similar to |\tableofcontents|. +% +% \begin{macrocode} +\newcommand\listoftables{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \chapter*{\listtablename + \@mkboth{\uppercase{\listtablename}}{\uppercase{\listtablename}}}% + \@starttoc{lot}% + \if@restonecol\twocolumn\fi + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@table} +% This macro produces an entry in the list of tables. +% \begin{macrocode} +\let\l@table\l@figure +% \end{macrocode} +% \end{macro} +% +% \subsection{Bibliography} +% +% \begin{macro}{\bibindent} +% The ``open'' bibliography format uses an indentation of +% |\bibindent|. +% \begin{macrocode} +\newdimen\bibindent +\bibindent=1.5em +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newblock} +% This is a dummy definition for this macro which is used in the +% \textsf{thebibliography} environment. +% \begin{macrocode} +\newcommand\newblock{} +% \end{macrocode} +% \end{macro} +% +% \begin{environment}{thebibliography} +% The `thebibliography' environment executes the following +% commands: +% +% |\renewcommand\newblock{\hskip .11em \@plus .33em \@minus .07em}| +% -- Defines the ``closed'' format, where the blocks (major units +% of information) of an entry run together. +% +% |\sloppy| -- Used because it's rather hard to do line breaks in +% bibliographies, +% +% |\sfcode`\.=1000\relax| -- +% Causes a `.' (period) not to produce an end-of-sentence space. +% +% The implementation of this environment is based on the generic +% list environment. It uses the \Lcount{enumiv} counter internally +% to generate the labels of the list. +% +% When an empty `thebibliography' environment is found, a warning +% is issued. +% +% \begin{macrocode} +\newenvironment{thebibliography}[1] + {\chapter*{\bibname + \@mkboth{\uppercase{\bibname}}% + {\uppercase{\bibname}}}% + \list{\@biblabel{\arabic{enumiv}}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \if@openbib + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + \fi + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\arabic{enumiv}}}% + \if@openbib + \renewcommand\newblock{\par} + \else + \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`\.=\@m} + {\def\@noitemerr{\@warning{Empty `thebibliography' environment}}% + \endlist} +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\@biblabel} +% The label for a |\bibitem[...]| command is produced by this +% macro. The default from \file{latex.dtx} is used. +% \begin{macrocode} +% \renewcommand\@biblabel[1]{[#1]\hfill} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@cite} +% The output of the |\cite| command is produced by this macro. The +% default from \file{latex.dtx} is used. +% \begin{macrocode} +% \renewcommand\@cite[1]{[#1]} +% \end{macrocode} +% \end{macro} +% +% \subsection{The index} +% +% \begin{environment}{theindex} +% The environment `theindex' can be used for indices. It makes an +% index with two columns, with each entry a seperate paragraph. At +% the user level the commands |\item|, |\subitem| and |\subsubitem| +% are used to produce index entries of various levels. When a new +% letter of the alphabet is encountered an amount of |\indexspace| +% white space can be added. +% +% \begin{macrocode} +\newenvironment{theindex} + {\if@twocolumn + \@restonecolfalse + \else + \@restonecoltrue + \fi + \columnseprule \z@ + \columnsep 35\p@ + \twocolumn[\@makeschapterhead{\indexname}]% + \@mkboth{\uppercase{\indexname}}% + {\uppercase{\indexname}}% + \thispagestyle{plain}\parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \let\item\@idxitem} +% \end{macrocode} +% When the document continues after the index and it was a one +% column document we have to switch back to one column after the +% index. +% \begin{macrocode} + {\if@restonecol\onecolumn\else\clearpage\fi} +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\@idxitem} +% \begin{macro}{\subitem} +% \begin{macro}{\subsubitem} +% Thsee macros are used to format the entries in the index. ^^AA ??? +% \begin{macrocode} +\newcommand\@idxitem {\par\hangindent 40\p@} +\newcommand\subitem {\par\hangindent 40\p@ \hspace*{20\p@}} +\newcommand\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\indexspace} +% The amount of white space that is inserted between `letter +% blocks' in the index. +% \begin{macrocode} +\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax} +% \end{macrocode} +% \end{macro} +% +% \subsection{Footnotes} +% +% \begin{macro}{\footnoterule} +% Usually, footnotes are separated from the main body of the text +% by a small rule. This rule is drawn by the macro |\footnoterule|. +% We have to make sure that the rule takes no vertical space (see +% \file{plain.tex}) so we compensate for the natural heigth of the +% rule of 0.4pt by adding the right amount of vertical skip. +% +% To prevent the rule from colliding with the footnote we first add +% a little negative vertical skip, then we put the rule and add +% some positive vertical skip. +% \begin{macrocode} +\renewcommand\footnoterule{% + \kern-3\p@ + \kern.5\baselineskip + \hrule\@width\unitindent + \kern.4\baselineskip +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\c@footnote} +% Footnotes are numbered within chapters. +% \begin{macrocode} +% \newcounter{footnote} +\@addtoreset{footnote}{chapter} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@makefntext} +% The footnote mechanism of \LaTeX{} calls the macro |\@makefntext| +% to produce the actual footnote. The macro gets the text of the +% footnote as its argument and should use |\@thefnmark| as the mark +% of the footnote. The macro |\@makefntext|is called when +% effectively inside a |\parbox| of width |\columnwidth| (i.e., +% with |\hsize| = |\columnwidth|). +% +% An example of what can be achieved is given by the following piece +% of \TeX\ code. +% \begin{verbatim} +% \long\def\@xmakefntext#1#2{% +% %<-type3> \parindent=.5\unitindent +% %<+type3> \parindent=\z@\parskip=.5\baselineskip +% \def\labelitemi{--}\@revlabeltrue +% {\setbox0=\hbox {#1\hskip.5em plus 1fil}% +% \dimen0=2\wd0 +% \ifdim\dimen0>\unitindent +% \global\unitindent=\dimen0 +% \@indentset +% \fi}% +% \@setpar{\@@par +% \@tempdima \hsize +% \advance\@tempdima-.5\unitindent +% \parshape \@ne .5\unitindent \@tempdima}% +% \par +% \noindent\llap{\hbox to .5\unitindent{#1\hfil}}#2} +% \end{verbatim} +% The effect of this definition is that all lines of the footnote +% are indented by 10pt, while the first line of a new paragraph is +% indented by 1em. To change these dimensions, just substitute the +% desired value for `10pt' (in both places) or `1em'. The mark is +% flushright against the footnote. +% +% In these document classes we use a simpler macro, in which the +% footnote text is set like an ordinary text paragraph, with no +% indentation except on the first line of the footnote. Thus, all +% the macro must do is set |\parindent| to the appropriate value +% for succeeding paragraphs and put the proper indentation before +% the mark. We change the label of itemized lists inside footnotes +% and need to check that the |\unitindent| is large enough for our +% purposes. +% +% For most of the document classes produced from this file we need +% a slightly modified |\@makefntext| on the title page, so we +% introduce an extra macro, |\@xmakefntext|. +% \begin{macrocode} +\def\@makefntext{\@xmakefntext{$\m@th\@thefnmark$.}} +\long\def\@xmakefntext#1{% + \parindent\z@ + \def\labelitemi{--}\@revlabeltrue + {\setbox0=\hbox {#1\hskip.5em plus 1fil} + \dimen0=2\wd0\relax + \ifdim\dimen0>\unitindent + \global\unitindent=\dimen0\relax + \@indentset + \fi} + \leavevmode\hbox to .5\unitindent{#1\hfil}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@makefnmark} +% The footnote markers that are printed in the text to point to the +% footnotes should be produced by the macro |\@makefnmark|. We use +% the default definition for it. +% \begin{macrocode} +%\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}} +% \end{macrocode} +% \end{macro} +% +% \section{Initialization} +% +% \subsection{Words} +% +% \begin{macro}{\contentsname} +% \begin{macro}{\listfigurename} +% \begin{macro}{\listtablename} +% \begin{macro}{\refname} +% \begin{macro}{\bibname} +% \begin{macro}{\indexname} +% \begin{macro}{\figurename} +% \begin{macro}{\tablename} +% \begin{macro}{\partname} +% \begin{macro}{\chaptername} +% \begin{macro}{\appendixname} +% \begin{macro}{\abstractname} +% \begin{macro}{\seename} +% \begin{macro}{\andname} +% This document class is for documents prepared in the English language. +% To prepare a version for another language, various English words must +% be replaced. All the English words that require replacement are +% defined below in command names. +% +% \begin{macrocode} +\newcommand\contentsname{Contents} +\newcommand\listfigurename{List of Figures} +\newcommand\listtablename{List of Tables} +\newcommand\bibname{Bibliography} +\newcommand\indexname{Index} +\newcommand\figurename{Figure} +\newcommand\tablename{Table} +\newcommand\partname{Part} +\newcommand\chaptername{Chapter} +\newcommand\appendixname{Appendix} +\newcommand\abstractname{Abstract} +\newcommand\seename{see} +\newcommand\andname{and} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Date} +% +% \begin{macro}{\today} +% This macro uses the \TeX\ primitives |\month|, |\day| and |\year| +% to provide the date of the \LaTeX-run. +% \begin{macrocode} +\newcommand\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} +% \end{macrocode} +% \end{macro} +% +% \subsection{Two column mode} +% +% \begin{macro}{\columnsep} +% This gives the distance between two columns in two column mode. +% \begin{macrocode} +\setlength\columnsep{10\p@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\columnseprule} +% This gives the width of the rule between two columns in two +% column mode. We have no visible rule. +% \begin{macrocode} +\setlength\columnseprule{0\p@} +% \end{macrocode} +% \end{macro} +% +% \subsection{The page style} +% +% We have \pstyle{plain} pages unless the user specified +% otherwise. We use arabic pagenumbers. +% \begin{macrocode} +\pagestyle{plain} +\pagenumbering{arabic} % Arabic page numbers +% \end{macrocode} +% +% When the \Lopt{twocolumn} option was specified we call +% |\twocolumn| to activate this mode. We try to make each column as +% long as the others, but call |sloppy| to make our life easier. +% \begin{macrocode} +\if@twocolumn + \twocolumn + \sloppy + \flushbottom +% \end{macrocode} +% Normally we call |\onecolumn| to initiate typesetting in one +% column. +% \begin{macrocode} +\else + \onecolumn +\fi +% \end{macrocode} +% +% \begin{macro}{\frenchspacing} +% Controls the amount of space after a punctuation mark. +% \begin{macrocode} +\frenchspacing +%</class> +% \end{macrocode} +% \end{macro} +% +% \Finale +% +\endinput +% diff --git a/macros/latex/contrib/ntgclass/wijzer.dtx b/macros/latex/contrib/ntgclass/wijzer.dtx new file mode 100644 index 0000000000..9033f939ac --- /dev/null +++ b/macros/latex/contrib/ntgclass/wijzer.dtx @@ -0,0 +1,3560 @@ +% \CheckSum{0} +% +% +% \iffalse +%<*dtx> +\Providesfile{wijzer.dtx} +%</dtx> +%<class>\NeedsTeXFormat{LaTeX2e} +%<class>\ProvidesClass{wijzer} +%<driver>\ProvidesFile{wijzer.drv} +%\Providesfile{wijzer.dtx} + [PTT Research computer handboeken] +% +%<*driver> +\documentclass{ptt-ltxdoc} +\usepackage[dutch]{babel} +\CodelineNumbered +\CodelineIndex +\EnableCrossrefs +\DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} +\DoNotIndex{\@centercr,\@cite} +\DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} +\DoNotIndex{\@input,\@ixpt,\@m} +\DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} +\DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} +\DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} +\DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} +\DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} +\DoNotIndex{\advance,\Alph,\alph} +\DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} +\DoNotIndex{\bullet} +\DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} +\DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} +\DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} +\DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} +\DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} +\DoNotIndex{\fbox} +\DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} +\DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} +\DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} +\DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} +\DoNotIndex{\input} +\DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} +\DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} +\DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} +\DoNotIndex{\NeedsTeXFormat,\newdimen} +\DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} +\DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} +\DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} +\DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} +\DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} +\DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} +\DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} +\DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} +\DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} +\DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} +\DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} +\DoNotIndex{\viipt,\vipt,\vskip,\vspace} +\DoNotIndex{\wd,\xiipt,\year,\z@} +\newcommand{\m}[1]{\mbox{$\langle$\it #1\/$\rangle$}} +\providecommand{\marg}[1]{{\ttfamiliy\char`\{}\m{#1}{\ttfamiliy\char`\}}} +\providecommand{\oarg}[1]{{\ttfamiliy[}\m{#1}{\ttfamiliy]}} +\begin{document} +\DocInput{wijzer.dtx} +\clearpage +\PrintIndex +\end{document} +%</driver> +% \fi +% +% \GetFileInfo{wijzer.dtx} +% \title{Document Class \texttt{wijzer}} +% \author{Johannes Braams} +% \date{Version~\fileversion, dated~\filedate} +% \maketitle +% \tableofcontents +% \clearpage +% +% \StopEventually{} ^^A +% +% \section{Introduction} +% +% \section{The {\sc docstrip} modules} +% +% The following modules are used in the implementation to direct +% {\sc docstrip} in generating the external files: +% \begin{center} +% \begin{tabular}{ll} +% class & produce the document class\\ +% type1 & produce the `1' variants of the classes\\ +% type3 & produce the `3' variants of the classes\\ +% driver & produce a documentation driver file \\ +% \end{tabular} +% \end{center} +% +% \section{Initial Code} +% +% In this part we define a few commands that are used later on. +% +% \begin{macro}{\@ptsize} +% This control sequence is used to store the second digit of the +% pointsize we are typesetting in. So, normally, it's value is one +% of 0, 1 or 2. +% \begin{macrocode} +%<*class> +\newcommand\@ptsize{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@restonecol} +% When the document has to printed in two columns, we sometimes +% have to temporarily switch to one column. This switch is used to +% remember to switch back. +% \begin{macrocode} +\newif\if@restonecol +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@titlepage} +% A switch to indicate if a titlepage has to be produced. +% \begin{macrocode} +\newif\if@titlepage +\@titlepagetrue +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@openright} +% A switch to indicate if chapters must start on a right-hand page. +% The default for the report class is no; for the book class it's +% yes. +% \begin{macrocode} +\newif\if@openright +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@openbib} +% A switch to indicate if the bibliography has to be produced in +% the ``open'' format. The default is to use a ``closed'' format. +% \begin{macrocode} +\newif\if@openbib +\@openbibfalse +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@oldtoc} +% A switch to indicate if `old' layout of the table of contents +% should be produced. These document classes normally produce a +% table of contents that looks quite different from what the +% standard classes produce. +% \begin{macrocode} +\newif\if@oldtoc +\@oldtocfalse +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@allcaps} +% By default the text on the titlepage is set in capital letters. +% This can be disabled by the option \Lopt{mctitle}, which sets the +% switch |\if@allcaps| to false. +% \begin{macrocode} +\newif\if@allcaps +% \end{macro} +% +% \begin{macro}{\if@titlecentered} +% In the document classes \file{wijzer3} the +% default placement of the title that is produced by |\maketitle| +% is flushleft. This can be changed by the switch +% |\if@titlecentered|. +% \begin{macrocode} +%<+type3>\newif\if@titlecentered +%<+type3>\@titlecenteredfalse +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@revlabel} +% These document classes need to be able to change the positioning +% of the label in labeled lists. This switch is used for that +% purpose. +% \begin{macrocode} +\newif\if@revlabel +% \end{macrocode} +% \end{macro} +% +% \section{Declaration of Options} +% +% +% \subsection{Setting Paper Sizes} +% +% The variables |\paperwidth| and |\paperheight| should reflect the +% physical paper size after trimming. For desk printer output this +% is usually the real paper size since there is no post-processing. +% Classes for real book production will probably add other paper +% sizes and additionally the production of crop marks for trimming. +% \begin{macrocode} +\DeclareOption{a4paper} + {\setlength\paperheight {297mm}% + \setlength\paperwidth {210mm}} +\DeclareOption{a5paper} + {\setlength\paperheight {210mm}% + \setlength\paperwidth {148mm}} +\DeclareOption{b5paper} + {\setlength\paperheight {250mm}% + \setlength\paperwidth {176mm}} +\DeclareOption{letterpaper} + {\setlength\paperheight {11in}% + \setlength\paperwidth {8.5in}} +\DeclareOption{legalpaper} + {\setlength\paperheight {14in}% + \setlength\paperwidth {8.5in}} +\DeclareOption{executivepaper} + {\setlength\paperheight {10.5in}% + \setlength\paperwidth {7.25in}} +% \end{macrocode} +% +% The option \Lopt{landscape} switches the values of |\paperheight| +% and |\paperwidth|, assuming the dimensions wer given for portrait +% paper. +% \begin{macrocode} +\DeclareOption{landscape} + {\setlength\@tempdima {\paperheight}% + \setlength\paperheight {\paperwidth}% + \setlength\paperwidth {\@tempdima}} +% \end{macrocode} +% +% \subsection{Choosing the type size} +% +% The type size options are handled by defining |\@ptsize| to contain +% the last digit of the size in question and branching on |\ifcase| +% statements. This is done for historical reasons to stay compatible +% with other packages that use the |\@ptsize| variable to select +% special actions. It makes the declarations of size options less +% than 10pt difficult, although one can probably use \texttt{9} +% and \texttt{8} assuming that a class won't define both +% \Lopt{8pt} and \Lopt{18pt} options. +% +% \begin{macrocode} +\DeclareOption{10pt}{\renewcommand\@ptsize{0}} +\DeclareOption{11pt}{\renewcommand\@ptsize{1}} +\DeclareOption{12pt}{\renewcommand\@ptsize{2}} +% \end{macrocode} +% +% +% \subsection{Two-side or one-side printing} +% +% For two-sided printing we use the switch |\if@twoside|. In +% addition we have to set the |\if@mparswitch| to get any margin +% paragraphs into the outside margin. +% \begin{macrocode} +\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse} +\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue} +% \end{macrocode} +% +% +% \subsection{Draft option} +% +% If the user requests \Lopt{draft} we show any overfull boxes. +% We could probably add some more interesting stuff to this option. +% \begin{macrocode} +\DeclareOption{draft}{\setlength\overfullrule{5pt}} +\DeclareOption{final}{\setlength\overfullrule{0pt}} +% \end{macrocode} +% +% \subsection{Titlepage option} +% An article usually has no separate titlepage, but the user can +% request one. +% \begin{macrocode} +\DeclareOption{titlepage}{\@titlepagetrue} +\DeclareOption{notitlepage}{\@titlepagefalse} +% \end{macrocode} +% +% \subsection{openright option} +% This option determines whether or not a chapter must start on +% a right-hand page +% request one. +% \begin{macrocode} +\DeclareOption{openright}{\@openrighttrue} +\DeclareOption{openany}{\@openrightfalse} +% \end{macrocode} +% +% For these document classes there used to be a file +% \file{voorwerk.sty} which was a replacement for +% \file{titlepag.sty}. Therefore we also have the option +% \Lopt{voorwerk}. +% \begin{macrocode} +\DeclareOption{voorwerk}{\@titlepagetrue} +\DeclareOption{geenvoorwerk}{\@titlepagefalse} +% \end{macrocode} +% +% +% \subsection{Table of contents formatting} +% +% This document class uses a new layout for the table of contents, +% but in order to maintain compatibility with the standard \LaTeXe +% document classes we supply an extra option: \Lopt{oldtoc}. If +% this option is specified the switch |\if@oldtoc| will be set +% true. +% \begin{macrocode} +\DeclareOption{oldtoc}{\@oldtoctrue} +% \end{macrocode} +% +% \subsection{Formatting of the title} +% +% The option \Lopt{titlecentered} changes the behaviour of the +% |\maketitle| command. It then produces a title like it does for +% the \file{artikel1} document class. +% \begin{macrocode} +%<+type3>\DeclareOption{titlecentered}{\@titlecenteredtrue} +% \end{macrocode} +% +% In this document class the titlepage uses all capital +% letters. The option \Lopt{mctitle} (for `mixed case') prevents +% this. +% \begin{macrocode} +\DeclareOption{mctitle}{\@allcapsfalse} +\DeclareOption{uctitle}{\@allcapstrue} +% \end{macrocode} +% +% \subsection{Twocolumn printing} +% +% Two-column and one-column printing is again realized via a switch. +% \begin{macrocode} +\DeclareOption{onecolumn}{\@twocolumnfalse} +\DeclareOption{twocolumn}{\@twocolumntrue} +% \end{macrocode} +% +% \subsection{Equation numbering on the left} +% +% The option \Lopt{leqno} can be used to get the equation numbers +% on the left side of the equation. +% \begin{macrocode} +\DeclareOption{leqno}{\input{leqno.clo}} +% \end{macrocode} +% +% \subsection{Flush left displays} +% +% The option \Lopt{fleqn} redefines the displayed math environmens +% in such a way that they come out flush left, with an indentation +% of |\mathindent| from the prevailing left margin. +% \begin{macrocode} +\DeclareOption{fleqn}{\input{fleqn.clo}} +% \end{macrocode} +% +% \subsection{Open bibliography} +% +% The option \Lopt{openbib} produces the ``open'' bibliography +% style, in which each block starts on a new line, and succeeding +% lines in a block are indented by |\bibindent|. +% \begin{macrocode} +\DeclareOption{openbib}{\@openbibtrue} +% \end{macrocode} +% +% +% \section{Executing Options} +% +% Here we execute the default options to initialize certain +% variables. +% \begin{macrocode} +\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,uctitle,openany} +% \end{macrocode} +% +% The |\ProcessOptions| command causes the execution of the code +% for every option \Lopt{FOO} +% which is declared and for which the user typed +% the \Lopt{FOO} option in his +% |\documentclass| command. For every option \Lopt{BAR} he typed, +% which is not declared, the option is assumed to be a global option. +% All options will be passed as document options to any +% |\usepackage| command in the document preamble. +% \begin{macrocode} +\ProcessOptions +% \end{macrocode} +% Now that all the options have been executed we can load the +% chosen class option file that contains all size dependent code. +% \begin{macrocode} +\input{ntg1\@ptsize.clo} +% \end{macrocode} +% +% \section{Loading Packages} +% +% These class files do not load additional packages. +% +% +% \section{Document Layout} +% \label{sec:maincode} +% +% In this section we are finally dealing with the nasty typographical +% details. +% +% \subsection{Paragraphing} +% +% \begin{macro}{\lineskip} +% \begin{macro}{\normallineskip} +% These parameters control \TeX's behaviour when two lines tend to +% come too close together. +% \begin{macrocode} +\setlength\lineskip{1\p@} +\setlength\normallineskip{1\p@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\baselinestretch} +% This is used as a multiplier for |\baselineskip|. The default is +% to {\em not\/} stretch the baselines. +% \begin{macrocode} +\renewcommand\baselinestretch{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\unitindent} +% These document classes all use a single dimension for a number of +% layout parameters: +% \begin{itemize} +% \item the label width in section heading, +% \item the |\parindent| +% \item the footnote label indent (= half |\unitindent|) +% \item listindent on the first level +% \end{itemize} +% \begin{macrocode} +\newdimen\unitindent +% \end{macrocode} +% The default setting accomodates three levels of single digit +% section numbering. +% \begin{macrocode} +{\setbox0\hbox{\normalsize\rmfamily 2.2.2\hskip.5em} + \global\unitindent=\wd0} +% \end{macrocode} +% +% \begin{macro}{\othermargin} +% Other indentations are maximal label width plus white space. +% \begin{macrocode} +\newdimen\othermargin +{\setbox0\hbox{\normalsize (m)\hskip.6em}\global\othermargin=\wd0} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{if@needwriteindent} +% If this is not enough, a new width is calculated, set, and the +% file{.aux} file contains an instruction that will set +% |\unitindent| on the next run. +% +% For this we need a switch +% \begin{macrocode} +\newif\if@needwriteindent +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@indentset} +% And a command that sets the various parameters. +% \begin{macrocode} +\newcommand\@indentset{% +%<-type3> \global\parindent=\unitindent + \global\leftmargini=\unitindent + \global\@needwriteindenttrue} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@writeindent} +% The |\end{document}| command will call |\@writeindent| to write +% the final width of |\unitindent| on the \file{.aux} file. Also a +% command is written to set |\unitindent|. To be compatible with +% other document classes a check is written to the \file{.aux} file +% for the existence of |\unitindent|. This prevents nasty errors +% when another document class is used. +% \begin{macrocode} +\newcommand\@writeindent[1]{\immediate\write\@mainaux + {\string\@ifundefined{unitindent}{\string\newdimen\string\unitindent + \let\string\@indentset\relax}{}} + \immediate\write\@mainaux{\global\string\unitindent=#1\string\relax + \string\@indentset \string\relax}} +% \end{macrocode} +% \end{macro} +% +% We need to use the hook into |\end{document}| to write the final +% value of |\unitindent| om the file{.aux} file for the next run. +% \begin{macrocode} +\AtEndDocument{% + \if@filesw + \if@needwriteindent + \@writeindent{\the\unitindent} + \fi + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\parskip} +% \begin{macro}{\parindent} +% |\parskip| gives extra vertical space between paragraphs and +% |\parindent| is the width of the paragraph indentation. The value +% of |\parindent| depends on whether we are in two column mode. +% \begin{macrocode} +%<*type1> +\setlength\parskip{0\p@} +\setlength\parindent{\unitindent} +%</type1> +%<*type3> +\setlength\parskip{.5\baselineskip \@plus .1\baselineskip + \@minus .1\baselineskip} +\setlength\parindent{\z@} +%</type3> +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@lowpenalty} +% \begin{macro}{\@medpenalty} +% \begin{macro}{\@highpenalty}% +% The commands |\nopagebreak| and |\nolinebreak| put in penalties +% to discourage these breaks at the point they are put in. +% They use |\@lowpenalty|, |\@medpenalty| or |\@highpenalty|, +% dependent on their argument. +% \begin{macrocode} +\@lowpenalty 51 +\@medpenalty 151 +\@highpenalty 301 +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\clubpenalty} +% \begin{macro}{\widowpenalty} +% These penalties are use to discourrage club and widow lines. +% Because we use their default values we only show them here, +% commented out. +% \begin{macrocode} +% \clubpenalty 150 +% \widowpenalty 150 +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\displaywidowpenalty} +% \begin{macro}{\predisplaypenalty} +% \begin{macro}{\postdisplaypenalty} +% Discourrage (but not so much) widows in front of a math display +% and forbid breaking directly in front of a display. Allow break +% after a display without a penalty. Again the default values are +% used, therefore we only show them here. +% \begin{macrocode} +% \displaywidowpenalty 50 +% \predisplaypenalty 10000 +% \postdisplaypenalty 0 +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\interlinepenalty} +% Allow the breaking of a page in the middle of a paragraph. +% \begin{macrocode} +% \interlinepenalty 0 +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\brokenpenalty} +% We allow the breaking of a page after a hyphenated line. +% \begin{macrocode} +% \brokenpenalty 0 +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Float placement parameters} +% +% All float parameters are given default values in the \LaTeXe{} +% kernel. For this reason counters only need to be set with +% |\setcounter| and other parameters are set using |\renewcommand|. +% +% \paragraph{Limits for the placement of floating objects} +% +% \begin{macro}{\c@topnumber} +% The \Lcount{topnumber} counter holds the maximum number of +% floats that can appear on the top of a text page. +% \begin{macrocode} +\setcounter{topnumber}{2} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\topfraction} +% This indicates the maximum part of a text page that can be +% occupied by floats at the top. +% \begin{macrocode} +\renewcommand\topfraction{.7} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\c@bottomnumber} +% The \Lcount{bottomnumber} counter holds the maximum number of +% floats that can appear on the bottom of a text page. +% \begin{macrocode} +\setcounter{bottomnumber}{1} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bottomfraction} +% This indicates the maximum part of a text page that can be +% occupied by floats at the bottom. +% \begin{macrocode} +\renewcommand\bottomfraction{.3} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\c@totalnumber} +% This indicates the maximum number of floats that can appear on +% any text page. +% \begin{macrocode} +\setcounter{totalnumber}{3} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textfraction} +% This indicates the minimum part of a text page that has to be +% occupied by text. +% \begin{macrocode} +\renewcommand\textfraction{.2} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\floatpagefraction} +% This indicates the minimum part of a page that has to be +% occupied by floating objects before a `float page' is produced. +% \begin{macrocode} +\renewcommand\floatpagefraction{.5} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\c@dbltopnumber} +% The \Lcount{dbltopnumber} counter holds the maximum number of +% two column floats that can appear on the top of a two column text +% page. +% \begin{macrocode} +\setcounter{dbltopnumber}{2} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dbltopfraction} +% This indicates the maximum part of a two column text page that +% can be occupied by two column floats at the top. +% \begin{macrocode} +\renewcommand\dbltopfraction{.7} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dblfloatpagefraction} +% This indicates the minimum part of a page that has to be +% occupied by two column wide floating objects before a `float +% page' is produced. +% \begin{macrocode} +\renewcommand\dblfloatpagefraction{.5} +% \end{macrocode} +% \end{macro} +% +% \subsection{Page Styles} +% +% The page style \pstyle{foo} is defined by defining the command +% |\ps@foo|. This command should make only local definitions. +% There should be no stray spaces in the definition, since they +% could lead to mysterious extra spaces in the output (well, that's +% something that should be always avoided). +% +% \begin{macro}{\@evenhead} +% \begin{macro}{\@oddhead} +% \begin{macro}{\@evenfoot} +% \begin{macro}{\@oddfoot} +% The |\ps@...| command defines the macros |\@oddhead|, +% |\@oddfoot|, |\@evenhead|, and |\@evenfoot| to define the running +% heads and feet---e.g., |\@oddhead| is the macro to produce the +% contents of the heading box for odd-numbered pages. It is called +% inside an |\hbox| of width |\textwidth|. +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\thispagestyle} +% Several commands (|\index|, |\maketitle|) give a +% |\thispagestyle{plain}| command, which will overrule a +% |\pagestyle{empty}| command. This situation is almost always +% unwanted. Therefore we provide a more careful definition. +% +% First save the original definition. +% \begin{macrocode} +\let\Thispagestyle\thispagestyle +% \end{macrocode} +% Then we provide the new definition, for which we must also adapt +% |\pagestyle| a little. +% \begin{macrocode} +\newcommand\@emptypagestyle{empty} +\renewcommand\pagestyle[1]{\@nameuse{ps@#1}\def\@currentpagestyle{#1}} +\renewcommand\thispagestyle[1]{% + \ifx\@currentpagestyle\@emptypagestyle + \else + \global\@specialpagetrue + \gdef\@specialstyle{#1}% + \fi} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Marking conventions} +% +% To make headings determined by the sectioning commands, the page +% style defines the commands |\chaptermark|, |\sectionmark|, +% \ldots,\\ +% where |\chaptermark{|\meta{TEXT}|}| is called by +% |\chapter| to set a mark, and so on. +% +% The |\...mark| commands and the |\...head| macros are defined +% with the help of the following macros. (All the |\...mark| +% commands should be initialized to no-ops.) +% +% \LaTeX{} extends \TeX's |\mark| facility by producing two kinds +% of marks, a `left' and a `right' mark, using the following +% commands: +% \begin{flushleft} +% |\markboth{|\meta{LEFT}|}{|\meta{RIGHT}|}|: Adds both marks. +% +% |\markright{|\meta{RIGHT}|}|: Adds a `right' mark. +% +% |\leftmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead| +% or |\@evenfoot| macros, it gets the current `left' +% mark. |\leftmark| works like \TeX's |\botmark| +% command. +% +% |\rightmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead| +% or |\@evenfoot| macros, it gets the current +% `right' mark. |\rightmark| works like \TeX's +% |\firstmark| command. +% \end{flushleft} +% +% The marking commands work reasonably well for right marks +% `numbered within' left marks--e.g., the left mark is changed by a +% |\chapter| command and the right mark is changed by a |\section| +% command. However, it does produce somewhat anomalous results if +% two |\markboth|'s occur on the same page. +% +% +% Commands like |\tableofcontents| that should set the marks in some +% page styles use a |\@mkboth| command, which is |\let| by the +% pagestyle command (|\ps@...|) to |\markboth| for setting the +% heading or to |\@gobbletwo| to do nothing. +% +% +% \begin{macrocode} +% %%%\mark{{}{}} % Initializes TeX's marks <--- can vanish +% \end{macrocode} +% +% \subsubsection{Defining the page styles} +% \label{sec:pagestyle} +% +% The pagestyle \pstyle{empty} is defined in \file{latex.dtx}, but +% the pagestyle \pstyle{plain} is slightly altered here. The +% difference is that the page numbers are set flush right in +% onesided and flush left and right in the twosided style. +% +% \begin{macro}{\ps@plain} +% +% \begin{macrocode} +\renewcommand\ps@plain{% +% \end{macrocode} +% The running head are empty in this pagestyle, the page number +% appears in the running foot. +% \begin{macrocode} + \let\@oddhead\@empty\let\@evenhead\@empty + \def\@oddfoot{\hfil\PageFont\thepage}% + \if@twoside + \def\@evenfoot{\PageFont\thepage\hfil}% + \else + \let\@evenfoot\@oddfoot + \fi +% \end{macrocode} +% Because the running heads should be empty we |let| |\@mkboth| to +% |\@gobbletwo|, thus disabling the mark commands. +% \begin{macrocode} + \let\@mkboth\@gobbletwo} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ps@headings} +% The definition of the page style \pstyle{headings} has to be +% different for two sided printing than it is for one sided +% printing. +% +% \begin{macrocode} +\if@twoside + \def\ps@headings{% +% \end{macrocode} +% The running feet are empty in this page style, the running head +% contains the page number and one of the marks. +% \begin{macrocode} + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{{\PageFont\thepage}\hfil\MarkFont\leftmark}% + \def\@oddhead{{\MarkFont\rightmark}\hfil\PageFont\thepage}% +% \end{macrocode} +% +% When using this page style, the contents of the running head is +% determined by the chapter and section titles. So we |\let| +% |\@mkboth| to |\markboth|. +% \begin{macrocode} + \let\@mkboth\markboth +% \end{macrocode} +% +% In thisdocument class we use the |\chaptermark| +% and |\sectionmark| macros to fill the running heads. +% +% Note the use of |##1| for the parameter of the |\chaptermark| +% command, which will be defined when |\ps@headings| is executed. +% +% \begin{macrocode} + \def\chaptermark##1{% + \markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne + \@chapapp\ \thechapter. \ \fi + ##1}}{}}% + \def\sectionmark##1{% + \markright {\uppercase{\ifnum \c@secnumdepth >\z@ + \thesection. \ \fi + ##1}}}} +% \end{macrocode} +% +% The definition of |\ps@headings| for one sided printing can be +% much simpler, because we treat even and odd pages the same. +% Therefore we don't need to define |\@even...|. +% \begin{macrocode} +\else + \def\ps@headings{% + \let\@oddfoot\@empty + \def\@oddhead{{\MarkFont\rightmark}\hfil\PageFont\thepage}% + \let\@mkboth\markboth +% \end{macrocode} +% We use |\markright| now instead of |\markboth| as we did for two +% sided printing. +% \begin{macrocode} + \def\chaptermark##1{% + \markright {\uppercase{\ifnum \c@secnumdepth >\m@ne + \@chapapp\ \thechapter. \ \fi + ##1}}}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ps@myheadings} +% The definition of the page style \pstyle{myheadings} is fairly +% simple because the user determines the contents of the running +% head himself by using the |\markboth| and |\markright| commands. +% +% \begin{macrocode} +\def\ps@myheadings{% + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{{\PageFont\thepage}\hfil\MarkFont\leftmark}% + \def\@oddhead{{\MarkFont\rightmark}\hfil\PageFont\thepage}% +% \end{macrocode} +% +% We have to make sure that the marking commands that are used by +% the chapter and section headings are disabled. We do this +% |\let|ting them to a macro that gobbles its argument(s). +% \begin{macrocode} + \let\@mkboth\@gobbletwo + \let\chaptermark\@gobble + \let\sectionmark\@gobble + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PageFont} +% \begin{macro}{\MarkFont} +% These macros are use to store the fonts that are used to typeset +% the pagenumber (|\PageFont|) and the marks (|\MarkFont|) in the +% running head and feet. +% \begin{macrocode} +\newcommand\PageFont{\rmfamily} +\newcommand\MarkFont{\slshape} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\RunningFonts} +% Use this macro to change the fonts that are used in the running +% heads. +% \begin{macrocode} +\newcommand\RunningFonts[2]{% + \renewcommand\PageFont{#1}\renewcommand\MarkFont{#2}} +% \end{macrocode} +% \end{macro} +% +% \section{Document Markup} +% +% \subsection{The title} +% +% \begin{macro}{\title} +% \begin{macro}{\author} +% \begin{macro}{\date} +% These three macros are provided by \file{latex.dtx} to provide +% information about the title, author(s) and date of the document. +% The information is stored away in internal control sequences. +% It is the task of the |\maketitle| command to use the +% information provided. The definitions of these macros are shown +% here for information. +% \begin{macrocode} +% \newcommand\title[1]{\gdef\@title{#1}} +% \newcommand\author[1]{\gdef\@author{#1}} +% \newcommand\date[1]{\gdef\@date{#1}} +% \end{macrocode} +% The |\date| macro gets today's date by default. +% \begin{macrocode} +% \gdef\@date{\today} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\TitleFont} +% This selects the font to use in the title of the document. +% \begin{macrocode} +\newcommand\TitleFont{\bfseries} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\maketitle} +% The definition of |\maketitle| depends on whether a seperate +% title page is made. This is the default for this document class. +% Note that the title, author and date information is printed in +% capital letters by default. This can be changed by the option +% \Lopt{mctitle}. +% +% When we are making a title page, we locally redefine +% |\footnotesize| and |\footnoterule| to change the appearance of +% the footnotes that are produced by the |\thanks| command. +% \begin{macrocode} +\renewcommand\TitleFont{\rmfamily} +\newcommand\maketitle{% + \begin{titlepage}% + \let\footnotesize\small + \let\footnoterule\relax +% \end{macrocode} +% Footnotes on the titlepage, generated by the use of |\thanks|, +% use symbols in these document classes. +% \begin{macrocode} + \long\def\@makefntext##1{\parindent\z@ + \def\labelitemi{--}\@revlabeltrue + \leavevmode$\m@th^{\@thefnmark}$\kern1em\relax ##1} + \renewcommand\thefootnote{\fnsymbol{footnote}}% +% \end{macrocode} +% We center the entire title vertically; the centering is set off a +% little by adding a |\vskip|. In compatibility mode the pagenumber +% is set to 0 to keep the behaviour of \LaTeX\ 2.09 style files +% \begin{macrocode} + \if@compatibility\setcounter{page}{0}\fi + \null\vfil + \vskip 60\p@ +% \end{macrocode} +% Then we set the title, in a |\LARGE| font; leave a little space +% and set the author(s) in a |\large| font. We do this inside a +% tabular environment to get them in a single column. +% Before the date we leave a little whitespace again. +% \begin{macrocode} + \begin{center}% + \TitleFont + {\LARGE \def\\{\penalty -\@M} + \if@allcaps + \expandafter\uc@nothanks\@title\thanks\relax + \else + \@title + \fi\par}% + \vskip 3em% + {\large + \lineskip .75em \parindent\z@ + \begin{tabular}[t]{c}% + \if@allcaps + \expandafter\uc@authornothanks\@author\and\relax + \else + \@author + \fi + \end{tabular}\par}% + \vskip 1.5em% + {\large + \if@allcaps + \uppercase\expandafter{\@date}% + \else + \@date + \fi\par}% + \end{center}\par +% \end{macrocode} +% Then we call |\@thanks| to print the information that goes into +% the footnote and finish the page. +% \begin{macrocode} + \@thanks + \vfil\null + \end{titlepage}% +% \end{macrocode} +% We reset the \Lcount{footnote} counter, disable |\thanks| and +% |\maketitle| and save some storage space by emptying the internal +% information macros. +% \begin{macrocode} + \setcounter{footnote}{0}% + \let\thanks\relax\let\maketitle\relax + \gdef\@thanks{}\gdef\@author{}\gdef\@title{}} +% \end{macrocode} +% +% We want to have the title, author and date information in +% uppercase, but we have to be very carefull not to put too much +% text in uppercase. The macros that perform the filtering of texts +% that shouldn't be in uppercase were developped with th help of +% Howard Trickey. +% +% \begin{macro}{\uc@nothanks} +% This macro takes all the text up to the first use of |\thanks| +% and passes it to |\uppercase|. The use of |\futurelet| will store +% the token \emph{after} the |\thanks| in |\@tempa|. The macro +% |\u@tx| uses that information to determine what to do next. +% \begin{macrocode} +\def\uc@nothanks#1\thanks{\uppercase{#1}\futurelet\@tempa\uc@tx} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\uc@authornothanks} +% A document can have more than one author. Usually they are +% seperated with |\and|. For each author a footnote --using +% |\thanks| can be present. Therefore this macro takes all the text +% up to the first use of |\and|, thus picking up all the +% information for one author. This is than passsed to +% |\uc@nothanks|, which checks for the presence of |\thanks|. For +% this to work the argument of |\uc@nothanks| has to be delimited +% by |\thanks\relax|. +% \begin{macrocode} +\def\uc@authornothanks#1\and{\uc@nothanks#1\thanks\relax +% \end{macrocode} +% Then we have to check whether the |\and| we ound earlier was put +% in by the user, in which case information for another user will +% follow, or by the call from another macro, in which case the +% |\and| will be followed by a |\relax| token. The |\futurelet| +% contstruct stores the first token \emph{after} the |\and| in +% |\@tempa| to be inspected by |\u@ax|. +% \begin{macrocode} + \futurelet\@tempa\uc@ax} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\uc@ax} +% When |\@tempa| contains a |\relax| token nothing needs to be +% done, when it doesn't we put in a linebreak |\\| the word `and' +% (stored in |\andname| so that this control sequence can be +% redeined for other languages), another linebreak and we call +% |\uc@authornothanks| to continue processing. The |\expandafter| +% lets \TeX\ see the |\fi| first. +% \begin{macrocode} +\def\uc@ax{% + \ifx\@tempa\relax + \else + \\ \andname \\ \expandafter\uc@authornothanks + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\uc@tx} +% This macro simply checks whether |\@tempa| contains a |\relax| +% token. When it doesn't further processing is performed by +% |\u@ty|. +% \begin{macrocode} +\def\uc@tx{\ifx\@tempa\relax + \else \expandafter\uc@ty \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\uc@ty} +% The macro |\uc@ty| gets executed when the |\thanks| that +% delimited text earlier on in the processing had a real argument. +% In that case it was a |\thanks| put in by the user, \emph{not} by +% these macros. Therefore the argument is now passed to |\thanks| +% and processing continues by calling |\uc@nothanks|. +% \begin{macrocode} +\def\uc@ty#1{\thanks{#1}\uc@nothanks} +% \end{macrocode} +% \end{macro} +% +% When the title is not on a page of its own, the layout of the +% title is a little different. We use symbols to mark the footnotes +% and we have to deal with two column documents. +% +% Therefore we first start a new group to keep changes local. Then +% we redefine |\thefootnote| to use |\fnsymbol|; and change +% |\@makefnmark| so that footnotemarks have zero width (to make the +% centering of the author names look better). We also want raised +% footnotemarkers in the footnotes here. +% \begin{macrocode} +\else +\newcommand\maketitle{\par + \begingroup + \renewcommand\thefootnote{\fnsymbol{footnote}}% + \def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}% + \def\@makefntext{\@xmakefntext{$\m@th^{\@thefnmark}$}}% +% \end{macrocode} +% If this is a twocolumn document we start a new page in twocolumn +% mode, with the title set to the full width of the text. The +% actual printing of the title information is left to +% |\@maketitle|. +% \begin{macrocode} + \if@twocolumn + \ifnum \col@number=\@ne + \@maketitle + \else + \twocolumn[\@maketitle]% + \fi + \else +% \end{macrocode} +% When this is not a twocolumn document we just start a new page, +% prevent floating objects from appearing on the top of this page +% and print the title information. +% \begin{macrocode} + \newpage + \global\@topnum\z@ + \@maketitle + \fi +% \end{macrocode} +% This page gets a \pstyle{plain} layout. We call |\@thanks| to +% produce the footnotes. +% \begin{macrocode} + \thispagestyle{plain}\@thanks +% \end{macrocode} +% Now we can close the group, reset the \Lcount{footnote} counter, +% disable |\thanks|, |\maketitle| and |\@maketitle| and save some +% storage space by emptying the internal information macros. +% \begin{macrocode} + \endgroup + \setcounter{footnote}{0}% + \let\thanks\relax + \let\maketitle\relax\let\@maketitle\relax + \gdef\@thanks{}\gdef\@author{}\gdef\@title{}} +% \end{macrocode} +% +% \begin{macro}{\@maketitle} +% This macro takes care of formatting the title information when we +% have no seperate title page. +% +% We always start a new page, leave some white space and center the +% information. The title is set in a |\LARGE| font, the author +% names and the in a |\large| font. +% \begin{macrocode} +\def\@maketitle{% + \newpage + \null + \vskip 2em% +%<+type3>\if@titlecentered + \begin{center}% + {\LARGE \TitleFont \@title \par}% + \vskip 1.5em% + {\large \TitleFont + \lineskip .5em% + \begin{tabular}[t]{c}% + \@author + \end{tabular}\par}% + \vskip 1em% + {\large \TitleFont \@date}% + \end{center}% +%<*type3> + \else + {\LARGE \TitleFont \head@style \@title \par} \vskip 1.5em + {\large \TitleFont \lineskip .5em \tabcolsep\z@ + \def\and{%%% \begin{tabular} has already started + \end{tabular}\hskip 1em plus .17fil + \begin{tabular}[t]{l}}%% \end{tabular} will come + \begin{tabular}[t]{l}\@author\end{tabular}\par} + \vskip 1em {\large \TitleFont \@date} + \fi +%</type3> + \par + \vskip 1.5em} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Chapters and Sections} +% +% \subsubsection{Building blocks} +% The definitions in this part of the class file make use of two +% macros, |\@startsection| and |\secdef|, which are defined by +% \file{latex.dtx}. To understand what is going on here, we +% describe their syntax. +% +% The macro |\@startsection| has 6 required arguments, optionally +% followed by a $*$, an optional argument and a required argument: +% +% |\@startsection|\meta{name}\meta{level}\meta{indent}^^A +% \meta{beforeskip}\meta{afterskip}\meta{style} +% optional *\\ +% \null\hphantom{\bslash @startsection}^^A +% |[|\meta{altheading}|]|\meta{heading} +% +% It is a generic command to start a section, the arguments have +% the following meaning: +% +% \begin{description} +% \item[\meta{name}] The name of the user level command, e.g., +% `section'. +% \item[\meta{level}] A number, denoting the depth of the section +% -- e.g., chapter=1, section = 2, etc. A section number +% will be printed if and only if \meta{level} $<=$ the value +% of the \Lcount{secnumdepth} counter. +% \item[\meta{indent}] The indentation of the heading from the left +% margin +% \item[\meta{beforeskip}] The absolute value of this argument +% gives the skip to leave above the heading. If it is +% negative, then the paragraph indent of the text following +% the heading is suppressed. +% \item[\meta{afterskip}] If positive, this gives the skip to leave +% below the heading, else it gives the skip to leave to the +% right of a run-in heading. +% \item[\meta{style}] Commands to set the style of the heading. +% \item[$*$] When this is missing the heading is numbered and the +% corresponding counter is incremented. +% \item[\meta{altheading}] Gives an alternative heading to use in +% the table of contents and in the running heads. This should +% be present when the $*$ form is used. +% \item[\meta{heading}] The heading of the new section. +% \end{description} +% A sectioning command is normally defined to |\@startsection| and +% its first six arguments. +% +% The macro |\secdef| can be used when a sectioning command is +% defined without using |\@startsection|. It has two arguments: +% +% |\secdef|\meta{unstarcmds}\meta{starcmds} +% +% \begin{description} +% \item[\meta{unstarcmds}] Used for the normal form of the +% sectioning command. +% \item[\meta{starcmds}] Used for the $*$-form of the +% sectioning command. +% \end{description} +% +% You can use |\secdef| as follows: +% \begin{verbatim} +% \def\chapter { ... \secdef \CMDA \CMDB } +% \def\CMDA [#1]#2{ ... } % Command to define +% % \chapter[...]{...} +% \def\CMDB #1{ ... } % Command to define +% % \chapter*{...} +% \end{verbatim} +% +% \begin{macro}{\head@style} +% In the definition of chapter and section commands a number of +% settings frequently occur. Therefore we store them in a control +% sequence. +% +% Section headings are to be set extremely raggedright, with no +% hyphenations, not even at explicit hyphens. +% +% \begin{macrocode} +\newcommand\head@style{% + \interlinepenalty \@M + \hyphenpenalty=\@M \exhyphenpenalty=\@M + \rightskip=0cm plus .7\hsize\relax} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@sect} +% The definition of this macro from \file{latex.dtx} needs to be +% repeated here because we want to modify its behaviour with +% respect to: +% \begin{enumerate} +% \item the width of the number, which is fixed; +% \item checking the value of |\unitindent|; +% \item formatting the section title ragged right; +% \item changing the argument of |\contentsline|. +% \end{enumerate} +% \begin{macrocode} +\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth + \let\@svsec\@empty\else + \refstepcounter{#1}% +% \end{macrocode} +% The following code (within the group) checks the value of +% |\unitindent|. If the sectionnumber is wider than |\unitindent| +% its value is adapted and a flag is set to rememeber to store the +% new value in the \file{.aux}-file. +% \begin{macrocode} + \begingroup + \setbox\@tempboxa=\hbox{#6\relax + \csname the#1\endcsname + \hskip.5em} + \ifdim\wd\@tempboxa>\unitindent + \global\unitindent=\wd\@tempboxa + \@indentset + \fi + \endgroup + \let\@@protect\protect + \def\protect{\noexpand\protect\noexpand}% + \edef\@svsec{\@seccntformat{#1}}% + \let\protect\@@protect\fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup #6\relax + \@hangfrom{\hskip #3\relax\@svsec}{\head@style #8\par}% + \endgroup + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth + \else + \protect\numberline{\csname the#1\endcsname}% + \fi + \toc@font#2 #7}% + \else + \def\@svsechd{#6\hskip #3\relax + \@svsec #8\csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth + \else + \protect\numberline{\csname the#1\endcsname}% + \fi + \toc@font#2 #7}}% + \fi + \@xsect{#5}} +% \end{macrocode} +% This macro was introduced in \LaTeXe, its definition is changed +% here to get the fixed with of the section number. +% \begin{macrocode} +\def\@seccntformat#1{% + \hbox to \unitindent{\csname the#1\endcsname \hfil}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@ssect} +% Similar changes need to be made to the definition of |\@ssect|, +% which is used in `starred' sections. +% \begin{macrocode} +\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + \begingroup #4\relax + \@hangfrom{\hskip #1}{\head@style #5\par}\endgroup + \else \def\@svsechd{#4\hskip #1\relax #5}\fi + \@xsect{#3}} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Mark commands} +% +% \begin{macro}{\chaptermark} +% \begin{macro}{\sectionmark} +% \begin{macro}{\subsectionmark} +% \begin{macro}{\subsubsectionmark} +% \begin{macro}{\paragraphmark} +% \begin{macro}{\subparagraphmark} +% Default initializations of |\...mark| commands. These commands +% are used in the definition of the page styles (see +% section~\ref{sec:pagestyle}) Most of them are already defined by +% \file{latex.ltx}, so they are only shown here. +% +% \begin{macrocode} +\newcommand\chaptermark[1]{} +% \newcommand\sectionmark[1]{} +% \newcommand\subsectionmark[1]{} +% \newcommand\subsubsectionmark[1]{} +% \newcommand\paragraphmark[1]{} +% \newcommand\subparagraphmark[1]{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{Define Counters} +% +% \begin{macro}{\c@secnumdepth} +% The value of the counter \Lcount{secnumdepth} gives the depth of +% the highest-level sectioning command that is to produce section +% numbers. +% \begin{macrocode} +\setcounter{secnumdepth}{2} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\c@part} +% \begin{macro}{\c@chapter} +% \begin{macro}{\c@section} +% \begin{macro}{\c@subsection} +% \begin{macro}{\c@subsubsection} +% \begin{macro}{\c@paragraph} +% \begin{macro}{\c@subparagraph} +% These counters are used for the section numbers. The macro\\ +% |\newcounter{|\meta{newctr}|}[|\meta{oldctr}|]|\\ +% defines \meta{newctr} to be a counter, which is reset to zero when +% counter \meta{oldctr} is stepped. Counter \meta{oldctr} must +% already be defined. +% +% \begin{macrocode} +\newcounter {part} +\newcounter {chapter} +\newcounter {section}[chapter] +\newcounter {subsection}[section] +\newcounter {subsubsection}[subsection] +\newcounter {paragraph}[subsubsection] +\newcounter {subparagraph}[paragraph] +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\thepart} +% \begin{macro}{\thechapter} +% \begin{macro}{\thesection} +% \begin{macro}{\thesubsection} +% \begin{macro}{\thesubsubsection} +% \begin{macro}{\theparagraph} +% \begin{macro}{\thesubparagraph} +% For any counter \Lcount{CTR}, |\theCTR| is a macro that defines +% the printed version of counter \Lcount{CTR}. It is defined in +% terms of the following macros: +% +% |\arabic{|\Lcount{COUNTER}|}| prints the value of +% \Lcount{COUNTER} as an arabic numeral. +% +% |\roman{|\Lcount{COUNTER}|}| prints the value of +% \Lcount{COUNTER} as a lowercase roman numberal. +% +% |\Roman{|\Lcount{COUNTER}|}| prints the value of +% \Lcount{COUNTER} as an uppercase roman numberal. +% +% |\alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER} +% as a lowercase letter: $1 =$~a, $2 =$~ b, etc. +% +% |\Alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER} +% as an uppercase letter: $1 =$~A, $2 =$~B, etc. +% +% \begin{macrocode} +\renewcommand\thepart {\Roman{part}} +\renewcommand\thechapter {\arabic{chapter}} +\renewcommand\thesection {\thechapter.\arabic{section}} +\renewcommand\thesubsection {\thesection.\arabic{subsection}} +\renewcommand\thesubsubsection {\thesubsection .\arabic{subsubsection}} +\renewcommand\theparagraph {\thesubsubsection.\arabic{paragraph}} +\renewcommand\thesubparagraph {\theparagraph.\arabic{subparagraph}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@chapapp} +% |\@chapapp| is initially defined to be `|\chaptername|'. The +% |\appendix| command redefines it to be `|\appendixname|'. +% +% \begin{macrocode} +\newcommand\@chapapp{\chaptername} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Parts} +% +% \begin{macro}{\part} +% The command to start a new part of our document. +% +% We start a new (righthand) page and use the \pstyle{empty}. +% \begin{macrocode} +\newcommand\part{\cleardoublepage + \thispagestyle{empty}% +% \end{macrocode} +% When we are making a two column document, this will be a one +% column page. We use |@tempswa| to remember to switch back to two +% columns. +% \begin{macrocode} + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi +% \end{macrocode} +% We need an empty box to prevent the fil glue from disappearing. +% \begin{macrocode} + \hbox{}\vfil +% \end{macrocode} +% Here we use |\secdef| to indicate wwhich commands to use to make +% the actual heading. +% \begin{macrocode} + \secdef\@part\@spart} +% \end{macrocode} +% +% \begin{macro}{\@part} +% This macro does the actual formatting of the title of the part. +% +% \begin{macro}{\PartFont} +% The font used to typeset the part is stored in this maro. +% \begin{macrocode} +\newcommand\PartFont{\bfseries} +% \end{macrocode} +% \end{macro} +% +% When \Lcount{secnumdepth} is larger than $-2$ for this document +% class, we have a numbered part, otherwise it is unnumbered. +% \begin{macrocode} +\def\@part[#1]#2{% + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}\toc@case{#1}}% + \else + \addcontentsline{toc}{part}{\toc@case{#1}}% + \fi +% \end{macrocode} +% We empty the mark registers and center the title on the page. +% Also we prevent breaking between lines and reset the font. +% \begin{macrocode} + \markboth{}{} + {\centering + \interlinepenalty \@M + \reset@font +% \end{macrocode} +% When this is a numbered part we have to print the number. We have +% to expand |\partname| before |\uppercase| is called, therefore we +% use a temporary control sequence that, when called will execute +% |\uppercase| on the contents of |\partname|. +% \begin{macrocode} + \ifnum \c@secnumdepth >-2\relax + \Large\PartFont + \edef\@tempa{\noexpand\uppercase{\partname}}\@tempa~\thepart + \par +% \end{macrocode} +% We leave some space before we print the title and leave the +% finishing up to |\@endpart|. +% \begin{macrocode} + \vskip 20\p@ + \fi + \Large \PartFont \uppercase{#2}\par}% + \@endpart} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@spart} +% This macro does the actual formatting of the title of the part +% when the star form of the user command was used. In this case we +% {\em never} print a number. Otherwise the formatting is the same. +% +% \begin{macrocode} +\def\@spart#1{% + {\centering + \interlinepenalty \@M + \reset@font + \Large \PartFont #1\par}% + \@endpart} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@endpart} +% This macro finishes the part page, for both |\@part| and +% |\@spart|. +% +% First we fill the current page. +% \begin{macrocode} +\def\@endpart{\vfil\newpage +% \end{macrocode} +% Then, when we are in twosided mode, we produce a completely blank +% page. +% \begin{macrocode} + \if@twoside + \hbox{}% + \thispagestyle{empty}% + \newpage + \fi +% \end{macrocode} +% When this was a two column document we have to switch back to two +% column mode. +% \begin{macrocode} + \if@tempswa + \twocolumn + \fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsubsection{Chapters} +% +% \begin{macro}{\chapter} +% A chapter should always start on a new page therefore we start by +% calling |\clearpage| and setting the pagestyle for this page to +% \pstyle{plain}. +% \begin{macrocode} +\newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi + \thispagestyle{plain}% +% \end{macrocode} +% Then we prevent floats from appearing at the top of this page +% because it looks weird to see a floating object above a chapter +% title. +% \begin{macrocode} + \global\@topnum\z@ +% \end{macrocode} +% Then we suppress the indentation of the first paragraph by +% setting the switch |\@afterindent| to |false|. We use |\secdef| +% to specify the macros to use for actually setting the chapter +% title. +% \begin{macrocode} + \@afterindentfalse + \secdef\@chapter\@schapter} +% \end{macrocode} +% +% \begin{macro}{\@chapter} +% This macro is called when we have a numbered chapter. When +% \Lcount{secnumdepth} is larger than $-1$ we display the chapter +% number. We also inform the user that a new chapter is about to be +% typeset by writing a message to the terminal. +% \begin{macrocode} +\def\@chapter[#1]#2{% + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}\toc@font0 #1}% + \else + \addcontentsline{toc}{chapter}{\toc@font0 #1}% + \fi +% \end{macrocode} +% After having written an entry to the table of contents we store +% the (alternative) title of this chapter with |\chaptermark| and +% add some white space to the lists of figures and tables. +% \begin{macrocode} + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% +% \end{macrocode} +% Then we call upon |\@makechapterhead| to format the actual +% chapter title. We have to do this in a special way when we are in +% twocolumn mode in order to have the chapter title use the entire +% |\textwidth|. In one column mode we call |\@afterheading| which +% takes care of suppressing the indentation. +% \begin{macrocode} + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +% \end{macrocode} +% +% \begin{macro}{\ChapFont} +% The font used to typeset the chapters is stored in this maro. +% \begin{macrocode} +\newcommand\ChapFont{\bfseries} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@makechapterhead} +% The macro above uses |\@makechapterhead|\meta{text} to format the +% heading of the chapter. +% +% We begin by leaving some white space. The we open a group in +% which we have a paragraph indent of 0pt, and in which we have the +% text set ragged right. We also reset the font. +% \begin{macrocode} +\def\@makechapterhead#1{% + \vspace*{50\p@ \@plus 5\p@}% + {\setlength\parindent{\z@}% + \setlength\parskip {\z@}% + \head@style \reset@font +% \end{macrocode} +% Then we check whether the number of the chapter has to be printed. +% If so we leave some whitespace between the chapternumber and its +% title. +% \begin{macrocode} + \ifnum \c@secnumdepth >\m@ne + \Large\ChapFont \@chapapp{} \thechapter + \par + \vskip 20\p@ + \fi +% \end{macrocode} +% Now we set the title in a large bold font. We prevent a pagebreak +% at this point and leave some whitespace before the text begins. +% \begin{macrocode} + \Large \ChapFont #1\par + \nobreak + \vskip 40\p@ + }} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@schapter} +% This macro is called when we have an unnumbered chapter. It is +% much simpler than |\@chapter| because it only needs to typeset +% the chapter title. +% \begin{macrocode} +\def\@schapter#1{\if@twocolumn + \@topnewpage[\@makeschapterhead{#1}]% + \else + \@makeschapterhead{#1}% + \@afterheading + \fi} +% \end{macrocode} +% +% \begin{macro}{\@makeschapterhead} +% The macro above uses |\@makeschapterhead|\meta{text}to format +% the heading of the chapter. It is similar to |\@makechapterhead| +% except that it never has to print a chapter number. +% +% \begin{macrocode} +\def\@makeschapterhead#1{% + \vspace*{50\p@\@plus 5\p@}% + {\setlength\parindent{\z@}% + \setlength\parskip{\z@}% + \head@style + \reset@font + \Large \ChapFont #1\par + \nobreak + \vskip 40\p@ + }} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \subsubsection{Lower level headings} +% +% These commands all make use of |\@startsection|. +% \begin{macro}{\section} +% This gives a normal heading with white space above the heading +% (the whitespace below the heading will be generated by the +% |\parskip| that is inserted at the start of the first paragraph), +% the title set in |\large\bfseries|, and no indentation on the +% first paragraph. +% \begin{macrocode} +\newcommand\section{% + \@startsection {section}{1}{\z@}% + {-2\baselineskip\@plus -1\baselineskip \@minus -.5\baselineskip}% +%<+type1> {.5\baselineskip}% +%<+type3> {.01\baselineskip}% + {\reset@font\large\SectFont}} +% \end{macrocode} +% +% \begin{macro}{\SectFont} +% The font used to typeset the sections is stored in this maro. +% \begin{macrocode} +\newcommand\SectFont{\bfseries} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\subsection} +% This gives a normal heading with white space above the heading, +% the title set in |\normalsize\bfseries|, and no indentation on +% the first paragraph. +% \begin{macrocode} +\newcommand\subsection{% + \@startsection{subsection}{2}{\z@}% + {-1\baselineskip\@plus -.5\baselineskip \@minus -.25\baselineskip}% +%<+type1> {.25\baselineskip}% +%<+type3> {.01\baselineskip}% + {\reset@font\normalsize\SSectFont}} +% \end{macrocode} +% +% \begin{macro}{\SSectFont} +% The font used to typeset the subsections is stored in this maro. +% \begin{macrocode} +\newcommand\SSectFont{\bfseries} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\subsubsection} +% This gives a normal heading with white space above the heading, +% the title set in |\normalsize\tm|, and no indentation on the +% first paragraph. +% \begin{macrocode} +\newcommand\subsubsection{% + \@startsection{subsubsection}{3}{\z@}% + {-1\baselineskip plus -.5\baselineskip minus -.25\baselineskip}% +%<+type1> {.25\baselineskip}% +%<+type3> {.01\baselineskip}% + {\reset@font\normalsize\SSSectFont}} +% \end{macrocode} +% +% \begin{macro}{\SSSectFont} +% The font used to typeset the subsubsections is stored in this maro. +% \begin{macrocode} +\newcommand\SSSectFont{\rmfamily} +\newcommand\SSSectFont{\slshape} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\paragraph} +% This gives a run-in heading with white space above and to the +% right of the heading, the title set in |\normalsize\slshape|. +% \begin{macrocode} +\newcommand\paragraph{% + \@startsection{paragraph}{4}{\z@}% + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {\reset@font\normalsize\ParaFont}} +% \end{macrocode} +% +% \begin{macro}{\ParaFont} +% The font used to typeset the paragraphs is stored in this maro. +% \begin{macrocode} +\newcommand\ParaFont{\slshape} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\subparagraph} +% This gives an indented run-in heading with white space above and +% to the right of the heading, the title set in +% |\normalsize\slshape|. +% \begin{macrocode} +\newcommand\subparagraph{% + \@startsection{subparagraph}{5}{\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\reset@font\normalsize\SParaFont}} +% \end{macrocode} +% +% \begin{macro}{\SParaFont} +% The font used to typeset the subparagraphs is stored in this maro. +% \begin{macrocode} +\newcommand\SParaFont{\slshape} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\Headingfonts} +% To change the fonts that are used to typeset the title,part, +% chapter and section headings this macro can be used. +% \begin{macrocode} +\newcommand\HeadingFonts[8]{% + \renewcommand\TitleFont{#1}% + \renewcommand\PartFont{#2}% + \renewcommand\ChapFont{#3}% + \renewcommand\SectFont{#4}% + \renewcommand\SSectFont{#5}% + \renewcommand\SSSectFont{#6}% + \renewcommand\ParaFont{#7}% + \renewcommand\SParaFont{#8}} +% \end{macrocode} +% \end{macro} +% +% \subsection{Lists} +% +% \subsubsection{General List Parameters} +% +% The following commands are used to set the default values for the list +% environment's parameters. See the \LaTeX{} manual for an explanation +% of the meanings of the parameters. Defaults for the list +% environment are set as follows. First, |\rightmargin|, +% |\listparindent| and |\itemindent| are set to 0pt. Then, for a Kth +% level list, the command |\@listK| is called, where `K' denotes `i', +% '`i', ... , `vi'. (I.e., |\@listiii| is called for a third-level +% list.) By convention, |\@listK| should set |\leftmargin| to +% |\leftmarginK|. +% +% \begin{macro}{\leftmargin} +% \begin{macro}{\leftmargini} +% \begin{macro}{\leftmarginii} +% \begin{macro}{\leftmarginiii} +% \begin{macro}{\leftmarginiv} +% \begin{macro}{\leftmarginv} +% \begin{macro}{\leftmarginvi} +% For efficiency, level-one list's values are defined at top level, and +% |\@listi| is defined to set only |\leftmargin|. +% +% \begin{macrocode} +\setlength\leftmargini {\unitindent} +\setlength\leftmarginii {\othermargin} +\setlength\leftmarginiii{\othermargin} +\setlength\leftmarginiv {\othermargin} +\setlength\leftmarginv {\othermargin} +\setlength\leftmarginvi {1em} +% \end{macrocode} +% Here we set the top level leftmargin. +% \begin{macrocode} +\setlength\leftmargin {\leftmargini} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\labelsep} +% \begin{macro}{\labelwidth} +% |\labelsep| is the distance between the label and the text of an +% item; |\labelwidth| is the width of the label. +% \begin{macrocode} +\setlength \labelsep {5\p@} +\setlength \labelwidth{\leftmargini} +\addtolength\labelwidth{-\labelsep} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\partopsep} +% When the user leaves a blank line before the environment an extra +% vertical space of |\partopsep| is inserted, in addition to +% |\parskip| and |\topsep|. +% \begin{macrocode} +\setlength\partopsep{\z@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\topsep} +% Extra vertical space, in addition to |\parskip|, added above and +% below list and paragraphing environments. +% \begin{macrocode} +\setlength\topsep{\z@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@beginparpenalty} +% \begin{macro}{\@endparpenalty} +% These penalties are inserted before and after a list or paragraph +% environment. They are set to a bonus value to encourage page +% breaking at these points. +% \begin{macro}{\@itempenalty} +% This penalty is inserted between list items. +% \begin{macrocode} +\@beginparpenalty -\@lowpenalty +\@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@listI} +% \begin{macro}{\@listi} +% |\@listI| defines top level and |\@listi| values of +% |\leftmargin|, |\parsep|, |\topsep|, and |\itemsep| +% +% \begin{macrocode} +\def\@listI{% + \leftmargin\unitindent + \labelsep.5em% + \labelwidth\leftmargin + \advance\labelwidth-\labelsep + \parsep \z@ +%<-type3> \topsep 0\p@ \@plus\p@ +%<+type3> \topsep -.5\parskip \@plus\p@ + \itemsep 0\p@ \@plus1\p@} +\let\@listi\@listI +% \end{macrocode} +% We have to initialise these parameters. +% \begin{macrocode} +\@listi +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@listii} +% \begin{macro}{\@listiii} +% \begin{macro}{\@listiv} +% \begin{macro}{\@listv} +% \begin{macro}{\@listvi} +% Here are the same macros for the higher level lists. +% \begin{macrocode} +\def\@listii {\leftmargin\leftmarginii + \labelsep .5em% + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep +%<-type3> \topsep 0\p@ \@plus\p@ +%<+type3> \topsep -.5\parskip\@plus\p@ + \parsep \z@ + \itemsep \z@ \@plus\p@} +\def\@listiii{\leftmargin\leftmarginiii + \labelsep .5em% + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep +%<-type3> \topsep 0\p@ \@plus\p@ +%<+type3> \topsep -.5\parskip\@plus\p@ + \parsep \z@ + \partopsep \z@ \@plus\p@ + \itemsep \z@ \@plus\p@} +\def\@listiv {\leftmargin\leftmarginiv + \labelsep .5em% + \labelwidth\leftmarginiv% + \advance\labelwidth-\labelsep +%<-type3> \topsep 0\p@ \@plus\p@ +%<+type3> \topsep -.5\parskip\@plus\p@ + \parsep \z@ + \itemsep \z@ \@plus\p@} +\def\@listv {\leftmargin\leftmarginv + \labelsep .5em% + \labelwidth\leftmarginv + \advance\labelwidth-\labelsep% +%<-type3> \topsep 0\p@ \@plus\p@ +%<+type3> \topsep -.5\parskip\@plus\p@ + \parsep \z@ + \itemsep \z@ \@plus\p@} +\def\@listvi {\leftmargin\leftmarginvi + \labelsep .5em + \labelwidth\leftmarginvi + \advance\labelwidth{-\labelsep}% +%<-type3> \topsep 0\p@ \@plus\p@ +%<+type3> \topsep -.5\parskip\@plus\p@ + \parsep \z@ + \itemsep \z@ \@plus\p@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{Enumerate} +% +% The enumerate environment uses four counters: \Lcount{enumi}, +% \Lcount{enumii}, \Lcount{enumiii} and \Lcount{enumiv}, where +% \Lcount{enumN} controls the numbering of the Nth level +% enumeration. +% +% \begin{macro}{\theenumi} +% \begin{macro}{\theenumii} +% \begin{macro}{\theenumiii} +% \begin{macro}{\theenumiv} +% The counters are already defined in \file{latex.dtx}, but their +% representation is changed here. +% +% \begin{macrocode} +\renewcommand\theenumi{\arabic{enumi}} +\renewcommand\theenumii{\alph{enumii}} +\renewcommand\theenumiii{\roman{enumiii}} +\renewcommand\theenumiv{\Alph{enumiv}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\labelenumi} +% \begin{macro}{\labelenumii} +% \begin{macro}{\labelenumiii} +% \begin{macro}{\labelenumiv} +% The label for each item is generated by the commands\\ +% |\labelenumi| ... |\labelenumiv|. +% \begin{macrocode} +\newcommand\labelenumi{\theenumi.} +\newcommand\labelenumii{(\theenumii)} +\newcommand\labelenumiii{\theenumiii.} +\newcommand\labelenumiv{\theenumiv.} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\p@enumii} +% \begin{macro}{\p@enumiii} +% \begin{macro}{\p@enumiv} +% The expansion of |\p@enumN||\theenumN| defines the output of a +% |\ref| command when referencing an item of the Nth level of an +% enumerated list. +% \begin{macrocode} +\renewcommand\p@enumii{\theenumi} +\renewcommand\p@enumiii{\theenumi(\theenumii)} +\renewcommand\p@enumiv{\p@enumiii\theenumiii} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \begin{environment}{enumerate} +% We want to have different label positioning on different levels of +% list. To acheive this we have to redefine the \Lenv{enumerate} +% environment. +% +% \begin{macrocode} +\renewenvironment{enumerate}{% + \ifnum \@enumdepth >3 + \@toodeep + \else + \advance\@enumdepth \@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \list{\csname label\@enumctr\endcsname} + {\usecounter{\@enumctr}% +%<+type1> \ifnum \@listdepth=1 + \if@revlabel + \def\makelabel##1{\hskip .5\unitindent{##1\hfil}}% + \else +%<-type3> \def\makelabel##1{\hfil##1} +%<+type3> \def\makelabel##1{##1\hfil} + \fi +%<*type1> + \else + \def\makelabel##1{##1\hfil}% +%</type1> + \fi + }% + \fi} +% \end{macrocode} +% We try to suppress spaces after these list constructs. +% \begin{macrocode} + {\global\@ignoretrue \endlist} +% \end{macrocode} +% \end{environment} +% +% \subsubsection{Itemize} +% +% \begin{macro}{\labelitemi} +% \begin{macro}{\labelitemii} +% \begin{macro}{\labelitemiii} +% \begin{macro}{\labelitemiv} +% Itemization is controlled by four commands: |\labelitemi|, +% |\labelitemii|, |\labelitemiii|, and |\labelitemiv|, which define +% the labels of thevarious itemization levels: the symbols used are +% bullet, bold en-dash, asterisk and centred dot. +% +% \begin{macrocode} +\newcommand\labelitemi{$\m@th\bullet$} +\newcommand\labelitemii{\bfseries --} +\newcommand\labelitemiii{$\m@th\ast$} +\newcommand\labelitemiv{$\m@th\cdot$} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{environment}{itemize} +% We want to have differen label positioning on different levels of +% list. To acheive this we have to redefine the \Lenv{itemize} +% environment. +% \begin{macrocode} +\renewenvironment{itemize}{% + \ifnum \@itemdepth >3 + \@toodeep + \else + \advance\@itemdepth \@ne + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \list{\csname\@itemitem\endcsname}% + {% +%<+type1> \ifnum \@listdepth=1\relax + \if@revlabel + \def\makelabel##1{\hskip .5\unitindent{##1\hfil}}\else +%<+type1> \def\makelabel##1{\hfil##1} +%<+type3> \def\makelabel##1{##1\hfil} + \fi +%<*type1> + \else + \def\makelabel##1{##1\hfil} + \fi +%</type1> + }% + \fi} +% \end{macrocode} +% We try to suppress spaces after these list constructs. +% \begin{macrocode} + {\global\@ignoretrue \endlist} +% \end{macrocode} +% \end{environment} +% +% \subsubsection{Description} +% +% \begin{environment}{description} +% The description environment is defined here -- while the itemize +% and enumerate environments are defined in \file{latex.dtx}. +% +% \begin{macrocode} +\newenvironment{description} + {\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}} + {\endlist} +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\descriptionlabel} +% To change the formatting of the label, you must redefine +% |\descriptionlabel|. +% +% \begin{macrocode} +\newcommand\descriptionlabel[1]{\hspace\labelsep \bfseries #1} +% \end{macrocode} +% \end{macro} +% +% \subsection{Adapting existing environments} +% +% Because we globally set |\topsep| to zero, we need to modify the +% definitions of a number of environments slightly to get a litle +% whitespace around them. +% +% \begin{environment}{center} +% Add a litle surrounding whitespace. +% \begin{macrocode} +%<*type1> +\def\center + {\topsep=.25\baselineskip \@plus .1\baselineskip + \@minus .1\baselineskip + \trivlist \centering\item[]} +\let\endcenter\endtrivlist +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{flushleft} +% Add a litle surrounding whitespace. +% \begin{macrocode} +\def\flushleft + {\topsep=.25\baselineskip \@plus .1\baselineskip + \@minus .1\baselineskip + \trivlist \raggedright\item[]} +\let\endflushleft=\endtrivlist +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{flushright} +% Add a litle surrounding whitespace. +% \begin{macrocode} +\def\flushright + {\topsep=.25\baselineskip \@plus .1\baselineskip + \@minus .1\baselineskip + \trivlist \raggedleft\item[]} +\let\endflushright=\endtrivlist +%</type1> +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{verbatim} +% In \Lenv{verbatim} we add a little surrounding whitespace, +% --which for \file{rapport3} is negative to +% compensate for the positive |\parskip|-- but also an indent for +% the \file{rapport1} document class. +% \begin{macrocode} +\def\verbatim{% +%<*type1> + \topsep=.25\baselineskip \@plus .1\baselineskip + \@minus .1\baselineskip + \@verbatim + \leftskip\unitindent +%</type1> +%<*type3> + \topsep=-.5\parskip + \@verbatim +%</type3> + \frenchspacing\@vobeyspaces \@xverbatim} +%<+type1>\def\endverbatim{\if@newlist \leavevmode\fi\endtrivlist} +% \end{macrocode} +% \end{environment} +% +% \subsection{Defining new environments} +% +% \subsubsection{Abstract} +% +% \begin{environment}{abstract} +% When we are producing a separate titlepage we also put the +% abstract on a page of its own. It will be centred vertically on +% the page. +% +% \begin{macrocode} +\if@titlepage + \newenvironment{abstract}{% + \titlepage + \null\vfil + \hbox{\SectFont \abstractname} + \noindent\ignorespaces} + {\par\vfil\null\endtitlepage} +% \end{macrocode} +% When we are not making a seperate titlepagewe have to check if we +% are in twocolumn mode. In that case the abstract is set as a +% |\section*|, otherwise the abstract is typeset flushleft, an +% amount |\unitindent| smaller as the normal text. +% \begin{macrocode} +\else + \newenvironment{abstract}{% + \if@twocolumn + \section*{\abstractname}% + \else + \small + \bgroup\rightskip=\unitindent + \hbox{\SectFont \abstractname}% + \noindent\ignorespaces +% \end{macrocode} + \fi} +% \end{macrocode} +% Which implies that the definition of |\end{abstract}| is also +% different. +% \begin{macrocode} + {\if@twocolumn\else\par\egroup\fi} +\fi +% \end{macrocode} +% \end{environment} +% +% \subsubsection{Verse} +% +% \begin{environment}{verse} +% The verse environment is defined by making clever use of the +% list environment's parameters. The user types |\\| to end a line. +% This is implemented by |\let|'ing |\\| equal |\@centercr|. +% +% \begin{macrocode} +\newenvironment{verse} + {\let\\=\@centercr + \list{}{\itemsep\z@ + \itemindent-1.5em% + \listparindent\itemindent + \rightmargin\leftmargin + \advance\leftmargin1.5em}% + \item[]} + {\endlist} +% \end{macrocode} +% \end{environment} +% +% \subsubsection{Quotation} +% +% \begin{environment}{quotation} +% The quotation environment is also defined by making clever use of +% the list environment's parameters. The lines in the environment +% are set smaller than |\textwidth|. The first line of a paragraph +% inside this environment is indented. +% +% \begin{macrocode} +\newenvironment{quotation} + {\list{}{% + \listparindent\z@ + \itemindent\listparindent + \rightmargin\leftmargin + \parsep\z@ \@plus\p@}% + \item[]} + {\endlist} +% \end{macrocode} +% \end{environment} +% +% \subsubsection{Quote} +% +% \begin{environment}{quote} +% The quote environment is like the quotation environment except +% that paragraphs are not indented. +% +% \begin{macrocode} +\newenvironment{quote} + {\list{}{\rightmargin\leftmargin}% + \item[]} + {\endlist} +% \end{macrocode} +% \end{environment} +% +% \subsubsection{Theorem} +% +% \begin{macro}{\@begintheorem} +% \begin{macro}{\@opargbegintheorem} +% \begin{macro}{\@endtheorem} +% These document classes have a slightly modified \Lenv{theorem} +% environment style. Surrounding whitespace is added and an +% initialisation of |\labelsep|. Finally a slanted font instead of +% an italic font is used. +% \begin{macrocode} +\def\@begintheorem#1#2{% + \vskip\baselineskip \labelsep=.5em% + \trivlist + \item[\hskip \labelsep{\bfseries #1\ #2}]\slshape} +\def\@opargbegintheorem#1#2#3{% + \vskip\baselineskip \labelsep=.5em% + \trivlist + \item[\hskip \labelsep{\bfseries #1\ #2\ (#3)}]\slshape} +\def\@endtheorem{\endtrivlist \vskip\baselineskip} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{Titlepage} +% +% \begin{environment}{titlepage} +% In the normal environments, the titlepage environment does nothing +% but start and end a page, and inhibit page numbers. It also resets +% the page number to zero. In two-column style, it still makes a +% one-column page. +% +% \begin{macrocode} +\newenvironment{titlepage} + { + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse\newpage + \fi + \thispagestyle{empty}% + \if@compatibility + \setcounter{page}{0} + \else + \setcounter{page}{1}% + \fi} + {\if@restonecol\twocolumn \else \newpage \fi + \setcounter{page}{1}% + } +% \end{macrocode} +% \end{environment} +% +% \subsubsection{Appendix} +% +% \begin{macro}{\appendix} +% +% The |\appendix| command is not really an environment, it is a +% macro that makes some changes in the way things are done. +% +% In this document class the |\appendix| command must do the +% following: +% \begin{itemize} +% \item reset the chapter and section counters to zero, +% \item set |\@chapapp| to |\appendixname| (for messages), +% \item redefine the chapter counter to produce appendix numbers, +% \item possibly redefine the |\chapter| command if appendix titles +% and headings are to look different from chapter titles and +% headings. +% \end{itemize} +% +% \begin{macrocode} +\newcommand\appendix{\par + \setcounter{chapter}{0}% + \setcounter{section}{0}% + \renewcommand\@chapapp{\appendixname}% + \renewcommand\thechapter{\Alph{chapter}}} +% \end{macrocode} +% \end{macro} +% +% \subsection{Setting parameters for existing environments} +% +% \subsubsection{Array and tabular} +% +% \begin{macro}{\arraycolsep} +% The columns in an array environment are separated by +% 2|\arraycolsep|. +% \begin{macrocode} +\setlength\arraycolsep{5\p@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\tabcolsep} +% The columns in an tabular environment are separated by +% 2|\tabcolsep|. +% \begin{macrocode} +\setlength\tabcolsep{6\p@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\arrayrulewidth} +% The width of rules in the array and tabular environments is given +% by |\arrayrulewidth|. +% \begin{macrocode} +\setlength\arrayrulewidth{.4\p@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\doublerulesep} +% The space between adjacent rules in the array and tabular +% environments is given by |\doublerulesep|. +% \begin{macrocode} +\setlength\doublerulesep{2\p@} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Tabbing} +% +% \begin{macro}{\tabbingsep} +% This controls the space that the |\'| command puts in. (See +% \LaTeX{} manual for an explanation.) +% \begin{macrocode} +\setlength\tabbingsep{\labelsep} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Minipage} +% +% \begin{macro}{\@minipagerestore} +% The macro |\@minipagerestore| is called upon entry to a minipage +% environment to set up things that are to be handled differently +% inside a minipage environment. +% +% \begin{macrocode} +%<+type1>\def\@minipagerestore{\parindent\unitindent} +%<*type3> +\def\@minipagerestore{% + \parskip=.5\baselineskip \@plus .1\baselineskip + \@minus .1\baselineskip} +%</type3> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@mpfootins} +% Minipages have their own footnotes; |\skip||\@mpfootins| plays +% same r\^ole for footnotes in a minipage as |\skip||\footins| does +% for ordinary footnotes. +% +% \begin{macrocode} +\skip\@mpfootins = \skip\footins +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Framed boxes} +% +% \begin{macro}{\fboxsep} +% The space left by |\fbox| and |\framebox| between the box and the +% text in it. +% \begin{macro}{\fboxrule} +% The width of the rules in the box made by |\fbox| and |\framebox|. +% \begin{macrocode} +\setlength\fboxsep{3\p@} +\setlength\fboxrule{.4\p@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsubsection{Equation and eqnarray} +% +% \begin{macro}{\theequation} +% The equation counter will be reset at beginning of a new chapter +% and the equation number will be prefixed by the chapter number. +% +% This code must follow the |\chapter| definition, or more exactly +% the definition of the chapter counter. +% \begin{macrocode} +\@addtoreset{equation}{chapter} +\renewcommand\theequation{\thechapter.\arabic{equation}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\jot} +% |\jot| is the extra space added between lines of an eqnarray +% environment. The default value is used. +% \begin{macrocode} +% \setlength\jot{3pt} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@eqnnum} +% The macro |\@eqnnum| defines how equation numbers are to appear in +% equations. Again the default is used. +% +% \begin{macrocode} +% \def\@eqnnum{(\theequation)} +% \end{macrocode} +% \end{macro} +% +% \subsection{Floating objects} +% +% The file \file{latex.dtx} only defines a number of tools with +% which floating objects can be defined. This is done in the +% document class. It needs to define the following macros for each +% floating object of type \texttt{TYPE} (e.g., \texttt{TYPE} = +% figure). +% +% \begin{description} +% \item[\texttt{\bslash fps@TYPE}] +% The default placement specifier for floats of type +% \texttt{TYPE}. +% +% \item[\texttt{\bslash ftype@TYPE}] +% The type number for floats of type \texttt{TYPE}. Each +% \texttt{TYPE} has associated a unique positive {\texttt +% TYPE} number, which is a power of two. E.g., figures might +% have type number 1, tables type number 2, programs type +% number 4, etc. +% +% \item[\texttt{\bslash ext@TYPE}] +% The file extension indicating the file on which the contents +% list for float type \texttt{TYPE} is stored. For example, +% |\ext@figure| = `lof'. +% +% \item[\texttt{\bslash fnum@TYPE}] +% A macro to generate the figure number for a caption. For +% example, |\fnum@TYPE| == `Figure |\thefigure|'. +% +% \item[\texttt{\bslash @makecaption{\meta{num}}{\meta{text}}}] +% A macro to make a caption, with \meta{num} the value produced +% by |\fnum@...| and \meta{text} the text of the caption. It +% can assume it's in a |\parbox| of the appropriate width. +% This will be used for {\em all} floating objects. +% +% \end{description} +% +% The actual environment that implements a floating object such as +% a figure is defined using the macros |\@float| and |\end@float|, +% which are defined in \file{latex.dtx}. +% +% An environment that implements a single column floating object is +% started with |\@float{|\texttt{TYPE}|}[|\meta{placement}|]| of type +% \texttt{TYPE} with \meta{placement} as the placement specifier. +% The default value of \meta{PLACEMENT} is defined by |\fps@TYPE|. +% +% The environment is ended by |\end@float|. E.g., |\figure| == +% |\@float|{figure}, |\endfigure| == |\end@float|. +% +% \subsubsection{Figure} +% +% Here is the implementation of the figure environment. +% +% \begin{macro}{\c@figure} +% First we have to allocate a counter to number the figures. In +% this document class the figures are numbered per chapter. +% \begin{macrocode} +\newcounter{figure}[chapter] +\renewcommand\thefigure{\thechapter.\@arabic\c@figure} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fps@figure} +% \begin{macro}{\ftype@figure} +% \begin{macro}{\ext@figure} +% \begin{macro}{\num@figure} +% Here are the parameters for the floating objects of type `figure'. +% \begin{macrocode} +\def\fps@figure{tbp} +\def\ftype@figure{1} +\def\ext@figure{lof} +\def\fnum@figure{\figurename~\thefigure} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{environment}{figure} +% \begin{environment}{figure*} +% And the definition of the actual environment. The form with the +% |*| is used for double column figures. +% \begin{macrocode} +\newenvironment{figure} + {\@float{figure}} + {\end@float} +\newenvironment{figure*} + {\@dblfloat{figure}} + {\end@dblfloat} +% \end{macrocode} +% \end{environment} +% \end{environment} +% +% \subsubsection{Table} +% +% Here is the implementation of the table environment. It is very +% much the same as the figure environment. +% +% \begin{macro}{\c@table} +% First we have to allocate a counter to number the tables. In this +% document class the tables are numbered per chapter. +% \begin{macrocode} +\newcounter{table}[chapter] +\renewcommand\thetable{\thechapter.\@arabic\c@table} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fps@table} +% \begin{macro}{\ftype@table} +% \begin{macro}{\ext@table} +% \begin{macro}{\num@table} +% Here are the parameters for the floating objects of type `table'. +% \begin{macrocode} +\def\fps@table{tbp} +\def\ftype@table{2} +\def\ext@table{lot} +\def\fnum@table{\tablename~\thetable} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{environment}{table} +% \begin{environment}{table*} +% And the definition of the actual environment. The form with the +% |*| is used for double column tables. +% \begin{macrocode} +\newenvironment{table} + {\@float{table}} + {\end@float} +\newenvironment{table*} + {\@dblfloat{table}} + {\end@dblfloat} +% \end{macrocode} +% \end{environment} +% \end{environment} +% +% \subsubsection{Captions} +% +% \begin{macro}{\@makecaption} +% The |\caption| command calls |\@makecaption| to format the +% caption of floating objects. It gets two arguments, +% \meta{number}, the number of the floating object and \meta{text}, +% the text of the caption. Usually \meta{number} contains a string +% such as `Figure 3.2'. The macro can assume it is called inside a +% |\parbox| of right width, with |\normalsize|. +% +% \begin{macro}{\abovecaptionskip} +% \begin{macro}{\belowcaptionskip} +% These lengths contain the amount of white space to leave above +% and below the caption. +% \begin{macrocode} +\newlength\abovecaptionskip +\newlength\belowcaptionskip +\setlength\abovecaptionskip{10\p@} +\setlength\belowcaptionskip{0\p@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The definition of this macro is |\long| in order to allow more +% then one paragraph in a caption. +% \begin{macrocode} +\long\def\@makecaption#1#2{% + \vskip\abovecaptionskip +% \end{macrocode} +% We want to see if the caption fits on one line on the page, +% therefore we first typeset it in a temporary box. +% \begin{macrocode} + \sbox\@tempboxa{{\CaptionLabelFont#1:} \CaptionTextFont#2}% +% \end{macrocode} +% We can the measure its width. It that is larger than the current +% |\hsize| we typeset the caption as an ordinary paragraph. +% \begin{macrocode} + \ifdim \wd\@tempboxa >\hsize + {\CaptionLabelFont#1:} \CaptionTextFont#2\par +% \end{macrocode} +% If the caption fits, we center it. +% \begin{macrocode} + \else + \hbox to\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\CaptionLabelFont} +% \begin{macro}{\CaptionTextFont} +% These macros can contain the fonts used for typesetting captions. +% By default they do nothing. +% \begin{macrocode} +\newcommand\CaptionLabelFont{\relax} +\newcommand\CaptionTextFont{\relax} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\CaptionFonts} +% To change the fonts that are used to typeset captions +% this macro can be used. +% \begin{macrocode} +\newcommand\CaptionFonts[2]{% + \renewcommand\CaptionLabelFont{#1}% + \renewcommand\CaptionTextFont{#2}% + } +% \end{macrocode} +% \end{macro} +% +% \subsection{Font changing} +% +% Here we supply the declarative font changing commands that were +% common in \LaTeX\ version 2.09 and earlier. These commands work +% in text mode \emph{and} in math mode. They are provided for +% compatibility, but one should start using the |\text...| and +% |\math...| commands instead. These commands are defined using +% |\DeclareOldFontCommand|, a command with three arguments: the user +% command to be defined; \LaTeX\ commands to execute in text mode +% and \LaTeX\ commands to execute in math mode. +% +% \begin{macro}{\rm} +% \begin{macro}{\tt} +% \begin{macro}{\sf} +% +% The commands to change the family. When in compatibility mode we +% select the `default' font first, to get \LaTeX2.09 behviour. +% \begin{macrocode} +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\bf} +% The command to change to the bold series. One should use +% |\mdseries| to explicitly switch back to medium series. +% \begin{macrocode} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sl} +% \begin{macro}{\it} +% \begin{macro}{\sc} +% +% And the commands to change the shape of the font. The slanted and +% small caps shapes are not available by default as math alphabets, +% so those changes do nothing in math mode. One should use +% |\upshape| to explicitly change back to the upright shape. +% \begin{macrocode} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\relax} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\relax} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\cal} +% \begin{macro}{\mit} +% +% The commands |\cal| and |\mit| should only be used in math mode, +% outside math mode they have no effect. Currently the New Font +% Selection Scheme defines these commands to generate warning +% messages. Therefore we have to define them `by hand'. +% \begin{macrocode} +\renewcommand{\cal}{\protect\pcal} +\newcommand{\pcal}{\@fontswitch{\relax}{\mathcal}} +\renewcommand{\mit}{\protect\pmit} +\newcommand{\pmit}{\@fontswitch{\relax}{\mathnormal}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\pem} +% The definition of |\pem| is changed here to have slanted instead +% of italic fonts. +% \begin{macrocode} +\def\pem{\@nomath\em \ifdim \fontdimen\@ne\font >\z@ + \upshape \else \slshape \fi} +% \end{macrocode} +% \end{macro} +% +% \section{Cross Referencing} +% \subsection{Table of Contents, etc.} +% +% A |\section| command writes a +% |\contentsline{section}{|\meta{title}|}{|\meta{page}|}| command +% on the \file{.toc} file, where \meta{title} contains the +% contents of the entry and \meta{page} is the page number. If +% sections are being numbered, then \meta{title} will be of the +% form |\numberline{|\meta{num}|}{|\meta{heading}|}| where +% \meta{num} is the number produced by |\thesection|. Other +% sectioning commands work similarly. +% +% A |\caption| command in a `figure' environment writes +% +% |\contentsline{figure}{\numberline{|\meta{num}|}{|% +% \meta{caption}|}}{|\meta{page}|}| +% +% on the .\file{lof} file, where \meta{num} is the number produced +% by |\thefigure| and \meta{caption} is the figure caption. It +% works similarly for a `table' environment. +% +% The command |\contentsline{|\meta{name}|}| expands to +% |\l@|\meta{name}. So, to specify the table of contents, we must +% define |\l@chapter|, |\l@section|, |\l@subsection|, ... ; to +% specify the list of figures, we must define |\l@figure|; and so +% on. Most of these can be defined with either the +% |\@dottedtocline| or the |\@regtocline| command, which work as +% follows. +% +% |\@dottedtocline{|\meta{level}|}{|\meta{indent}|}{|^^A +% \meta{numwidth}|}{|^^A +% \meta{title}|}{|\meta{page}|}| +% +% |\@regtocline{|\meta{level}|}{|\meta{title}|}{|\meta{page}|}| +% +% \begin{description} +% \item[\meta{level}] An entry is produced only if\meta{ level} +% $<=$ value of the \Lcount{tocdepth} counter. Note, +% |\chapter| is level 0, |\section| is level 1, etc. +% \item[\meta{indent}] The indentation from the outer left margin +% of the start of the contents line. +% \item[\meta{numwidth}] The width of a box in which the section +% number is to go, if \meta{title} includes a |\numberline| +% command. +% \end{description} +% +% \begin{macro}{\@pnumwidth} +% \begin{macro}{\@tocrmarg} +% \begin{macro}{\@dotsep} +% This command uses the following three parameters, which are set +% with a |\newcommand| (so em's can be used to make them depend upon +% the font). +% \begin{description} +% \item[\texttt{\bslash @pnumwidth}] The width of a box in which the +% page number is put. +% \item[\texttt{\bslash @tocrmarg}] The right margin for multiple +% line entries. One wants |\@tocrmarg| > or = |\@pnumwidth| +% \item[\texttt{\bslash @dotsep}] Separation between dots, in mu +% units. Should be defined as a number like 2 or 1.7 +% \end{description} +% +% \begin{macrocode} +\newcommand\@pnumwidth{1.55em} +\newcommand\@tocrmarg {2.55em} +\newcommand\@dotsep{4.5} +\setcounter{tocdepth}{2} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{Table of Contents} +% +% \begin{macro}{\tableofcontents} +% This macro is used to request that \LaTeX{} produces a table of +% contents. The tables of contents, figures etc. are always set in +% single-column style. +% +% \begin{macrocode} +\newcommand\tableofcontents{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi +% \end{macrocode} +% The title is set using the |\chapter*| command, making sure that +% the running head --if one is required-- contains the right +% information. +% \begin{macrocode} + \chapter*{\contentsname + \@mkboth{\uppercase{\contentsname}}{\uppercase{\contentsname}}}% +% \end{macrocode} +% The the actual table of contents is made by calling +% |\@starttoc{toc}|. After that we restore twocolumn mode if +% necessary. +% \begin{macrocode} + \@starttoc{toc}% + \if@restonecol\twocolumn\fi + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@starttoc} +% The internal \LaTeXe macro |\@starttoc| needs to be adapted for +% the \file{rapport3} document classes,in order to deal with a the +% fact that for these document classes the |\parskip| is normally +% non-zero. We don't want that in the table of contents. +% \begin{macrocode} +%<*type3> +\def\@starttoc#1{\begingroup + \makeatletter + \parskip\z@ + \@input{\jobname.#1}% + \if@filesw + \expandafter\newwrite\csname tf@#1\endcsname + \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax + \fi \global\@nobreakfalse \endgroup} +%</type3> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@regtocline} +% These document classes use a different format for the table of +% contents than the standard classes from which they were +% developped. In order to acheive this different format we defined +% the macro |\@regtocline|. +% \begin{macrocode} +\newcommand\@regtocline[3]{% + \ifnum #1>\c@tocdepth + \else + \vskip \z@ plus .2pt + {\hangindent\z@ \@afterindenttrue \interlinepenalty\@M + \leftskip\unitindent + \rightskip=\unitindent plus 1fil + \parfillskip=0cm + \@tempdima=\unitindent + \parindent\z@ + \leavevmode + \hbox{}\hskip -\leftskip\relax#2\nobreak + \hskip 1em \nobreak{\slshape #3}\par + }% + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\toc@font} +% The changed definition of |\@sect| that we use, selects a +% different font for the table of contents for the various header +% levels. It does this using |\toc@font|. +% \begin{macrocode} +\if@oldtoc + \newcommand\toc@font[1]{\relax} +\else + \newcommand\toc@font[1]{% + \ifcase#1\relax + \bfseries + \or\slshape + \or\rmfamily + \fi} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\toc@case} +% The entries for parts are typeset in capital letters in the new +% style of the table of contents. In the old style this isn't +% done. The macro |\toc@case| is used to switch this. +% \begin{macrocode} +\if@oldtoc + \newcommand\toc@case{\relax} +\else + \newcommand\toc@case{\uppercase} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@part} +% Each sectioning command needs an additional macro to format its +% entry in the table of contents, as described above. The macro for +% the entry for parts is defined in a special way. +% +% First we make sure that if a pagebreak should occur, it occurs +% {\em before} this entry. Also a little whitespace is added and a +% group begun to keep changes local. +% +% First we have the definition from the standard classes. +% \begin{macrocode} +\if@oldtoc +\newcommand\l@part[2]{% + \addpenalty{-\@highpenalty}% + \addvspace{2.25em \@plus\p@}% + \begingroup +% \end{macrocode} +% The macro |\numberline| requires that the width of the box that +% holds the part number is stored in \LaTeX's scratch register +% |\@tempdima|. Therefore we put it there. +% \begin{macrocode} + \setlength\@tempdima{3em}% +% \end{macrocode} +% The we set |\parindent| to 0pt and use |\rightskip| to leave +% enough room for the pagenumbers. To prevent overfull box messages +% the |\parfillskip| is set to a negative value. +% \begin{macrocode} + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth +% \end{macrocode} +% Now we can set the entry, in a large bold font. We make sure to +% leave vertical mode, set the part title and add the pagenumber, +% set flush right. +% \begin{macrocode} + {\leavevmode + \large \bfseries #1\hfil \hbox to\@pnumwidth{\hss #2}}\par +% \end{macrocode} +% Prevent a pagebreak immediately after this entry, but use +% |\everypar| to reset the |\if@nobreak| switch. Finally we close +% the group. +% \begin{macrocode} + \nobreak + \global\@nobreaktrue + \everypar{\global\@nobreakfalse\everypar{}} + \endgroup} +% \end{macrocode} +% Then we can introduce our new definition. +% \begin{macrocode} +\else + \newcommand\l@part{\addpenalty{-\@highpenalty} + \addvspace{2.25em \@plus \p@}\@regtocline{0}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@chapter} +% This macro formats the entries in the table of contents for +% chapters. It is very similar to |\l@part| +% +% First we make sure that if a pagebreak should occur, it occurs +% {\em before} this entry. Also a little whitespace is added and a +% group begun to keep changes local. +% +% Again we first present the `standard' definition +% \begin{macrocode} +\if@oldtoc +\newcommand\l@chapter[2]{% + \addpenalty{-\@highpenalty}% + \vskip 1.0em \@plus\p@ +% \end{macrocode} +% +% The macro |\numberline| requires that the width of the box that +% holds the part number is stored in \LaTeX's scratch register +% |\@tempdima|. Therefore we put it there. We begin a group, and +% change some of the paragraph parameters. +% \begin{macrocode} + \setlength\@tempdima{1.5em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth +% \end{macrocode} +% Then we leave vertical mode and switch to a bold font. +% \begin{macrocode} + \leavevmode \bfseries +% \end{macrocode} +% Because we do not use |\numberline| here, we have do some fine +% tuning `by hand', before we can set the entry. We discourage but +% not disallow a pagebreak immediately after a chapter entry. +% \begin{macrocode} + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par + \penalty\@highpenalty + \endgroup} +% \end{macrocode} +% Then we present our new definition. +% \begin{macrocode} +\else + \newcommand\l@chapter{\@regtocline{0}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@section} +% In this document class the definition for +% |\l@section| is very simple. +% \begin{macrocode} +\if@oldtoc + \newcommand\l@section {\@dottedtocline{1}{1.5em}{2.3em}} +\else + \newcommand\l@section {\@regtocline{1}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@subsection} +% \begin{macro}{\l@subsubsection} +% \begin{macro}{\l@paragraph} +% \begin{macro}{\l@subparagraph} +% All lower level entries are defined using the macro +% |\@dottedtocline| or |\@regtocline| (see above). +% \begin{macrocode} +\if@oldtoc + \newcommand\l@subsection {\@dottedtocline{2}{3.8em}{3.2em}} + \newcommand\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}} + \newcommand\l@paragraph {\@dottedtocline{4}{10em}{5em}} + \newcommand\l@subparagraph {\@dottedtocline{5}{12em}{6em}} +\else + \newcommand\l@subsection {\@regtocline{2}} + \newcommand\l@subsubsection{\@regtocline{3}} + \newcommand\l@paragraph {\@regtocline{4}} + \newcommand\l@subparagraph {\@regtocline{5}} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{List of figures} +% +% \begin{macro}{\listoffigures} +% This macro is used to request that \LaTeX{} produces a list of +% figures. It is very similar to |\tableofcontents|. +% +% \begin{macrocode} +\newcommand\listoffigures{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \chapter*{\listfigurename + \@mkboth{\uppercase{\listfigurename}}% + {\uppercase{\listfigurename}}}% + \@starttoc{lof}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@figure} +% This macro produces an entry in the list of figures. +% \begin{macrocode} +\if@oldtoc + \newcommand\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} +\else + \newcommand\l@figure{\@regtocline{1}} +\fi +% \end{macrocode} +% \end{macro} +% +% \subsubsection{List of tables} +% +% \begin{macro}{\listoftables} +% This macro is used to request that \LaTeX{} produces a list of +% tables. It is very similar to |\tableofcontents|. +% +% \begin{macrocode} +\newcommand\listoftables{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \chapter*{\listtablename + \@mkboth{\uppercase{\listtablename}}{\uppercase{\listtablename}}}% + \@starttoc{lot}% + \if@restonecol\twocolumn\fi + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@table} +% This macro produces an entry in the list of tables. +% \begin{macrocode} +\let\l@table\l@figure +% \end{macrocode} +% \end{macro} +% +% \subsection{Bibliography} +% +% \begin{macro}{\bibindent} +% The ``open'' bibliography format uses an indentation of +% |\bibindent|. +% \begin{macrocode} +\newdimen\bibindent +\bibindent=1.5em +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newblock} +% This is a dummy definition for this macro which is used in the +% \textsf{thebibliography} environment. +% \begin{macrocode} +\newcommand\newblock{} +% \end{macrocode} +% \end{macro} +% +% \begin{environment}{thebibliography} +% The `thebibliography' environment executes the following +% commands: +% +% |\renewcommand\newblock{\hskip .11em \@plus .33em \@minus .07em}| +% -- Defines the ``closed'' format, where the blocks (major units +% of information) of an entry run together. +% +% |\sloppy| -- Used because it's rather hard to do line breaks in +% bibliographies, +% +% |\sfcode`\.=1000\relax| -- +% Causes a `.' (period) not to produce an end-of-sentence space. +% +% The implementation of this environment is based on the generic +% list environment. It uses the \Lcount{enumiv} counter internally +% to generate the labels of the list. +% +% When an empty `thebibliography' environment is found, a warning +% is issued. +% +% \begin{macrocode} +\newenvironment{thebibliography}[1] + {\chapter*{\bibname + \@mkboth{\uppercase{\bibname}}% + {\uppercase{\bibname}}}% + \list{\@biblabel{\arabic{enumiv}}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \if@openbib + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + \fi + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\arabic{enumiv}}}% + \if@openbib + \renewcommand\newblock{\par} + \else + \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`\.=\@m} + {\def\@noitemerr{\@warning{Empty `thebibliography' environment}}% + \endlist} +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\@biblabel} +% The label for a |\bibitem[...]| command is produced by this +% macro. The default from \file{latex.dtx} is used. +% \begin{macrocode} +% \renewcommand\@biblabel[1]{[#1]\hfill} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@cite} +% The output of the |\cite| command is produced by this macro. The +% default from \file{latex.dtx} is used. +% \begin{macrocode} +% \renewcommand\@cite[1]{[#1]} +% \end{macrocode} +% \end{macro} +% +% \subsection{The index} +% +% \begin{environment}{theindex} +% The environment `theindex' can be used for indices. It makes an +% index with two columns, with each entry a seperate paragraph. At +% the user level the commands |\item|, |\subitem| and |\subsubitem| +% are used to produce index entries of various levels. When a new +% letter of the alphabet is encountered an amount of |\indexspace| +% white space can be added. +% +% \begin{macrocode} +\newenvironment{theindex} + {\if@twocolumn + \@restonecolfalse + \else + \@restonecoltrue + \fi + \columnseprule \z@ + \columnsep 35\p@ + \twocolumn[\@makeschapterhead{\indexname}]% + \@mkboth{\uppercase{\indexname}}% + {\uppercase{\indexname}}% + \thispagestyle{plain}\parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \let\item\@idxitem} +% \end{macrocode} +% When the document continues after the index and it was a one +% column document we have to switch back to one column after the +% index. +% \begin{macrocode} + {\if@restonecol\onecolumn\else\clearpage\fi} +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\@idxitem} +% \begin{macro}{\subitem} +% \begin{macro}{\subsubitem} +% Thsee macros are used to format the entries in the index. ^^AA ??? +% \begin{macrocode} +\newcommand\@idxitem {\par\hangindent 40\p@} +\newcommand\subitem {\par\hangindent 40\p@ \hspace*{20\p@}} +\newcommand\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\indexspace} +% The amount of white space that is inserted between `letter +% blocks' in the index. +% \begin{macrocode} +\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax} +% \end{macrocode} +% \end{macro} +% +% \subsection{Footnotes} +% +% \begin{macro}{\footnoterule} +% Usually, footnotes are separated from the main body of the text +% by a small rule. This rule is drawn by the macro |\footnoterule|. +% We have to make sure that the rule takes no vertical space (see +% \file{plain.tex}) so we compensate for the natural heigth of the +% rule of 0.4pt by adding the right amount of vertical skip. +% +% To prevent the rule from colliding with the footnote we first add +% a little negative vertical skip, then we put the rule and add +% some positive vertical skip. +% \begin{macrocode} +\renewcommand\footnoterule{% + \kern-3\p@ + \kern.5\baselineskip + \hrule\@width\unitindent + \kern.4\baselineskip +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\c@footnote} +% Footnotes are numbered within chapters. +% \begin{macrocode} +% \newcounter{footnote} +\@addtoreset{footnote}{chapter} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@makefntext} +% The footnote mechanism of \LaTeX{} calls the macro |\@makefntext| +% to produce the actual footnote. The macro gets the text of the +% footnote as its argument and should use |\@thefnmark| as the mark +% of the footnote. The macro |\@makefntext|is called when +% effectively inside a |\parbox| of width |\columnwidth| (i.e., +% with |\hsize| = |\columnwidth|). +% +% An example of what can be achieved is given by the following piece +% of \TeX\ code. +% \begin{verbatim} +% \long\def\@xmakefntext#1#2{% +% %<-type3> \parindent=.5\unitindent +% %<+type3> \parindent=\z@\parskip=.5\baselineskip +% \def\labelitemi{--}\@revlabeltrue +% {\setbox0=\hbox {#1\hskip.5em plus 1fil}% +% \dimen0=2\wd0 +% \ifdim\dimen0>\unitindent +% \global\unitindent=\dimen0 +% \@indentset +% \fi}% +% \@setpar{\@@par +% \@tempdima \hsize +% \advance\@tempdima-.5\unitindent +% \parshape \@ne .5\unitindent \@tempdima}% +% \par +% \noindent\llap{\hbox to .5\unitindent{#1\hfil}}#2} +% \end{verbatim} +% The effect of this definition is that all lines of the footnote +% are indented by 10pt, while the first line of a new paragraph is +% indented by 1em. To change these dimensions, just substitute the +% desired value for `10pt' (in both places) or `1em'. The mark is +% flushright against the footnote. +% +% In these document classes we use a simpler macro, in which the +% footnote text is set like an ordinary text paragraph, with no +% indentation except on the first line of the footnote. Thus, all +% the macro must do is set |\parindent| to the appropriate value +% for succeeding paragraphs and put the proper indentation before +% the mark. We change the label of itemized lists inside footnotes +% and need to check that the |\unitindent| is large enough for our +% purposes. +% +% For most of the document classes produced from this file we need +% a slightly modified |\@makefntext| on the title page, so we +% introduce an extra macro, |\@xmakefntext|. +% \begin{macrocode} +\def\@makefntext{\@xmakefntext{$\m@th\@thefnmark$.}} +\long\def\@xmakefntext#1{% + \parindent\z@ + \def\labelitemi{--}\@revlabeltrue + {\setbox0=\hbox {#1\hskip.5em plus 1fil} + \dimen0=2\wd0\relax + \ifdim\dimen0>\unitindent + \global\unitindent=\dimen0\relax + \@indentset + \fi} + \leavevmode\hbox to .5\unitindent{#1\hfil}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@makefnmark} +% The footnote markers that are printed in the text to point to the +% footnotes should be produced by the macro |\@makefnmark|. We use +% the default definition for it. +% \begin{macrocode} +%\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}} +% \end{macrocode} +% \end{macro} +% +% \section{Initialization} +% +% \subsection{Words} +% +% \begin{macro}{\contentsname} +% \begin{macro}{\listfigurename} +% \begin{macro}{\listtablename} +% \begin{macro}{\refname} +% \begin{macro}{\bibname} +% \begin{macro}{\indexname} +% \begin{macro}{\figurename} +% \begin{macro}{\tablename} +% \begin{macro}{\partname} +% \begin{macro}{\chaptername} +% \begin{macro}{\appendixname} +% \begin{macro}{\abstractname} +% \begin{macro}{\seename} +% \begin{macro}{\andname} +% This document class is for documents prepared in the English language. +% To prepare a version for another language, various English words must +% be replaced. All the English words that require replacement are +% defined below in command names. +% +% \begin{macrocode} +\newcommand\contentsname{Contents} +\newcommand\listfigurename{List of Figures} +\newcommand\listtablename{List of Tables} +\newcommand\bibname{Bibliography} +\newcommand\indexname{Index} +\newcommand\figurename{Figure} +\newcommand\tablename{Table} +\newcommand\partname{Part} +\newcommand\chaptername{Chapter} +\newcommand\appendixname{Appendix} +\newcommand\abstractname{Abstract} +\newcommand\seename{see} +\newcommand\andname{and} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Date} +% +% \begin{macro}{\today} +% This macro uses the \TeX\ primitives |\month|, |\day| and |\year| +% to provide the date of the \LaTeX-run. +% \begin{macrocode} +\newcommand\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} +% \end{macrocode} +% \end{macro} +% +% \subsection{Two column mode} +% +% \begin{macro}{\columnsep} +% This gives the distance between two columns in two column mode. +% \begin{macrocode} +\setlength\columnsep{10\p@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\columnseprule} +% This gives the width of the rule between two columns in two +% column mode. We have no visible rule. +% \begin{macrocode} +\setlength\columnseprule{0\p@} +% \end{macrocode} +% \end{macro} +% +% \subsection{The page style} +% +% We have \pstyle{plain} pages unless the user specified +% otherwise. We use arabic pagenumbers. +% \begin{macrocode} +\pagestyle{plain} +\pagenumbering{arabic} % Arabic page numbers +% \end{macrocode} +% +% When the \Lopt{twocolumn} option was specified we call +% |\twocolumn| to activate this mode. We try to make each column as +% long as the others, but call |sloppy| to make our life easier. +% \begin{macrocode} +\if@twocolumn + \twocolumn + \sloppy + \flushbottom +% \end{macrocode} +% Normally we call |\onecolumn| to initiate typesetting in one +% column. +% \begin{macrocode} +\else + \onecolumn +\fi +% \end{macrocode} +% +% \begin{macro}{\frenchspacing} +% Controls the amount of space after a punctuation mark. +% \begin{macrocode} +\frenchspacing +%</class> +% \end{macrocode} +% \end{macro} +% +% \Finale +% +\endinput +% diff --git a/macros/latex/contrib/overpic/overpic.dtx b/macros/latex/contrib/overpic/overpic.dtx index 72bb795dbe..ee3ba5cc16 100644 --- a/macros/latex/contrib/overpic/overpic.dtx +++ b/macros/latex/contrib/overpic/overpic.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2017 by Rolf Niepraschk <Rolf.Niepraschk@gmx.de> +% Copyright (C) 1997-... by Rolf Niepraschk <Rolf.Niepraschk@gmx.de> % --------------------------------------------------------------------------- % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 @@ -19,7 +19,7 @@ % %<*package> \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{overpic}[2018/09/02 1.2 picture overlays (RN)] +\ProvidesPackage{overpic}[2020/02/22 1.3 picture overlays (RN)] %</package> % %<*driver> @@ -58,7 +58,7 @@ %</driver> % \fi % -% \CheckSum{176} +% \CheckSum{180} % % \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 @@ -202,6 +202,7 @@ % % \begin{lstlisting} % \begin{Overpic}[abs,unit=1mm,grid=true,tics=5]{% +% \bfseries\sffamily % \begin{tabular}{*{8}{p{8mm}}} % H & & & & & & & He\\ % Li & Be & B & C & N & O & F & Ne\\ @@ -211,13 +212,14 @@ % Cs & Ba & Tl & Pb & Bi & Po & At & Rn\\ % Fr & Ra & 112& & 114& & &\\ % \end{tabular}}% -% \linethickness{0.5mm} \color{blue}% -% \put(0,0){\polygon(0,30)(10,30)(10,21.5)(44,21.5)(44,13.5)% -% (22,13.5)(22,4.5)(0,4.5)} +% \put(0,0){\color{blue}\linethickness{0.5mm} +% \polygon(0,30)(10,30)(10,21.5)(45,21.5)(45,13)(22,13)% +% (22,4.5)(0,4.5)} % \end{Overpic} % \end{lstlisting} % \par\medskip\pagebreak[3] % \begin{Overpic}[abs,unit=1mm,grid=true,tics=5]{% +% \bfseries\sffamily % \begin{tabular}{*{8}{p{8mm}}} % H & & & & & & & He\\ % Li & Be & B & C & N & O & F & Ne\\ @@ -227,10 +229,10 @@ % Cs & Ba & Tl & Pb & Bi & Po & At & Rn\\ % Fr & Ra & 112& & 114& & &\\ % \end{tabular}}% -% \linethickness{0.5mm} \color{blue}% -% \put(0,0){\polygon(0,30)(10,30)(10,21.5)(44,21.5)(44,13.5)% -% (22,13.5)(22,4.5)(0,4.5)} -% \end{Overpic} +% \put(0,0){\color{blue}\linethickness{0.5mm} +% \polygon(0,30)(10,30)(10,21.5)(45,21.5)(45,13)(22,13)% +% (22,4.5)(0,4.5)} +% \end{Overpic} % % \StopEventually{} % @@ -345,10 +347,13 @@ % \end{environment} % \begin{environment}{Overpic} % \changes{1.0}{2017/10/06}{Suggested by \mbox{Herbert Vo\ss}} +% \changes{1.3}{2020/02/22}{Added missing \cmd\setkeys} % Box 0 gets any \TeX\ code. % \begin{macrocode} \newenvironment{Overpic}[2][]{% \sbox\OVP@box{#2}% + \count@=\z@ \Gin@gridfalse + \setkeys{Gin}{#1}% \OVP@picture{#1}% }{\endpicture} % \end{macrocode} diff --git a/macros/latex/contrib/overpic/overpic.ins b/macros/latex/contrib/overpic/overpic.ins index 30fdda1081..3d8dbf6ecf 100644 --- a/macros/latex/contrib/overpic/overpic.ins +++ b/macros/latex/contrib/overpic/overpic.ins @@ -25,7 +25,7 @@ This is a generated file. -Copyright (C) 1997-2016 by Rolf Niepraschk <Rolf.Niepraschk@gmx.de> +Copyright (C) 1997-... by Rolf Niepraschk <Rolf.Niepraschk@gmx.de> -------------------------------------------------------------------------- This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/overpic/overpic.pdf b/macros/latex/contrib/overpic/overpic.pdf Binary files differindex 312a4f5482..8537ae6883 100644 --- a/macros/latex/contrib/overpic/overpic.pdf +++ b/macros/latex/contrib/overpic/overpic.pdf diff --git a/macros/latex/contrib/suftesi/suftesi.dtx b/macros/latex/contrib/suftesi/suftesi.dtx index 618a3c3e47..6f35771eab 100644 --- a/macros/latex/contrib/suftesi/suftesi.dtx +++ b/macros/latex/contrib/suftesi/suftesi.dtx @@ -67,30 +67,58 @@ %<class>\NeedsTeXFormat{LaTeX2e}[2005/12/01] %<class>\ProvidesClass{suftesi} %<*class> - [2020/02/11 v2.9.6a A class for typesetting theses, books and articles] + [2020/02/22 v2.9.7 A class for typesetting theses, books and articles] %</class> %<*driver> -\documentclass{ltxdoc} - +\documentclass[10pt]{ltxdoc} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage[greek.ancient,english]{babel} +% fonts and colors +\usepackage{cochineal} +\usepackage[varqu,varl,var0]{inconsolata} +\usepackage{biolinum} +\usepackage{amsthm} +\usepackage[cochineal,bigdelims,cmintegrals,vvarbb]{newtxmath} +\usepackage[cal=boondoxo]{mathalfa} +\usepackage[svgnames]{xcolor} +\definecolor{philA}{named}{DarkRed} +\definecolor{philB}{named}{NavyBlue} + \definecolor{sufred}{rgb}{0.5,0,0} +\definecolor{sufgray}{rgb}{0.5,0.5,0.5} +\usepackage{metalogo} +\usepackage{guit} \usepackage[final]{microtype} +% doc facilities +\let\cs\relax +\let\cmd\relax +\usepackage{ltxdockit} \usepackage{siunitx} % To use the cochineal inside the document we have to define the family % because the .fd files of the font refer to conditionals % defined in 'cochineal.sty’: \DeclareFontFamily{T1}{Cochineal-LF}{} \DeclareFontShape{T1}{Cochineal-LF}{m}{n}{ - <-> s*[1.0] Cochineal-Roman-osf-t1}{} -% Doc facilities -\let\cs\relax -\let\cmd\relax -\usepackage{ltxdockit} + <-> s*[1.0] Cochineal-Roman-osf-t1}{} +% layout +\setcounter{tocdepth}{3} +\usepackage{geometry} +\geometry{a4paper, + margin=3cm, + headheight=15pt, + ignoreall, + heightrounded} +\usepackage{sectsty} +\allsectionsfont{\sffamily} +\usepackage{fancyhdr} +\fancyhf{} +\fancyhead[L]{© 2009--\the\year\quad Ivan Valbusa} +\fancyfoot[L]{\textsf{suftesi} + \fileversion{} -- \filedate} +\renewcommand{\footrulewidth}{0.4pt} +\fancyhead[R]{\thepage} +\pagestyle{fancy} % Graphics -\usepackage[svgnames]{xcolor} - \definecolor{sufred}{rgb}{0.5,0,0} - \definecolor{sufgray}{rgb}{0.5,0.5,0.5} \usepackage[framemethod=TikZ]{mdframed} \mdfsetup{roundcorner=3pt,linecolor=white,backgroundcolor=gray!10} \usepackage{tikz} @@ -100,12 +128,6 @@ \usepackage{array} \usepackage{booktabs} \usepackage{multirow} -% -\usepackage{fancyhdr} -\fancyhf{} -\fancyfoot[C]{\iffloatpage{}{\thepage}} -\renewcommand\headrulewidth{0pt} -\pagestyle{fancy} % Bibliography \usepackage[autostyle]{csquotes} \usepackage[style=philosophy-classic,backend=biber]{biblatex} @@ -125,6 +147,7 @@ { \fontfamily{#2}\fontsize{#4}{13}\selectfont% \textgreek{\greektxt}} {\fontfamily{#1}\selectfont\latintxtb}} % New commands +\newcommand{\new}{\marginpar{\textcolor{red}{\textbf{NEW!}}}} \newcommand{\argstyle}{\itshape} \DeclareRobustCommand*{\ar}[1]{\texttt{\char`\{}\textrm{\argstyle#1}\texttt{\char`\}}} \DeclareRobustCommand*{\oar}[1]{\texttt{[}\textrm{\argstyle#1}\texttt{]}} @@ -136,11 +159,9 @@ \newenvironment{ttquote} {\begin{mdframed}[default] \ttfamily\microtypesetup{activate=false}} - {\end{mdframed} - } + {\end{mdframed}} \newenvironment{latexcode} - {\begin{mdframed}[default] - } + {\begin{mdframed}[default]} {\end{mdframed}} % Correct (?) \optitem to use \meta inside #2 \makeatletter @@ -149,20 +170,75 @@ {\ltd@option{}{#2}{#3}{}} {\ltd@option{}{#2}{#3}{\ltd@textverb{#1}}}}% \makeatother +\makeatletter + +\def\ltd@textverb#1{\,#1\,} + +\renewenvironment*{optionlist} +{\list{}{% + \setlength{\labelwidth}{2.5cm}% + \setlength{\labelsep}{\z@}% + \setlength{\leftmargin}{2.5cm}% + \renewcommand*{\makelabel}[1]{\hss\optionlistfont##1}}% + \ltd@optionlist} +{\endlist} +\renewenvironment*{ltxsyntax}[1][3cm] +{\list{}{% + \setlength{\labelwidth}{3cm}% + \setlength{\labelsep}{0pt}% + \setlength{\leftmargin}{#1}% + \renewcommand*{\makelabel}[1]{% + \hss\ltxsyntaxfont\ltxsyntaxlabelfont##1}}% + \let\csitem\ltd@csitem + \let\cmditem\ltd@cmditem + \let\envitem\ltd@envitem + \let\lenitem\ltd@csitem + \let\boolitem\ltd@boolitem + \let\cntitem\ltd@item + \let\optitem\ltd@item} +{\endlist} +{\endlist} +\renewenvironment*{valuelist}[1][] +{\list{}{% + \ifblank{#1} + {\setlength{\labelwidth}{5em}} + {\setlength{\labelwidth}{#1}}% + \setlength{\labelsep}{1em}% + \setlength{\leftmargin}{\labelwidth}% + \addtolength{\leftmargin}{\labelsep}% + \setlength{\itemsep}{0pt}% + \renewcommand*{\makelabel}[1]{\valuelistfont##1\hss}}} +{\endlist} +\newcommand*{\valuelistfont}{% + \color{olive}\sffamily\displayverbfont} +\renewcommand*{\optionlistfont}{% + \color{philA}\sffamily\displayverbfont} +\renewcommand*{\ltxsyntaxlabelfont}{% + \color{philA}\sffamily\displayverbfont} +\renewcommand*{\marglistfont}{% + \color{philA}\sffamily\displayverbfont} +% Table of contents +\renewcommand\tableofcontents{% + \setlength{\columnsep}{1cm} + {\centering + \section*{\contentsname}% + \@mkboth{\contentsname}{\contentsname}} + \thispagestyle{empty} + \begin{multicols}{2} + \@starttoc{toc}% +\end{multicols}} +\makeatother + % hyperref setup \usepackage{hyperref} \hypersetup{% + hidelinks, pdftitle={User's Guide to \textsf{suftesi}}, pdfsubject={A document class for typesetting theses, books and articles}, pdfauthor={Ivan Valbusa}, pdfkeywords={thesis, humanities, books}} -% Informations -\author{Ivan Valbusa\thanks{Dipartimento di Scienze Umane, Università degli Studi di Verona --- - \texttt{ivan dot valbusa at univr dot it}}} -\title{\vspace*{-\baselineskip}User's Guide to \textsf{suftesi}\\ - \large A document class for typesetting\\ theses, books and articles} -\date{\fileversion{} -- \filedate} + \EnableCrossrefs \CodelineIndex @@ -175,7 +251,7 @@ %</driver> % \fi % -% \CheckSum{5283} +% \CheckSum{5286} % % \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 @@ -193,6 +269,7 @@ % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % +% \changes{v2.9.7}{2020/02/22}{New option \opt{fontisize}. The \opt{parindent} options now accepts arbitrary values. Updated documentation.} % \changes{v2.9.6a}{2020/02/11}{Maintenance release} % \changes{v2.9.6}{2020/02/10}{New option \opt{compacttoc}. The appendix page title is printed in the font of the chapters by default. Removed \cmd{apepndicesname} command.} % \changes{v2.9.5}{2020/02/04}{Restored \texttt{templates} folder. New template \texttt{book-customize}. New mechanism for the appendices through the \sty{appendix} package.} @@ -284,8 +361,19 @@ % \DoNotIndex{\titlepage,\vss,\vtop,\xdef,\@gobbletwo,\color,\dimexpr} % \DoNotIndex{\huge,\large,\makebox,\ProcessOptions,\renewcommand} % -%\maketitle -% +% \begin{center} + % {\color{philA}\bfseries + % \Huge User's Guide to \textsf{suftesi}\\[3mm]} + % {\large\itshape A document class for typesetting theses, books and articles} + %\vspace{.8cm} + % + % \normalsize\fileversion{} -- \filedate + % \vspace{.7cm} + % + % Ivan Valbusa\\[2mm] + % \footnotesize\texttt{ivan dot valbusa at univr dot it} + % \vspace{1cm} + % \end{center} % \begin{abstract} % The standard document classes allow you to typeset beautiful % documents but their layout is quite far from the stylistic requests @@ -298,9 +386,8 @@ % \citetitle{Bringhurst:1992} by Robert \textcite{Bringhurst:1992}, \citetitle{Tschichold:1975} by Jan \textcite{Tschichold:1975} and % \citetitle{Morison:1111} by Stanley \textcite{Morison:1111}. % \end{abstract} -%\begin{multicols}{2} +% % \tableofcontents -%\end{multicols} % % \section*{Legalese} % @@ -320,7 +407,7 @@ % the layout redefinitions. % % -% \section*{A brief history}\thispagestyle{empty} +% \section*{A brief history} % % The \sty{suftesi} class was born as a result of the course \emph{Introduzione a \LaTeX{} per le scienze umane} (\emph{Introduction to \LaTeX{} for the human sciences}) which I held at the Graduate School of Human Sciences and Philosophy (\textcolor{magenta}{\textbf{S}}cienze \textcolor{magenta}{\textbf{U}}mane e \textcolor{magenta}{\textbf{F}}ilosofia) of Verona University (Italy) in June 2010. Originally thought as a class to typeset theses, during these years it has developed many new features and styles. Finally it has become the referential class of the Joint Project \emph{Formal Style for PhD Theses with LaTeX} of the University of Verona. % @@ -344,27 +431,18 @@ % \cmd{documentclass}\oarm{options}\{suftesi\} % \end{ttquote} % All the options defined by the class are in the \meta{key}=\meta{value} format. -% ^^A \begin{verbatim} -% ^^A \cmd{documentclass}[\\ -% ^^A \opt{pagelayout=periodical},\\ -% ^^A \opt{chapfont=roman},\\ -% ^^A \opt{tocstyle=ragged},\\ -% ^^A \opt{marginpar=false},\\ -% ^^A ...\\ -% ^^A ]\ar{suftesi} -% ^^A \end{verbatim} +% % In addition to these you can also use the options defined by the standard \sty{book} class (on which \sty{suftesi} is based) except those modifying % the page dimensions (\opt{a4paper}, \opt{a5paper}, \opt{b5paper}, \opt{legalpaper}, \opt{executivepaper} and \opt{landscape}), which are automatically disabled. The class loads the packages listed in table \ref{tab:pkgloaded}. -% +% \subsection*{Using with Xe\LaTeX and Lua\LaTeX} % For using the class with the \XeTeX{} and \LuaTeX{} engines you need to load the \sty{fontspec} package (\sty{mathspec} is an alternative only for \XeTeX) and to select a main font. % % %\begin{table}[h] %\centering -%\fontsize{9.5}{11.5}\selectfont -%\begin{tabular}{>{\sffamily}r@{}>{\sffamily}l>{\raggedright\arraybackslash}>{\sffamily}p{7.6cm}} +%\begin{tabular}{>{\sffamily}r@{}>{\sffamily}l>{\raggedright\arraybackslash}>{\sffamily}p{9.6cm}} %\toprule -%&\textrm{Global}& appendix, {caption}, {color}, {crop}, {enumitem}, {emptypage}, {extramarks}, +%&\textrm{Global}& appendix, {caption}, {color}, {crop}, {enumitem}, {emptypage}, %{fancyhdr}, {fixltxhyph}, {fontenc}, {geometry}, {iftex}, %{microtype}, {multicol}, {titlesec}, {titletoc}, {xkeyval}, (cclicenses)\\\midrule %&\textrm{pdf\LaTeX{} only}&fontenc, substitutefont\\\midrule @@ -396,8 +474,8 @@ % %\begin{ttquote} %\cmd{documentclass}[structure=\meta{value},\meta{options}]\{suftesi\} -%^^A\cmd{documentclass}[structure=article,\meta{options}]\{suftesi\}\\ -%^^A\cmd{documentclass}[structure=collection,\meta{options}]\{suftesi\} +% ^^A\cmd{documentclass}[structure=article,\meta{options}]\{suftesi\}\\ +% ^^A\cmd{documentclass}[structure=collection,\meta{options}]\{suftesi\} %\end{ttquote} % % \changes{v0.9b}{2012/09/23}{The \sty{mparhack} package is no longer loaded. It is not compatible with \sty{crop}.} @@ -408,37 +486,56 @@ % % \begin{table}[h] %\centering -%\makebox[\textwidth][c]{\begin{tabular}{@{}lcccccccc@{}} +%\begin{tabular}{lcccccccl} %\toprule %&\multicolumn{4}{c}{Dimensions (mm)}&\multicolumn{4}{c}{Proportions}\\\cmidrule(lr){2-5}\cmidrule(lr){6-9} %&\multicolumn{2}{c}{Typeblock}&\multicolumn{2}{c}{Page}& \multicolumn{2}{c}{Margins}&\multicolumn{2}{c}{Stock}\\\cmidrule(lr){2-3}\cmidrule(lr){4-5}\cmidrule(lr){6-7}\cmidrule(l){8-9} %Layout &w & h& w& h&t\,/\,b&i\,/\,o&Typeblock& Page\\\cmidrule(r){2-3}\cmidrule(lr){4-5}\cmidrule(lr){6-7}\cmidrule(l){8-9}\cmidrule(r){1-1} -%\opt{standard} & 110& 220& 210& 297&$1:2$&$1:2$&$1:2$&$1:\kern-3pt\sqrt{2}$\\ -%\opt{standardaureo} & 136& 220& 210& 297&$2:3$&$2:3$&$5:8$\makebox[0pt]{\ \textsuperscript{*}}&$1:\kern-3pt\sqrt{2}$\\ +%\opt{standard} & 110& 220& 210& 297&$1:2$&$1:2$&$1:2$&$1:\sqrt{2}$\\ +%\opt{standardaureo} & 136& 220& 210& 297&$2:3$&$2:3$&$5:8$\makebox[0pt]{\ \textsuperscript{*}}&$1:\sqrt{2}$\\ %\opt{compact}& 110& 165& 160& 240&$2:3$&$2:3$&$2:3$&$2:3$\\ %\opt{compactaureo}& 118& 191& 160& 240&$2:3$&$2:3$&$5:8$\makebox[0pt]{\ \textsuperscript{*}}&$2:3$\\ %\opt{supercompact}& 100 &150& 140& 210&$2:3$&$2:3$&$2:3$&$2:3$\\ %\opt{supercompactaureo}& 108 &175& 140& 210&$1:1$&$1:1$&$5:8$\makebox[0pt]{\ \textsuperscript{*}}&$2:3$\\ -%\opt{periodical} &110& 165& 170& 240&$2:3$&$2:3$&$2:3$&$1:\kern-3pt\sqrt{2}$\\ -%\opt{periodicalaureo}& 120& 194& 170& 240&$2:3$&$2:3$&$5:8$\makebox[0pt]{\ \textsuperscript{*}}&$1:\kern-3pt\sqrt{2}$\\ +%\opt{periodical} &110& 165& 170& 240&$2:3$&$2:3$&$2:3$&$1:\sqrt{2}$\\ +%\opt{periodicalaureo}& 120& 194& 170& 240&$2:3$&$2:3$&$5:8$\makebox[0pt]{\ \textsuperscript{*}}&$1:\sqrt{2}$\\ % % \bottomrule\\[-2ex] % \multicolumn{9}{r}{\footnotesize\textsuperscript{*} $5:8\approx 1:1,618$} -%\end{tabular}}\\[-3ex] +%\end{tabular}\\[-3ex] % \caption{The layouts of \sty{suftesi}}\label{tab:layouts} % \end{table} % -%^^A The form of the book has been changing through the centuries and every content requires a particular shape. Nowdays the most widespread form for literary essays is a compact one. So, if you are interested in such a topic, you should consider the compact layouts. The one I prefer is shown on figure \ref{fig:periodicalaureo}. -% -%^^A\begin{figure}[h!]\centering -%^^A\noindent\begin{tikzpicture}[scale=0.3] -%^^A\draw (0,0) rectangle (17,24); -%^^A\draw[draw=none,fill=gray!50,xshift=3cm,yshift=2.6cm] (0,0) rectangle (12,19.4); -%^^A\draw[xshift=17cm] (0,0) rectangle ++(17,24); -%^^A\draw[xshift=17cm,draw=none,fill=gray!50,xshift=2cm,yshift=2.6cm] (0,0) rectangle ++(12,19.4); -%^^A\end{tikzpicture} -%^^A\caption{The \opt{periodicalaureo} layout}\label{fig:periodicalaureo} -%^^A\end{figure} +% +%You can define your own layouts through the \cmd{geometry} command and you can change the value of \cmd{baselineskip} too. For example you can resize the typeblock of the \texttt{supercompactaureo} layout to fit your particular needs. In this case remember to declare \cmd{normalsize} like in the following example: +%\begin{latexcode} +%\begin{verbatim} +%\linespread{0.95} +%\normalsize +%\geometry{ +%textheight= 162mm, +%textwidth= 100mm, +%paperwidth= 140mm, +%paperheight= 210mm, +%hmarginratio= 2:3, +%vmarginratio= 1:1, +%marginparwidth= 11mm, +%marginparsep= 7pt, +%ignoreall, +%heightrounded} +%\end{verbatim} +%\end{latexcode}% +% ^^A The form of the book has been changing through the centuries and every content requires a particular shape. Nowdays the most widespread form for literary essays is a compact one. So, if you are interested in such a topic, you should consider the compact layouts. The one I prefer is shown on figure \ref{fig:periodicalaureo}. +% +% ^^A\begin{figure}[h!]\centering +% ^^A\noindent\begin{tikzpicture}[scale=0.3] +% ^^A\draw (0,0) rectangle (17,24); +% ^^A\draw[draw=none,fill=gray!50,xshift=3cm,yshift=2.6cm] (0,0) rectangle (12,19.4); +% ^^A\draw[xshift=17cm] (0,0) rectangle ++(17,24); +% ^^A\draw[xshift=17cm,draw=none,fill=gray!50,xshift=2cm,yshift=2.6cm] (0,0) rectangle ++(12,19.4); +% ^^A\end{tikzpicture} +% ^^A\caption{The \opt{periodicalaureo} layout}\label{fig:periodicalaureo} +% ^^A\end{figure} % % \subsection{Fonts} % @@ -449,7 +546,9 @@ %The \opt{defaultfont} option allows you to can change the default roman font to New PX (Palatino-like), Linux Libertine O, or Latin modern. %You can use other fonts as well, but in this case remember to load the \opt{defaultfont=none} option which turns off the default font settings (see section \ref{sec:options} for details). % -%Another beautiful Garamond-like font, complete of real small caps, bold weight and mathematical support, is made available by the \sty{garamondx} package by Michael Sharpe, which provides an extension of the \sty{ugm} fonts, (URW)++ GaramondNo8. They are not distributed as part of \TeX Live, but they may be downloaded using the \texttt{getnonfreefonts} script. See the instructions for installation at +%Today there are several Garamond-like fonts in TeX Live distribution. See, for example \textit{Garamond Libre} (Open Type only) and \textit{Cormorant Garamond}. The Bembo-like fonts \textit{Etbb} and \textit{fbb} should also be considered if you appreciate humanist fonts. In any case, before using a font, read the license carefully. + +%Another beautiful Garamond-like font, complete of real small caps, bold weight and mathematical support, is made available by the \sty{garamondx} package by Michael Sharpe, which provides an extension of the \sty{ugm} fonts, (URW)++ GaramondNo8 (see the License note in the package documentation at the web page \url{https://www.ctan.org/pkg/garamondx}. They are not distributed as part of \TeX Live, but they may be downloaded using the \texttt{getnonfreefonts} script. See the instructions for installation at %\url{http://tug.org/fonts/getnonfreefonts/}. % % @@ -458,56 +557,56 @@ % The class loads by default a ‘minimal’ mathematical support for Cochineal (default), Linux Libertine O or New PX via the \sty{newtxmath} or \sty{newpxmath} packages by Michael Sharpe. Moreover the \opt{mathfont} option is provided to extend or disable the support for mathematics when using these fonts. These non-standard fonts have a very good mathematical support but if you aim at typesetting high mathematics the Latin Modern font family remains, of course, the better choice: \opt{defaultfont=standard}. See section \ref{sec:fonts} for details. % % If some of the loaded packages conflict or if you simply want to change some of the default font settings you should first reset the font default with \opt{defaultfont=none} option and then load the packages in the right order and with your favorite options. -%^^AFor example, these are the codes loaded for the three non-standard fonts: -%^^A -%^^A\paragraph{defaultfont=cochineal} -%^^A -%^^A\begin{latexcode} -%^^A\begin{verbatim} -%^^A\documentclass[defaultfont=none]{suftesi} -%^^A... -%^^A\usepackage{textcomp} -%^^A\usepackage{cochineal} -%^^A\usepackage[varqu,varl,var0]{inconsolata} -%^^A\usepackage{biolinum} -%^^A\usepackage{cochineal} -%^^A\usepackage{amsthm} -%^^A\usepackge[cochineal,bigdelims,cmintegrals,vvarbb]{newtxmath} -%^^A\usepackge[cal=boondoxo]{mathalfa} -%^^A\useosf -%^^A\useproportional -%^^A\end{verbatim} -%^^A\end{latexcode} -%^^A -%^^A\paragraph{defaultfont=palatino} -%^^A -%^^A\begin{latexcode} -%^^A\begin{verbatim} -%^^A\usepackage[full]{textcomp} -%^^A\usepackage{newpxtext} -%^^A\usepackage[scaled=1.06]{biolinum} -%^^A\usepackage[varqu,varl]{inconsolata} -%^^A\usepackage{amsthm} -%^^A\usepackage[bigdelims,vvarbb]{newpxmath} -%^^A\usepackage[cal=boondoxo]{mathalfa} -%^^A\useosf -%^^A\useproportional -%^^A\end{verbatim} -%^^A\end{latexcode} -%^^A -%^^A\paragraph{defaultfont=libertine} -%^^A -%^^A\begin{latexcode} -%^^A\begin{verbatim} -%^^A\usepackage{textcomp} -%^^A\usepackage[sb]{libertine} -%^^A\usepackage[varqu,varl,scaled=0.94]{inconsolata} -%^^A\usepackage{amsthm} -%^^A\usepackage[libertine,bigdelims,vvarbb]{newtxmath} -%^^A\usepackage[cal=boondoxo]{mathalfa} -%^^A\useosf -%^^A\end{verbatim} -%^^A\end{latexcode} +% ^^AFor example, these are the codes loaded for the three non-standard fonts: +% ^^A +% ^^A\paragraph{defaultfont=cochineal} +% ^^A +% ^^A\begin{latexcode} +% ^^A\begin{verbatim} +% ^^A\documentclass[defaultfont=none]{suftesi} +% ^^A... +% ^^A\usepackage{textcomp} +% ^^A\usepackage{cochineal} +% ^^A\usepackage[varqu,varl,var0]{inconsolata} +% ^^A\usepackage{biolinum} +% ^^A\usepackage{cochineal} +% ^^A\usepackage{amsthm} +% ^^A\usepackge[cochineal,bigdelims,cmintegrals,vvarbb]{newtxmath} +% ^^A\usepackge[cal=boondoxo]{mathalfa} +% ^^A\useosf +% ^^A\useproportional +% ^^A\end{verbatim} +% ^^A\end{latexcode} +% ^^A +% ^^A\paragraph{defaultfont=palatino} +% ^^A +% ^^A\begin{latexcode} +% ^^A\begin{verbatim} +% ^^A\usepackage[full]{textcomp} +% ^^A\usepackage{newpxtext} +% ^^A\usepackage[scaled=1.06]{biolinum} +% ^^A\usepackage[varqu,varl]{inconsolata} +% ^^A\usepackage{amsthm} +% ^^A\usepackage[bigdelims,vvarbb]{newpxmath} +% ^^A\usepackage[cal=boondoxo]{mathalfa} +% ^^A\useosf +% ^^A\useproportional +% ^^A\end{verbatim} +% ^^A\end{latexcode} +% ^^A +% ^^A\paragraph{defaultfont=libertine} +% ^^A +% ^^A\begin{latexcode} +% ^^A\begin{verbatim} +% ^^A\usepackage{textcomp} +% ^^A\usepackage[sb]{libertine} +% ^^A\usepackage[varqu,varl,scaled=0.94]{inconsolata} +% ^^A\usepackage{amsthm} +% ^^A\usepackage[libertine,bigdelims,vvarbb]{newtxmath} +% ^^A\usepackage[cal=boondoxo]{mathalfa} +% ^^A\useosf +% ^^A\end{verbatim} +% ^^A\end{latexcode} % % % @@ -538,7 +637,7 @@ %\begin{figure} % \centering %\begin{tikzpicture} -% \draw[draw=gray,fill=white,drop shadow] (-.5\textwidth,0) rectangle (.5\textwidth,\textheight); +% \draw[draw=gray,fill=white,drop shadow] (-.5\textwidth,0) rectangle (.5\textwidth,.9\textheight); %\draw[line width=.5mm,fill=white,text=black,draw=black!60] (-4.2,17.1) circle (9mm) node {\parbox{12mm}{\centering\tiny * * * \\ St. Anford\\ University\\[1mm] * * * }}; %\node[anchor=north west] at (-2.5cm,18cm) {% % \parbox{8cm}{% @@ -579,8 +678,8 @@ %\begin{figure} % \centering %\begin{tikzpicture} -% \draw[draw=gray,fill=gray!5,drop shadow] (-.5\textwidth,0) rectangle (.5\textwidth,\textheight); -% \node at (0,.7\textheight) (c) {}; +% \draw[draw=gray,fill=gray!5,drop shadow] (-.5\textwidth,0) rectangle (.5\textwidth,.9\textheight); +% \node at (0,.65\textheight) (c) {}; % \draw[ball color=DarkBlue,draw=none] (c) circle (4.5cm); % \node[anchor=center,text=white] at (c) {\parbox{6cm}{% % \centering @@ -601,19 +700,19 @@ % \subsection{The cover page} % Since version 2.6 \sty{suftesi} provides a command to print a simple cover page (figure \ref{fig:cover}), inspired by the Italian designer Bruno \textcite[85-89]{munari:arte-come-mestiere}. The color used for the text and the circle as well as other graphical elements are partially customizable (see section \ref{sec:options} for details). The cover shown in figure \ref{fig:cover} is obtained with the following code: %\begin{latexcode} - %\begin{verbatim} - %\Cauthor{Bruce Lee} - %\Ctitle{The Art of Kicking} - %\Csubtitle{How to survive in the modern societies} - %\Ceditor{edited by\\ Walker Texas Ranger} - %\Cfoot{Punch Press\\\fbox{\bfseries P\&P}} - %\Cpagecolor{white!90!black} - %\Ctextcolor{white} - %\Cfootcolor{black} - % - %\makecover[ball color=DarkBlue,draw=none] - %\end{verbatim} - %\end{latexcode} +%\begin{verbatim} +%\Cauthor{Bruce Lee} +%\Ctitle{The Art of Kicking} +%\Csubtitle{How to survive in the modern societies} +%\Ceditor{edited by\\ Walker Texas Ranger} +%\Cfoot{Punch Press\\\fbox{\bfseries P\&P}} +%\Cpagecolor{white!90!black} +%\Ctextcolor{white} +%\Cfootcolor{black} +% +%\makecover[ball color=DarkBlue,draw=none] +%\end{verbatim} +%\end{latexcode} % %To produce a complete book cover, with spine and dust jacket, you should take a look at the \sty{bookcover} package by Tibor Tómács. % @@ -652,9 +751,9 @@ % % % -%^^A\subsection{Title page} +% ^^A\subsection{Title page} % -%^^A The class provides a very simple title page through the \cmd{maketitle} command. A large collection of stylish title pages is provided by the \sty{titlepages} package by Peter Wilson. This package is part of the \sty{memoir} documentation but you can copy the code examples and adapt them to work with \sty{suftesi} with quite simple changes. +% ^^A The class provides a very simple title page through the \cmd{maketitle} command. A large collection of stylish title pages is provided by the \sty{titlepages} package by Peter Wilson. This package is part of the \sty{memoir} documentation but you can copy the code examples and adapt them to work with \sty{suftesi} with quite simple changes. % % \subsection{The appendices} % Since version 2.9.5 the class relies on \sty{appendix} package to manage the appendices. To get the correct label in titles, headings and table of contents, you should use the \env{appendices} environment. @@ -738,7 +837,17 @@ % %\subsection{Font}\label{sec:fonts} % -% The first three options are available only with \LaTeX. +%\begin{optionlist} +% \optitem[10]{fontsize}{10, 10.1, 10.2...,11, 11.1, 11.2...} +% Sets the main font sizes for the document, changing the \cmd{baselineskip} accordingly. It is based on the \sty{fontsize} package. Remember that using \XeLaTeX{} or \LuaLaTeX{} you can change the default font size also with the option \opt{SizeFeatures} of \sty{fontspec}. For example: +%\begin{latexcode} +%\begin{verbatim} +%\setmainfont[SizeFeatures={Size=11.5}]{Garamond Libre} +%\end{verbatim} +%\end{latexcode} +% +%\end{optionlist} +% The first three options below are available only with \LaTeX. % Using \XeLaTeX{} or \LuaLaTeX{} % the default font is the Computer Modern but you can change it through % the \sty{fontspec} or \sty{mathspec} (\XeLaTeX{} only) packages. If you do not need to typeset mathematics, with these engines I do suggest the EB Garamond font family by Georg Duffner. @@ -751,7 +860,7 @@ % \item[cochineal] Loads the Cochineal serif, the Linux Biolinum O sans serif and the Inconsolata typewriter. % \item[libertine] Loads the Linux Libertine O serif, the Linux Biolinum O sans serif and the Inconsolata typewriter. % \item[palatino] Loads the New PX serif, the Linux Biolinum O sans serif and the Inconsolata typewriter. Note that the New PX font does not provide support for Greek. The \opt{greekfont=artemisa} option offers a very good solution. -%^^A and {\fontfamily{artemisia}\selectfont Artemisia} by the {\fontfamily{artemisia}\selectfont Greek Font Society} for the greek text. +% ^^A and {\fontfamily{artemisia}\selectfont Artemisia} by the {\fontfamily{artemisia}\selectfont Greek Font Society} for the greek text. % \item[standard] Loads the \sty{lmodern} package: Latin Modern font family and CB Greek. % \end{valuelist} % \optitem[none]{greekfont}{\opt{none}, \opt{artemisia}, \opt{porson}, \opt{bodoni}, \opt{cbgreek}} @@ -981,14 +1090,10 @@ % \subsection{Miscellaneous}\label{sec:miscellaneous} % %\begin{optionlist} -% \optitem[compact]{parindent}{\opt{compact}, \opt{wide}} +% \optitem[\cmd{baselineskip}]{parindent}{\opt{1em}, \opt{1cm}, \opt{17pt}, \ldots} % \changes{v0.9b}{2012/09/23}{New option \opt{parindent}} % \begin{valuelist} -% Sets the indentation of the first line of each paragraph except those following a section title. -% \item[compact] -% Sets indentation to 1\,em. -% \item[wide] -% Sets indentation to 1.5\,em. +% Sets the indentation of the first line of each paragraph except those following a section title. For backward compatibility you should use \opt{parindet=1em} or \opt{parindet=1.5} in place of \opt{parindet=compact} and \opt{parindet=wide} respectively. % \end{valuelist} %\boolitem[true]{marginpar} % \begin{valuelist} @@ -1216,7 +1321,7 @@ % % \end{ltxsyntax} % -% \subsection[Breaking titles]{Breaking titles} +% \subsection[Breaking titles]{Breaking titles in header and table of contents} % % \begin{ltxsyntax} % \cmditem{headbreak} @@ -1242,7 +1347,7 @@ % \end{ltxsyntax} % % \changes{v0.5}{2011/10/21}{New command \opt{chapnumfont}} -% \subsection{Section titles}\label{sec:secfont} +% \subsection{Customizing titles}\label{sec:secfont} % \changes{v2.9.3}{2020/001/29}{New commands to change the font of the section titles and numbers.} % % The commands in this section are experimental. They provide a fast way to customize the format of section titles and numbers. Note that in some cases you will have to manually adjust the spacing accordingly, using \cmd{titlespacing}, \cmd{hskip}/\cmd{hspace}, \cmd{vskip}/\cmd{vspace}, and so on. @@ -1278,9 +1383,6 @@ %\chapfont{\bfseries\sffamily\scshape\LARGE} %\secfont{\sffamily\fontsize{14.5}{15.5}\selectfont} % -%\chapnumfont{\hskip1cm\bfseries\fontsize{100}{100}\selectfont% -%\color{gray}\arabic{chapter}} -%\secnumfont{\bfseries---\,\arabic{chapter}.\arabic{section}} %\chapnumfont{\hskip1cm\hbox{\bfseries\fontsize{100}{100}\selectfont% %\color{gray}\arabic{chapter}}\hskip-1cm} %\secnumfont{\bfseries---\,\arabic{chapter}.\arabic{section}} @@ -1357,9 +1459,9 @@ % \renewcommand{\appendixpagename}{Appendices} %\end{verbatim} %\end{latexcode}% -%^^A \cmditem{appendicesname}{name}\hfill(default=\texttt{Appendici}) -%^^A -%^^A Changes in \meta{name} the title printed by the \cmd{appendixpage} command. +% ^^A \cmditem{appendicesname}{name}\hfill(default=\texttt{Appendici}) +% ^^A +% ^^A Changes in \meta{name} the title printed by the \cmd{appendixpage} command. % %\end{ltxsyntax} % @@ -1796,13 +1898,17 @@ \ProcessOptions \relax \LoadClass{book} +\@ifpackageloaded{fontsize}{}{\RequirePackage{fontsize}} +\DeclareOptionX{parindent}{\setlength{\parindent}{#1}} +\ExecuteOptionsX{parindent=\baselineskip} +\ProcessOptionsX*\relax % \end{macrocode} % \subsection*{Document structure} % \begin{macrocode} \define@choicekey{}{structure}[\val\nr] {book,article,collection}[book]{% \ifcase\nr\relax -%^^A\disable@keys{}{secnumstyle} +% \disable@keys{}{secnumstyle} \def\SUF@chapswitch{\thechapter.} \or \suftesi@articletrue @@ -2110,14 +2216,14 @@ % \end{macrocode} % \subsection*{TOC font} % \begin{macrocode} -%^^A\define@choicekey{}{tocpartfont}[\val\nr]{roman,italic,smallcaps}[roman]{% -%^^A\ifcase\nr\relax -%^^A\def\SUF@tocPART@font{\relax} -%^^A\or -%^^A\def\SUF@tocPART@font{\itshape} -%^^A\or -%^^A\def\SUF@tocPART@font{\expandafter\SUF@TOCtitlesmallcaps} -%^^A\fi} +% \define@choicekey{}{tocpartfont}[\val\nr]{roman,italic,smallcaps}[roman]{% +% \ifcase\nr\relax +% \def\SUF@tocPART@font{\relax} +% \or +% \def\SUF@tocPART@font{\itshape} +% \or +% \def\SUF@tocPART@font{\expandafter\SUF@TOCtitlesmallcaps} +% \fi} \define@choicekey{}{tocchapfont}[\val\nr]{roman,italic,smallcaps}[roman]{% \ifcase\nr\relax \def\SUF@tocCHAP@font{\relax} @@ -2175,27 +2281,27 @@ \ifcase\nr\relax \def\SUF@thepart{\arabic{part}} \def\SUF@dotpart{} -%^^A \def\SUF@PART@thecontentslabel{\thecontentslabel} +% \def\SUF@PART@thecontentslabel{\thecontentslabel} \or \def\SUF@thepart{\textsc{\roman{part}}} \def\SUF@dotpart{} -%^^A \def\SUF@PART@thecontentslabel{\@roman{\thecontentslabel}} +% \def\SUF@PART@thecontentslabel{\@roman{\thecontentslabel}} \or \def\SUF@thepart{\Roman{part}} \def\SUF@dotpart{} -%^^A \def\SUF@PART@thecontentslabel{\@Roman{\thecontentslabel}} +% \def\SUF@PART@thecontentslabel{\@Roman{\thecontentslabel}} \or \def\SUF@thepart{\arabic{part}} \def\SUF@dotpart{.} -%^^A \def\SUF@PART@thecontentslabel{\thecontentslabel} +% \def\SUF@PART@thecontentslabel{\thecontentslabel} \or \def\SUF@thepart{\textsc{\roman{part}}} \def\SUF@dotpart{.} -%^^A \def\SUF@PART@thecontentslabel{\@roman{\thecontentslabel}} +% \def\SUF@PART@thecontentslabel{\@roman{\thecontentslabel}} \or \def\SUF@thepart{\Roman{part}} \def\SUF@dotpart{.} -%^^A \def\SUF@PART@thecontentslabel{\@Roman{\thecontentslabel}} +% \def\SUF@PART@thecontentslabel{\@Roman{\thecontentslabel}} \fi} % \end{macrocode} % \subsubsection*{Chapter number style} @@ -2354,17 +2460,16 @@ dotarabic,dotroman,dotRoman}[arabic]{% \newcommand{\secnumfont}[1]{\def\SUF@thesection{#1}} \newcommand{\subsecnumfont}[1]{\def\SUF@thesubsection{#1}} \newcommand{\subsubsecnumfont}[1]{\def\SUF@thesubsubsection{#1}} -% \newcommand{\titlefont}[1]{\def\SUF@titlefont@Switch{#1}} \newcommand{\authorfont}[1]{\def\SUF@authorfont@Switch{#1}} % -%^^A\newcommand{\tocpartfont}[1]{\def\SUF@tocPART@font{#1}} +% \newcommand{\tocpartfont}[1]{\def\SUF@tocPART@font{#1}} \newcommand{\tocchapfont}[1]{\def\SUF@tocCHAP@font{#1}} \newcommand{\tocsecfont}[1]{\def\SUF@tocSEC@font{#1}} \newcommand{\tocsubsecfont}[1]{\def\SUF@tocSUBSEC@font{#1}} \newcommand{\tocsubsubsecfont}[1]{\def\SUF@tocSUBSUBSEC@font{#1}} -%^^A\newcommand{\tocpartnumfont}[1]{\def\SUF@PART@thecontentslabel{#1\thecontentslabel}} +% \newcommand{\tocpartnumfont}[1]{\def\SUF@PART@thecontentslabel{#1\thecontentslabel}} \newcommand{\tocchapnumfont}[1]{\def\SUF@CHAP@thecontentslabel{#1\thecontentslabel}} \newcommand{\tocsecnumfont}[1]{\def\SUF@SEC@thecontentslabel{#1\thecontentslabel}} \newcommand{\tocsubsecnumfont}[1]{\def\SUF@SUBSEC@thecontentslabel{#1\thecontentslabel}} @@ -2636,16 +2741,6 @@ dotarabic,dotroman,dotRoman}[arabic]{% \fi} % \end{macrocode} % \subsection*{Other options} -% \subsubsection*{Indentation} -% \begin{macrocode} -\define@choicekey{}{parindent}[\val\nr] - {compact,wide}[compact]{% -\ifcase\nr\relax -\setlength\parindent{1em} -\or -\setlength\parindent{1.5em} -\fi} -% \end{macrocode} % \subsubsection*{Part page} % \begin{macrocode} \define@choicekey{}{partpage}[\val\nr]{true,false}[true]{% @@ -2904,7 +2999,7 @@ dotarabic,dotroman,dotRoman}[arabic]{% subsecfont,subsubsecfont,partstyle,chapstyle,secstyle,% subsecstyle,subsubsecstyle,partnumstyle,chapnumstyle,% secnumstyle,tocstyle,headerstyle,headerfont,quotestyle,% -quotesize,footnotestyle,liststyle,captionstyle,parindent} +quotesize,footnotestyle,liststyle,captionstyle} \or \suftesi@periodicalaureotrue \suftesi@FSPLtrue @@ -2922,7 +3017,7 @@ quotesize,footnotestyle,liststyle,captionstyle,parindent} subsecfont,subsubsecfont,partstyle,chapstyle,secstyle,% subsecstyle,subsubsecstyle,partnumstyle,chapnumstyle,% secnumstyle,tocstyle,headerstyle,headerfont,quotestyle,% -quotesize,footnotestyle,liststyle,captionstyle,parindent} +quotesize,footnotestyle,liststyle,captionstyle} \or \suftesi@periodicalaureotrue \suftesi@FSPLtrue @@ -2941,7 +3036,7 @@ quotesize,footnotestyle,liststyle,captionstyle,parindent} subsecfont,subsubsecfont,partstyle,chapstyle,secstyle,% subsecstyle,subsubsecstyle,partnumstyle,chapnumstyle,% secnumstyle,tocstyle,headerstyle,headerfont,quotestyle,% -quotesize,footnotestyle,liststyle,captionstyle,parindent} +quotesize,footnotestyle,liststyle,captionstyle} \fi} % \end{macrocode} % \subsubsection*{Options for \opt{collection} document structure} @@ -2985,7 +3080,6 @@ quotesize,footnotestyle,liststyle,captionstyle,parindent} structure=book, captionstyle=standard, marginpar=true, - parindent=compact, tocstyle=standard, defaultfont=cochineal, mathfont=minimal, @@ -3019,8 +3113,6 @@ quotesize,footnotestyle,liststyle,captionstyle,parindent} tocauthorfont=roman, revauthortitle=false, papertitlestyle=left, - authorfont=roman, - titlefont=italic, tocchapfont=roman, tocsecfont=roman, tocsubsecfont=roman, @@ -3052,12 +3144,12 @@ quotesize,footnotestyle,liststyle,captionstyle,parindent} % \end{macrocode} % \subsection*{Basic packages} % \begin{macrocode} -\RequirePackage{color} - \definecolor{sufred}{rgb}{0.5,0,0} - \definecolor{sufgray}{rgb}{0.5,0.5,0.5} \RequirePackage{multicol} \RequirePackage{emptypage} \RequirePackage{microtype} +\RequirePackage{color} +\definecolor{sufred}{rgb}{0.5,0,0} +\definecolor{sufgray}{rgb}{0.5,0.5,0.5} \RequirePackage{iftex} \ifLuaTeX \RequirePackage{luatex85} @@ -3071,8 +3163,7 @@ quotesize,footnotestyle,liststyle,captionstyle,parindent} \else \fi % \end{macrocode} -% \subsection*{Page layout} -% The \cmd{geometry} command must be declare before the \sty{fontenc} package. If declared after it, the \opt{heightrounded} option becomes ineffective and many underfull vertical boxes may occur. +% \subsection*{Page layouts} % \begin{macrocode} \ifsuftesi@screen \newcommand*\crop[1][]{} @@ -4263,48 +4354,50 @@ quotesize,footnotestyle,liststyle,captionstyle,parindent} \renewcommand{\appendixtocname}{Appendici} \renewcommand{\appendixname}{Appendice} \noappendicestocpagenum -%^^A Bug using defaultfont=none,libertine,standard,compatibility -%^^A \AtBeginEnvironment{appendices}{\appendix\mainmatter} +% Bug using defaultfont=none,libertine,standard,compatibility +% \AtBeginEnvironment{appendices}{\appendix\mainmatter} \def\appendicesname{% \ClassError{suftesi}% {Command \noexpand\appendicesname undefined\MessageBreak - Redefine the \noexpand\appendixpagename command instead. See the 'appendix' package documentation.\MessageBreak + Redefine the \noexpand\appendixpagename command instead. + See the 'appendix' package documentation.\MessageBreak \noexpand\renewcommand{\noexpand\appendixpagename{newname}}} {Command \noexpand\appendicesname undefined\MessageBreak - Redefine the \noexpand\appendixpagename command instead. See the 'appendix' package documentation.\MessageBreak + Redefine the \noexpand\appendixpagename command instead. + See the 'appendix' package documentation.\MessageBreak \noexpand\renewcommand{\noexpand\appendixpagename{newname}}}} -%^^A\newcommand{\appendicesname}[1]{\def\SUF@appendices{#1}} -%^^A \appendicesname{Appendici} -%^^A \newcommand{\appendixpage}{\SUF@appendixpage} -%^^A\def\SUF@appendixpage{% -%^^A \@mainmattertrue -%^^A \titlecontents{part} -%^^A [0em] -%^^A {\addvspace{3ex}} -%^^A {} -%^^A {} -%^^A {} -%^^A [\addvspace{1ex}] -%^^A\let\contentspage\relax -%^^A \cleardoublepage -%^^A \thispagestyle{empty} -%^^A \addcontentsline{toc}{part}{\SUF@appendices} -%^^A \begingroup -%^^A \centering -%^^A \null\vfil -%^^A {\LARGE\SUF@appendices\par} -%^^A \vfil -%^^A \endgroup -%^^A \cleardoublepage -%^^A\titlecontents{part} -%^^A [0em] -%^^A {\addvspace{3ex}\partname~} -%^^A {\makebox[\SUF@label@part][l]{% -%^^A \thecontentslabel}\hspace*{1em}} -%^^A {} -%^^A {} -%^^A [\addvspace{1ex}] -%^^A} +% \newcommand{\appendicesname}[1]{\def\SUF@appendices{#1}} +% \appendicesname{Appendici} +% \newcommand{\appendixpage}{\SUF@appendixpage} +% \def\SUF@appendixpage{% +% \@mainmattertrue +% \titlecontents{part} +% [0em] +% {\addvspace{3ex}} +% {} +% {} +% {} +% [\addvspace{1ex}] +% \let\contentspage\relax +% \cleardoublepage +% \thispagestyle{empty} +% \addcontentsline{toc}{part}{\SUF@appendices} +% \begingroup +% \centering +% \null\vfil +% {\LARGE\SUF@appendices\par} +% \vfil +% \endgroup +% \cleardoublepage +% \titlecontents{part} +% [0em] +% {\addvspace{3ex}\partname~} +% {\makebox[\SUF@label@part][l]{% +% \thecontentslabel}\hspace*{1em}} +% {} +% {} +% [\addvspace{1ex}] +% } \renewcommand{\@chap@pppage}{% \clear@ppage \thispagestyle{plain}% @@ -4683,6 +4776,14 @@ Janusz M. Nowacki. \addtolength{\csname SUF@tocindent@#1\endcsname}{#2}% } } +% \end{macrocode} +% These commands control the space before and after the label of the sections in the table of contents, using the \opt{compactfont} option. +% \begin{macrocode} +\newcommand{\adjtoclabelsep}{\hskip.2em plus 1pt minus 1pt} +\newcommand{\adjtocpagesep}{\hskip.5em plus 2pt minus 1pt} +% \end{macrocode} +% A class error if the obsolete \cmd{toclabelspace} is used: +% \begin{macrocode} \newcommand{\toclabelspace}{% \ClassError{suftesi} {\MessageBreak @@ -4813,16 +4914,17 @@ Janusz M. Nowacki. [\addvspace{1ex}] \ifsuftesi@toccompactsec \titlecontents*{section}[\SUF@tochang@chap]{}{% - \SUF@SEC@thecontentslabel\ \SUF@tocSEC@font}{}{, \thecontentspage}[][.\hskip.5em][\suf@ctocdotsec] + \SUF@SEC@thecontentslabel\adjtoclabelsep\SUF@tocSEC@font}{}{, + \thecontentspage}[][.\adjtocpagesep][\suf@ctocdotsec] \else \titlecontents{section} [\SUF@tochang@sec] {} {\hskip-\SUF@tochang@sec% \makebox[1em][l]{\thecontentspage}\hskip\SUF@addto@tochang@sec% -%^^A \makebox[\SUF@label@sec][l]{% -%^^A \ifsuftesi@article\SUF@toclabelnum% -%^^A \else\fi\thecontentslabel}\hspace*{1em}% +% \makebox[\SUF@label@sec][l]{% +% \ifsuftesi@article\SUF@toclabelnum% +% \else\fi\thecontentslabel}\hspace*{1em}% \makebox[\SUF@label@sec][l]{\SUF@SEC@thecontentslabel}\hspace*{1em}% \SUF@tocSEC@font} {\hskip-\SUF@tochang@sec% @@ -4832,7 +4934,8 @@ Janusz M. Nowacki. \fi \ifsuftesi@toccompactsubsec \titlecontents*{subsection}[\SUF@tochang@sec]{\suf@sscorrect}{% - \SUF@SUBSEC@thecontentslabel\ \SUF@tocSUBSEC@font}{}{, \thecontentspage}[][.\hskip.5em][\suf@ctocdotssec] + \SUF@SUBSEC@thecontentslabel\adjtoclabelsep\SUF@tocSUBSEC@font}{}{, + \thecontentspage}[][.\adjtocpagesep][\suf@ctocdotssec] \else \titlecontents{subsection} [\SUF@tochang@subsec] @@ -4848,7 +4951,8 @@ Janusz M. Nowacki. \fi \ifsuftesi@toccompactsubsubsec \titlecontents*{subsubsection}[\SUF@tochang@subsec]{\suf@ssscorrect}{% - \SUF@SUBSUBSEC@thecontentslabel\ \SUF@tocSUBSUBSEC@font}{}{, \thecontentspage}[][.\hskip.5em][\suf@ctocdotsssec] + \SUF@SUBSUBSEC@thecontentslabel\adjtoclabelsep\SUF@tocSUBSUBSEC@font}{}{, + \thecontentspage}[][.\adjtocpagesep][\suf@ctocdotsssec] \else \titlecontents{subsubsection} [\SUF@tochang@subsubsec] @@ -4959,15 +5063,16 @@ Janusz M. Nowacki. [\addvspace{1ex}] \ifsuftesi@toccompactsec \titlecontents*{section}[\SUF@tocindent@chap]{}{% - \SUF@SEC@thecontentslabel\ \SUF@tocSEC@font}{}{, \thecontentspage}[][.\hskip.5em][\suf@ctocdotsec] + \SUF@SEC@thecontentslabel\adjtoclabelsep\SUF@tocSEC@font}{}{, + \thecontentspage}[][.\adjtocpagesep][\suf@ctocdotsec] \else \titlecontents{section} [\SUF@tocindent@sec] {} {\hskip-\dimexpr(\SUF@label@sec+1em)% -%^^A \makebox[\SUF@label@sec][l]{% -%^^A \ifsuftesi@article\SUF@toclabelnum% -%^^A \else\fi\thecontentslabel}\hspace*{1em}% +% \makebox[\SUF@label@sec][l]{% +% \ifsuftesi@article\SUF@toclabelnum% +% \else\fi\thecontentslabel}\hspace*{1em}% \makebox[\SUF@label@sec][l]{\SUF@SEC@thecontentslabel}\hspace*{1em}% \SUF@tocSEC@font} {\hskip-\dimexpr(\SUF@label@sec+1em)% @@ -4977,7 +5082,8 @@ Janusz M. Nowacki. \fi \ifsuftesi@toccompactsubsec \titlecontents*{subsection}[\SUF@tocindent@sec]{\suf@sscorrect}{% - \SUF@SUBSEC@thecontentslabel\ \SUF@tocSUBSEC@font}{}{, \thecontentspage}[][.\hskip.5em][\suf@ctocdotssec] + \SUF@SUBSEC@thecontentslabel\adjtoclabelsep\SUF@tocSUBSEC@font}{}{, + \thecontentspage}[][.\adjtocpagesep][\suf@ctocdotssec] \else \titlecontents{subsection} [\SUF@tocindent@subsec] @@ -4991,7 +5097,8 @@ Janusz M. Nowacki. \fi \ifsuftesi@toccompactsubsubsec \titlecontents*{subsubsection}[\SUF@tocindent@subsec]{\suf@ssscorrect}{% - \SUF@SUBSUBSEC@thecontentslabel\ \SUF@tocSUBSUBSEC@font}{}{, \thecontentspage}[][.\hskip.5em][\suf@ctocdotsssec] + \SUF@SUBSUBSEC@thecontentslabel\adjtoclabelsep\SUF@tocSUBSUBSEC@font}{}{, + \thecontentspage}[][.\adjtocpagesep][\suf@ctocdotsssec] \else \titlecontents{subsubsection} [\SUF@tocindent@subsubsec] diff --git a/macros/latex/contrib/suftesi/suftesi.pdf b/macros/latex/contrib/suftesi/suftesi.pdf Binary files differindex a98cf7a81f..4c6a1e43c4 100644 --- a/macros/latex/contrib/suftesi/suftesi.pdf +++ b/macros/latex/contrib/suftesi/suftesi.pdf diff --git a/macros/latex/contrib/xsim/README b/macros/latex/contrib/xsim/README index c96de8d2a3..43d9ae3536 100644 --- a/macros/latex/contrib/xsim/README +++ b/macros/latex/contrib/xsim/README @@ -1,5 +1,5 @@ -------------------------------------------------------------------------- -XSIM 2020/01/16 v0.16a +XSIM 2020/01/21 v0.17 XSIMVERB 2019/12/29 v0.1a eXercise Sheets IMproved @@ -9,7 +9,7 @@ Clemens Niederberger Web: https://github.com/cgnieder/xsim E-Mail: contact@mychemistry.eu -------------------------------------------------------------------------- -Copyright 2017--2019 Clemens Niederberger +Copyright 2017--2020 Clemens Niederberger This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/xsim/code/xsim.auxfile.code.tex b/macros/latex/contrib/xsim/code/xsim.auxfile.code.tex index 69e5a9a618..4fa95620a3 100644 --- a/macros/latex/contrib/xsim/code/xsim.auxfile.code.tex +++ b/macros/latex/contrib/xsim/code/xsim.auxfile.code.tex @@ -49,10 +49,10 @@ \cs_new_protected:Npn \XSIM #1 { \use:c {XSIMaux#1} } -\cs_new_protected:Npn \xsim_new_aux_cs:cpn #1 +\cs_new_protected:Npn \xsim_new_aux_property:cpn #1 { \cs_new_protected:cpn {XSIMaux#1} } -\cs_new_protected:Npn \xsim_add_cs_to_aux:nn #1#2 +\cs_new_protected:Npn \xsim_add_property_to_aux:nn #1#2 { \xsim_verbose:n { Writing~ command~ \XSIM {#1}~ to~ aux~ file } \xsim_write_to_aux:x { \token_to_str:N \XSIM {#1} #2 } @@ -83,8 +83,11 @@ } } -\xsim_new_aux_cs:cpn {readaux} - { \file_input:n { \c_sys_jobname_str .xsim } } +\xsim_new_aux_property:cpn {readaux} + { + \file_if_exist:nT { \c_sys_jobname_str .xsim } + { \file_input:n { \c_sys_jobname_str .xsim } } + } % ---------------------------------------------------------------------------- % list for recording values that need to be written to the aux file and @@ -105,7 +108,7 @@ \prop_new:c {g__xsim_list_#1_prop} \seq_new:c {g__xsim_list_#1_seq} \seq_new:c {g__xsim_list_recorded_#1_seq} - \xsim_new_aux_cs:cpn {#1} ##1 + \xsim_new_aux_property:cpn {#1} ##1 { \prop_gclear:c {g__xsim_list_#1_prop} \tl_if_blank:nF {##1} @@ -193,7 +196,7 @@ { \xsim_rerun: } \bool_if:NF \l__xsim_empty_lists_bool { - \xsim_add_cs_to_aux:nn {#1} + \xsim_add_property_to_aux:nn {#1} { { \seq_use:cV {g__xsim_list_#1_seq} \l__xsim_split_aux_lists_str } } } } diff --git a/macros/latex/contrib/xsim/code/xsim.base.code.tex b/macros/latex/contrib/xsim/code/xsim.base.code.tex index 3eb336e3a3..fbaf246c0f 100644 --- a/macros/latex/contrib/xsim/code/xsim.base.code.tex +++ b/macros/latex/contrib/xsim/code/xsim.base.code.tex @@ -124,14 +124,21 @@ \prg_new_conditional:Npnn \xsim_if_final: {p,T,F,TF} { - \bool_if:NTF \g_xsim_final_bool + \bool_if:NTF \g__xsim_final_bool { \prg_return_true: } { \prg_return_false: } } \prg_new_conditional:Npnn \xsim_if_verbose: {p,T,F,TF} { - \bool_if:NTF \g_xsim_verbose_bool + \bool_if:NTF \g__xsim_verbose_bool + { \prg_return_true: } + { \prg_return_false: } + } + +\prg_new_conditional:Npnn \xsim_if_package_blank: {p,T,F,TF} + { + \bool_if:NTF \g__xsim_blank_bool { \prg_return_true: } { \prg_return_false: } } @@ -170,8 +177,9 @@ \prg_new_conditional:Npnn \xsim_if_chapter: {p,T,F,TF} { - \bool_if:nTF - { \cs_if_exist_p:N \chapter && \cs_if_exist_p:N \c@chapter } + \bool_lazy_and:nnTF + { \cs_if_exist_p:N \chapter } + { \cs_if_exist_p:N \c@chapter } { \prg_return_true: } { \prg_return_false: } } diff --git a/macros/latex/contrib/xsim/code/xsim.blanks.code.tex b/macros/latex/contrib/xsim/code/xsim.blanks.code.tex index 70c4440537..e2cc6c584c 100644 --- a/macros/latex/contrib/xsim/code/xsim.blanks.code.tex +++ b/macros/latex/contrib/xsim/code/xsim.blanks.code.tex @@ -78,8 +78,9 @@ \mode_if_math:TF { \hbox_set:Nn \l__xsim_blank_box { $ \m@th \mathpalette{}{#1} $ } } { \hbox_set:Nn \l__xsim_blank_box {#1} } - \bool_if:nTF - { \xsim_if_inside_solution_p: || \l__xsim_fill_blank_bool } + \bool_lazy_or:nnTF + { \xsim_if_inside_solution_p: } + { \l__xsim_fill_blank_bool } { \xsim_write_cloze_filled:n {#1} } { \bool_if:NTF \l__xsim_blank_width_bool diff --git a/macros/latex/contrib/xsim/code/xsim.collections.code.tex b/macros/latex/contrib/xsim/code/xsim.collections.code.tex index eba9940e23..b85ffa2a15 100644 --- a/macros/latex/contrib/xsim/code/xsim.collections.code.tex +++ b/macros/latex/contrib/xsim/code/xsim.collections.code.tex @@ -351,11 +351,9 @@ { \prop_if_in:NnTF \g__xsim_collections_prop {#1} { - \bool_if:nTF - { - !\str_if_eq_p:en {#1} {all~ exercises} && - \prop_item:Nn \g__xsim_collections_prop {#1} - } + \bool_lazy_and:nnTF + { !\str_if_eq_p:en {#1} {all~ exercises} } + { \prop_item:Nn \g__xsim_collections_prop {#1} } { \prg_return_true: } { \prg_return_false: } } diff --git a/macros/latex/contrib/xsim/code/xsim.definitions.code.tex b/macros/latex/contrib/xsim/code/xsim.definitions.code.tex index c6fa9bd011..5b87fb0f4f 100644 --- a/macros/latex/contrib/xsim/code/xsim.definitions.code.tex +++ b/macros/latex/contrib/xsim/code/xsim.definitions.code.tex @@ -59,6 +59,7 @@ \DeclareExerciseProperty * {use} \DeclareExerciseProperty * {used} \DeclareExerciseProperty *-{use!} +\DeclareExerciseProperty * {solution} \XSIMifchapterT{ \DeclareExerciseProperty {chapter-value} \DeclareExerciseProperty {chapter} @@ -165,18 +166,21 @@ % ---------------------------------------------------------------------------- -\DeclareExerciseType {exercise} { - exercise-env = exercise , - solution-env = solution , - exercise-name = \XSIMtranslate {exercise} , - exercises-name = \XSIMtranslate {exercises} , - solution-name = \XSIMtranslate {solution} , - solutions-name = \XSIMtranslate {solutions} , - exercise-template = default , - solution-template = default , - exercise-heading = \subsection* , - solution-heading = \subsection* -} +\xsim_if_package_blank:F + { + \DeclareExerciseType {exercise} { + exercise-env = exercise , + solution-env = solution , + exercise-name = \XSIMtranslate {exercise} , + exercises-name = \XSIMtranslate {exercises} , + solution-name = \XSIMtranslate {solution} , + solutions-name = \XSIMtranslate {solutions} , + exercise-template = default , + solution-template = default , + exercise-heading = \subsection* , + solution-heading = \subsection* + } + } % ---------------------------------------------------------------------------- @@ -473,4 +477,6 @@ % ---------------------------------------------------------------------------- \file_input_stop: -2019/02/17 fixed error in German translations (issue 39) +2019/02/17 - fix issue #39 (error in German translations) +2020/02/19 - implement issue #33 (solution property) +2020/02/20 - implement issue #31 (blank package option) diff --git a/macros/latex/contrib/xsim/code/xsim.environments.code.tex b/macros/latex/contrib/xsim/code/xsim.environments.code.tex index 9c0c30111a..37a3df68e9 100644 --- a/macros/latex/contrib/xsim/code/xsim.environments.code.tex +++ b/macros/latex/contrib/xsim/code/xsim.environments.code.tex @@ -48,6 +48,7 @@ \tl_new:N \l__xsim_file_path_and_name_tl \tl_new:N \l__xsim_file_name_tl \tl_new:N \l__xsim_file_extension_tl +\tl_new:N \l__xsim_solution_tl \bool_new:N \l__xsim_options_given_bool \bool_new:N \l__xsim_insert_mode_bool @@ -276,33 +277,51 @@ % #3: exercise|solution \cs_new_protected:Npn \xsim_typeset_environment:nnn #1#2#3 { + \xsim_if_exchange:nnnT {#1} {#2} {#3} + { \__xsim_set_file_signature:nnn {#1} {#2} {exercise} } \xsim_verbose:n { Typesetting~ #3~ environment~ type~ `#1'~ id~ `#2' } - \use:x + \xsim_use_hook:nnn {#1} {#3} {pre} + \xsim_use_template:nx + {begin} + { \xsim_get_parameter:nn {#1} {#3-template} } + \xsim_use_hook:nnn {#1} {#3} {begin} + \xsim_if_write_to_files:TF { - \exp_not:N \par - \xsim_use_hook:nnn {#1} {#3} {pre} - \xsim_use_template:nn - {begin} - { \xsim_get_parameter:nn {#1} {#3-template} } - \xsim_use_hook:nnn {#1} {#3} {begin} - \xsim_if_write_to_files:TF + \file_if_exist:nTF { \exp_not:V \l__xsim_file_path_and_name_tl } + { \file_input:n { \exp_not:V \l__xsim_file_path_and_name_tl } } { - \file_if_exist:nTF { \exp_not:V \l__xsim_file_path_and_name_tl } - { \file_input:n { \exp_not:V \l__xsim_file_path_and_name_tl } } - { - \xsim_verbose:n - { File~ `\l__xsim_file_path_and_name_tl'~ doesn't~ exist. } - } + \xsim_verbose:n + { File~ `\l__xsim_file_path_and_name_tl'~ doesn't~ exist. } } + } + { + \xsim_if_exchange:nnnTF {#1} {#2} {#3} + { \xsim_get_property:nnn {#1} {#2} {exercise-body} } { \xsim_get_property:nnn {#1} {#2} {#3-body} } - \xsim_use_hook:nnn {#1} {#3} {end} - \xsim_use_template:nn - {end} - { \xsim_get_parameter:nn {#1} {#3-template} } - \xsim_use_hook:nnn {#1} {#3} {post} - \exp_not:N \par } + \xsim_synchronize_goals:nn {#1} {#2} + \str_if_eq:nnT {#3} {exercise} + { \xsim_update_goals:nn {#1} {#2} } + \xsim_use_hook:nnn {#1} {#3} {end} + \xsim_use_template:nx + {end} + { \xsim_get_parameter:nn {#1} {#3-template} } + \xsim_use_hook:nnn {#1} {#3} {post} + } + +% #1: type +% #2: id +% #3: exercise|solution +\prg_new_conditional:Npnn \xsim_if_exchange:nnn #1#2#3 {T,F,TF} + { + \str_if_eq:nnTF {#3} {solution} + { + \xsim_if_boolean_property:nnnTF {#1} {#2} {solution} + { \prg_return_true: } + { \prg_return_false: } + } + { \prg_return_false: } } % #1: type @@ -334,7 +353,9 @@ % #4: exercise|solution \cs_new_protected:Npn \xsim_insert:nnnn #1#2#3#4 { - \xsim_if_exist:nnnTF {#1} {#2} {#4} + \xsim_if_exchange:nnnTF {#1} {#2} {#4} + { \xsim_if_exist:nnnTF {#1} {#2} {exercise} } + { \xsim_if_exist:nnnTF {#1} {#2} {#4} } { \xsim_verbose:n { Inserting~ #4~ type~ `#1'~ id~ `#2'. } @@ -355,6 +376,8 @@ section-value = \the\value{section} , section = \thesection } + \xsim_synchronize_goals:nn {#1} {#2} + \xsim_update_goals:nn {#1} {#2} } \xsim_if_property_exist:nT {chapter} { @@ -414,10 +437,16 @@ \group_begin: \xsim_if_write_to_files:TF { - \__xsim_set_file_signature:nnn {#1} {#2} {#3} + \xsim_if_exchange:nnnTF {#1} {#2} {#3} + { \__xsim_set_file_signature:nnn {#1} {#2} {exercise} } + { \__xsim_set_file_signature:nnn {#1} {#2} {#3} } \file_input:n { \l__xsim_file_path_and_name_tl } } - { \xsim_get_property:nnn {#1} {#2} {#3-body} } + { + \xsim_if_exchange:nnnTF {#1} {#2} {#3} + { \xsim_get_property:nnn {#1} {#2} {exercise-body} } + { \xsim_get_property:nnn {#1} {#2} {#3-body} } + } \group_end: } \cs_generate_variant:Nn \xsim_input:nnn {oo} @@ -492,3 +521,8 @@ 2019/02/17 - fix issue #43 2019/10/03 - add possibility to save environment bodies to property list +2020/02/15 - remove spurious \par at the beginning and end of typeset + exercises and solutions +2020/02/19 - implement issue #33 (solution property) +2020/02/20 - fix issue #27 + - implement issue #2 diff --git a/macros/latex/contrib/xsim/code/xsim.exercises.code.tex b/macros/latex/contrib/xsim/code/xsim.exercises.code.tex index 6f1503dbc4..2fc9e4d142 100644 --- a/macros/latex/contrib/xsim/code/xsim.exercises.code.tex +++ b/macros/latex/contrib/xsim/code/xsim.exercises.code.tex @@ -394,35 +394,82 @@ \int_gincr:N \g_xsim_id_int \int_compare:nF { \g_xsim_max_id_int > \g_xsim_id_int } { \int_gset_eq:NN \g_xsim_max_id_int \g_xsim_id_int } - \xsim_set_properties:nxx {#1} { \int_use:N \g_xsim_id_int } + \tl_gset:Nx \g_xsim_exercise_id_tl { \int_use:N \g_xsim_id_int } + % save the goal values from the auxiliary files: + \xsim_foreach_goal:n { + \xsim_temporary_goal_new:nVn {#1} \g_xsim_exercise_id_tl {##1} + \xsim_if_property_set:nVnT {#1} \g_xsim_exercise_id_tl {##1} + { + \xsim_temporary_goal_set:nVnn + {#1} + \g_xsim_exercise_id_tl + {##1} + { \xsim_get_property:nVn {#1} \g_xsim_exercise_id_tl {##1} } + } + } + \xsim_set_properties:nVx {#1} \g_xsim_exercise_id_tl + { + % preset options so the user doesn't has to: print = true , use = true , + % options set by the user: \exp_not:n {#2} , - id = \int_use:N \g_xsim_id_int , + % options which need to have certain values: + id = \g_xsim_exercise_id_tl , section-value = \arabic{section} , section = \thesection , page-value = \arabic{page} , sectioning = - { \cs_if_exist:NTF \chapter { \arabic{chapter} } {0} } + { \cs_if_exist:NTF \thechapter { \arabic {chapter} } {0} } { \arabic {section} } { \arabic {subsection} } { \arabic {subsubsection} } { \arabic {paragraph} } , page = \thepage , + % this cannot yet be set (see below): used = false } + % temporary goal now: either 0 or equal the complete property + % property: equal to the given value + \xsim_foreach_goal:n + { + \fp_set:Nn \l__xsim_tmpa_fp + { \xsim_temporary_goal_get:nVn {#1} \g_xsim_exercise_id_tl {##1} } + % set temporary goal to given property: + \xsim_if_property_given:nTF {##1} + { + \xsim_temporary_goal_set:nVnn + {#1} + \g_xsim_exercise_id_tl + {##1} + { \xsim_get_property:nVn {#1} \g_xsim_exercise_id_tl {##1} } + } + { + \xsim_temporary_goal_set:nVnn + {#1} + \g_xsim_exercise_id_tl + {##1} + {0} + } + % update to property to complete value: + \xsim_if_property_set:nVnT {#1} \g_xsim_exercise_id_tl {##1} + { + \xsim_set_property:nVnx {#1} \g_xsim_exercise_id_tl {##1} + { \fp_to_decimal:N \l__xsim_tmpa_fp } + } + } \xsim_if_property_exist:nT {chapter} { - \xsim_set_properties:nxx {#1} { \int_use:N \g_xsim_id_int } + \xsim_set_properties:nVx {#1} \g_xsim_exercise_id_tl { chapter-value = \arabic{chapter} , chapter = \thechapter } } - \tl_gclear:N \g_xsim_exercise_id_tl - \xsim_gsave_property:nxnN {#1} { \int_use:N \g_xsim_id_int } {id} - \g_xsim_exercise_id_tl + % \tl_gclear:N \g_xsim_exercise_id_tl + % \xsim_gsave_property:nVnN {#1} \l__xsim_tmpa_tl {id} + % \g_xsim_exercise_id_tl \tl_gset_eq:NN \ExerciseID \g_xsim_exercise_id_tl \tl_gset:Nn \ExerciseType {#1} \xsim_verbose:x @@ -449,7 +496,6 @@ \xsim_set_property:nVnn {#1} \g_xsim_exercise_id_tl {use} {true} - \xsim_update_goals:nV {#1} \g_xsim_exercise_id_tl } { \xsim_set_properties:nVn {#1} \g_xsim_exercise_id_tl @@ -524,7 +570,7 @@ % ---------------------------------------------------------------------------- -\xsim_new_aux_cs:cpn {total-number} #1 +\xsim_new_aux_property:cpn {total-number} #1 { \int_gset:Nn \g_xsim_max_id_int {#1} } \RequirePackage {etoolbox} @@ -535,7 +581,7 @@ { \tl_new:c { number of #1 s } \tl_set:cn { number of #1 s } {0} - \xsim_new_aux_cs:cpn {#1} ##1 + \xsim_new_aux_property:cpn {#1} ##1 { \tl_gset:cn { number of #1 s } {##1} } } } @@ -556,10 +602,10 @@ \int_compare:nNnF { \g_xsim_max_id_int } = { \g_xsim_id_int } { \xsim_empty_lists: } } - \xsim_add_cs_to_aux:nn {total-number} { { \int_use:N \g_xsim_id_int } } + \xsim_add_property_to_aux:nn {total-number} { { \int_use:N \g_xsim_id_int } } \xsim_foreach_exercise_type:n { - \xsim_add_cs_to_aux:nn {#1} + \xsim_add_property_to_aux:nn {#1} { { \arabic { \xsim_get_parameter:nn {#1} {number} } } } } \xsim_update_list:n {types} @@ -567,3 +613,5 @@ % ---------------------------------------------------------------------------- \file_input_stop: + +2020/02/21 - implement issue #2 diff --git a/macros/latex/contrib/xsim/code/xsim.goals.code.tex b/macros/latex/contrib/xsim/code/xsim.goals.code.tex index cf7975c4bd..6b17d2bc3f 100644 --- a/macros/latex/contrib/xsim/code/xsim.goals.code.tex +++ b/macros/latex/contrib/xsim/code/xsim.goals.code.tex @@ -49,6 +49,7 @@ {#1} \seq_put_right:Nn \l__xsim_goals_seq {#1} \fp_gzero_new:c {g__xsim_goal_#1_fp} + \bool_new:c {l__xsim_goal_#1_given_bool} \fp_gzero_new:c {l__xsim_current_goal_#1_fp} \fp_if_exist:cF {g__xsim_total_goal_#1_fp} { \fp_new:c {g__xsim_total_goal_#1_fp} } @@ -73,6 +74,16 @@ { \prg_return_false: } } +\prg_new_conditional:Npnn \xsim_if_goal_given:n #1 {p,T,F,TF} + { + \bool_if:cTF {l__xsim_goal_#1_given_bool} + { \prg_return_true: } + { \prg_return_false: } + } + +\cs_new_protected:Npn \xsim_goal_given:n #1 + { \bool_set_true:c {l__xsim_goal_#1_given_bool} } + % #1: exercise type % #2: id % #3: goal @@ -99,6 +110,28 @@ \cs_new_protected:Npn \xsim_foreach_goal:n #1 { \seq_map_inline:Nn \l__xsim_goals_seq {#1} } +% #1: type +% #2: id +\cs_new_protected:Npn \xsim_synchronize_goals:nn #1#2 + { + \xsim_foreach_goal:n + { + \xsim_if_property_set:nnnTF {#1} {#2} {##1} + { + \xsim_set_property:nnnx {#1} {#2} {##1} + { \xsim_temporary_goal_get:nnn {#1} {#2} {##1} } + } + { + \fp_compare:nNnT + { \xsim_temporary_goal_get:nnn {#1} {#2} {##1} } > {0} + { + \xsim_set_property:nnnx {#1} {#2} {##1} + { \xsim_temporary_goal_get:nnn {#1} {#2} {##1} } + } + } + } + } + % #1: exercise type % #2: id % #3: goal @@ -108,9 +141,10 @@ \xsim_if_goal_exist:nT {#3} { \xsim_verbose:n { Adding~ `#4'~ to~ `#3'~ goal~ of~ #1~ #2 } - \fp_gadd:cn {g__xsim_goal_#3_fp} {#4} - \fp_gadd:cn {g__xsim_#1_goal_#3_fp} {#4} - \fp_add:cn {l__xsim_current_goal_#3_fp} {#4} + % \fp_gadd:cn {g__xsim_goal_#3_fp} {#4} + % \fp_gadd:cn {g__xsim_#1_goal_#3_fp} {#4} + % \fp_add:cn {l__xsim_current_goal_#3_fp} {#4} + \xsim_temporary_goal_add:nnnn {#1} {#2} {#3} {#4} } } \cs_generate_variant:Nn \xsim_addto_goal:nnnn {xx,nVnx} @@ -129,6 +163,46 @@ \cs_generate_variant:Nn \xsim_if_goal_value:nnnnTF {xx} % ---------------------------------------------------------------------------- +% we need some kind of temporary variable to be able to set goals both as +% option to exercises and within the exercise body + +% #1: type +% #2: id +% #3: goal +\cs_new_protected:Npn \xsim_temporary_goal_new:nnn #1#2#3 + { \fp_new:c {g__xsim_goal_#3_#1_#2_fp} } +\cs_generate_variant:Nn \xsim_temporary_goal_new:nnn {nV} + +% #1: type +% #2: id +% #3: goal +% #4: value +\cs_new_protected:Npn \xsim_temporary_goal_set:nnnn #1#2#3#4 + { \fp_gset:cn {g__xsim_goal_#3_#1_#2_fp} {#4} } +\cs_generate_variant:Nn \xsim_temporary_goal_set:nnnn {nV} + +% #1: type +% #2: id +% #3: goal +% #4: value +\cs_new_protected:Npn \xsim_temporary_goal_add:nnnn #1#2#3#4 + { \fp_gadd:cn {g__xsim_goal_#3_#1_#2_fp} {#4} } +\cs_generate_variant:Nn \xsim_temporary_goal_add:nnnn {nV} + +% #1: type +% #2: id +% #3: goal +\cs_new:Npn \xsim_temporary_goal_get:nnn #1#2#3 + { \fp_to_decimal:c {g__xsim_goal_#3_#1_#2_fp} } +\cs_generate_variant:Nn \xsim_temporary_goal_get:nnn {nV} + +% #1: type +% #2: id +% #3: goal +\cs_new_protected:Npn \__xsim_temporary_goal_show:nnn #1#2#3 + { \fp_show:c {g__xsim_goal_#3_#1_#2_fp} } + +% ---------------------------------------------------------------------------- % a function which can be used to modify how the numbers of a goal are % printed: \cs_new_protected:Npn \__xsim_print_goal:n #1 {#1} @@ -254,12 +328,12 @@ % #1: exercise type % #2: goal % #3: value -\xsim_new_aux_cs:cpn {goal} #1#2#3 +\xsim_new_aux_property:cpn {goal} #1#2#3 { \fp_gset:cn {g__xsim_total_#1_goal_#2_fp} {#3} } % #1: goal % #2: value -\xsim_new_aux_cs:cpn {totalgoal} #1#2 +\xsim_new_aux_property:cpn {totalgoal} #1#2 { \fp_gset:cn {g__xsim_total_goal_#1_fp} {#2} } \xsim_at_begin_document:n @@ -278,7 +352,7 @@ { \xsim_foreach_exercise_type:n { - \xsim_add_cs_to_aux:nn {goal} + \xsim_add_property_to_aux:nn {goal} { {##1} {#1} { \fp_to_decimal:c {g__xsim_##1_goal_#1_fp} } } } \tl_set:Nx \l__xsim_tmpa_tl @@ -286,7 +360,7 @@ \tl_set:Nx \l__xsim_tmpb_tl { \fp_to_decimal:c {g__xsim_total_goal_recorded_#1_fp} } \tl_if_eq:NNF \l__xsim_tmpa_tl \l__xsim_tmpb_tl { \xsim_rerun: } - \xsim_add_cs_to_aux:nn {totalgoal} + \xsim_add_property_to_aux:nn {totalgoal} { {#1} { \fp_to_decimal:c {g__xsim_goal_#1_fp} } } } } @@ -306,4 +380,6 @@ % ---------------------------------------------------------------------------- \file_input_stop: -2019/01/30 bug fix (cf. https://texwelt.de/wissen/fragen/24101/) +2019/01/30 - bug fix (cf. https://texwelt.de/wissen/fragen/24101/) +2020/02/20 - add temporary variables for the whole subpoint thing + (cf. issue #2) diff --git a/macros/latex/contrib/xsim/code/xsim.properties.code.tex b/macros/latex/contrib/xsim/code/xsim.properties.code.tex index add2431018..825b8f2517 100644 --- a/macros/latex/contrib/xsim/code/xsim.properties.code.tex +++ b/macros/latex/contrib/xsim/code/xsim.properties.code.tex @@ -54,6 +54,7 @@ \seq_new:N \l__xsim_boolean_properties_seq \seq_new:N \l__xsim_unique_properties_seq \seq_new:N \l__xsim_noupdate_properties_seq +\seq_new:N \l__xsim_given_properties_seq \prop_new:N \g__xsim_properties_prop % new property: @@ -131,6 +132,15 @@ { \prg_return_false: } } +% true if property #1 has been set in the /last/ call of +% \xsim_set_properties:nnn +\prg_new_conditional:Npnn \xsim_if_property_given:n #1 {p,T,F,TF} + { + \seq_if_in:NnTF \l__xsim_given_properties_seq {#1} + { \prg_return_true: } + { \prg_return_false: } + } + % #1: property % #2: value \prg_new_conditional:Npnn \xsim_if_property_unique_value:nn #1#2 {p,T,F,TF} @@ -178,8 +188,12 @@ } { \msg_error:nnn {xsim} {unknown-property} {#3} } } -\cs_generate_variant:Nn \xsim_set_property:nnnn {nnxx,nnnV,nV,nVnx,nnnx,xx,xxnx} +\cs_generate_variant:Nn \xsim_set_property:nnnn {nnxx,nnnV,nV,nVnx,nnnx,xx,xxnx,nxnx} +% #1: type +% #2: id +% #3: property +% #4: value \cs_new_protected:Npn \__xsim_set_boolean_property:nnnn #1#2#3#4 { \str_case_e:nnTF { \str_lowercase:n {#4} } @@ -191,6 +205,10 @@ { \__xsim_set_property:nnnn {#1} {#2} {#3} {false} } } +% #1: type +% #2: id +% #3: property +% #4: value \cs_new_protected:Npn \__xsim_set_unique_property:nnnn #1#2#3#4 { \__xsim_set_property:nnnn {#1} {#2} {#3} {#4} @@ -309,6 +327,7 @@ % #3: csv list of properties \cs_new_protected:Npn \xsim_set_properties:nnn #1#2#3 { + \seq_clear:N \l__xsim_given_properties_seq \clist_map_inline:nn {#3} { \seq_set_split:Nnx \l__xsim_tmpa_seq {=} { \tl_trim_spaces:n {##1} } @@ -317,6 +336,8 @@ {#2} { \seq_item:Nn \l__xsim_tmpa_seq {1} } { \seq_item:Nn \l__xsim_tmpa_seq {2} } + \seq_put_right:Nx \l__xsim_given_properties_seq + { \seq_item:Nn \l__xsim_tmpa_seq {1} } } \xsim_property_set_aliases:nn {#1} {#2} } @@ -326,16 +347,15 @@ % #1: type % #2: id % #3: property -\prg_new_protected_conditional:Npnn \xsim_if_property_set:nnn #1#2#3 {T,F,TF} +\prg_new_conditional:Npnn \xsim_if_property_set:nnn #1#2#3 {T,F,TF} { - \prop_if_in:NxTF \g__xsim_properties_prop - { #2 ! #1 ! #3 } + \prop_if_in:NnTF \g__xsim_properties_prop {#2!#1!#3} { \prg_return_true: } { \prg_return_false: } } -\cs_generate_variant:Nn \xsim_if_property_set:nnnTF {nnx,xx,nV} -\cs_generate_variant:Nn \xsim_if_property_set:nnnF {nx,nnx,xx} -\cs_generate_variant:Nn \xsim_if_property_set:nnnT {nnx,xx} +\prg_generate_conditional_variant:Nnn \xsim_if_property_set:nnn + {nx,nnx,xx,nV} + {T,F,TF} % ---------------------------------------------------------------------------- @@ -414,7 +434,7 @@ % #3: property \cs_new:Npn \xsim_get_property:nnn #1#2#3 { \prop_item:Nn \g__xsim_properties_prop { #2 ! #1 ! #3 } } -\cs_generate_variant:Nn \xsim_get_property:nnn {nx,xx,oo,no,nnf,nf,oof,nV} +\cs_generate_variant:Nn \xsim_get_property:nnn {nx,ne,xx,oo,no,nnf,nf,oof,nV} % #1: property % #2: value @@ -482,7 +502,7 @@ \cs_generate_variant:Nn \xsim_if_boolean_property:nnnF {nV} \cs_new_protected:Npn \xsim_save_property:nnnN #1#2#3#4 - { \prop_get:NnN \g__xsim_properties_prop { #2 ! #1 ! #3 } #4 } + { \prop_get:NnN \g__xsim_properties_prop {#2!#1!#3} #4 } \cs_generate_variant:Nn \xsim_save_property:nnnN {nx,xx} \cs_new_protected:Npn \xsim_gsave_property:nnnN #1#2#3#4 @@ -490,7 +510,7 @@ \xsim_save_property:nnnN {#1} {#2} {#3} #4 \tl_gset:NV #4 #4 } -\cs_generate_variant:Nn \xsim_gsave_property:nnnN {nx,xx} +\cs_generate_variant:Nn \xsim_gsave_property:nnnN {nx,xx,nV} % ---------------------------------------------------------------------------- \file_input_stop: diff --git a/macros/latex/contrib/xsim/code/xsim.random.code.tex b/macros/latex/contrib/xsim/code/xsim.random.code.tex index 2444ef1745..2087adf9de 100644 --- a/macros/latex/contrib/xsim/code/xsim.random.code.tex +++ b/macros/latex/contrib/xsim/code/xsim.random.code.tex @@ -52,7 +52,7 @@ % #1: random list id % #2: csv list of integers -\xsim_new_aux_cs:cpn {random} #1#2 +\xsim_new_aux_property:cpn {random} #1#2 { \xsim_random_list_if_exist:nF {#1} { \xsim_new_random_list:n {#1} } @@ -100,7 +100,7 @@ \xsim_random_list_if_empty:nT {#1} { \xsim_set_random_list_from_seq:nN {#1} #2 } \xsim_verbose:n {Saving~ random~ list~ `#1'} - \xsim_add_cs_to_aux:nn {random} + \xsim_add_property_to_aux:nn {random} { {#1} { \xsim_use_random_list:nn {#1} {,} } } } @@ -165,12 +165,9 @@ % #4: seq variable \cs_new_protected:Npn \xsim_generate_random_list:nnnN #1#2#3#4 { - \bool_if:nT - { - !\xsim_random_list_if_exist_p:n {#1} - || - \xsim_random_list_if_empty_p:n {#1} - } + \bool_lazy_or:nnT + { !\xsim_random_list_if_exist_p:n {#1} } + { \xsim_random_list_if_empty_p:n {#1} } { \xsim_verbose:n {Generating~ random~ list~ `#1'~ with~ #3~ out~ of~ #2~ items} @@ -199,12 +196,9 @@ % #2: random list id \cs_new_protected:Npn \xsim_print_random_exercises:Nn #1#2 { - \bool_if:nT - { - \xsim_random_list_if_exist_p:n {#2} - && - !\xsim_random_list_if_empty_p:n {#2} - } + \bool_lazy_and:nnT + { \xsim_random_list_if_exist_p:n {#2} } + { !\xsim_random_list_if_empty_p:n {#2} } { \xsim_verbose:x { @@ -220,12 +214,13 @@ { \seq_item:Nn #1 {##1} } \tl_set:Nx \l__xsim_tmpb_tl { \xsim_get_type_for_property:nV {id} \l__xsim_tmpa_tl } - \bool_if:nT + \bool_lazy_or:nnT { \tl_if_eq_p:NN \l__xsim_print_random_choice_tl \c__xsim_print_random_both_tl - || + } + { \tl_if_eq_p:NN \l__xsim_print_random_choice_tl \c__xsim_print_random_exercise_tl @@ -242,12 +237,13 @@ {exercise} } } - \bool_if:nT + \bool_lazy_or:nnT { \tl_if_eq_p:NN \l__xsim_print_random_choice_tl \c__xsim_print_random_both_tl - || + } + { \tl_if_eq_p:NN \l__xsim_print_random_choice_tl \c__xsim_print_random_solution_tl diff --git a/macros/latex/contrib/xsim/code/xsim.solutions.code.tex b/macros/latex/contrib/xsim/code/xsim.solutions.code.tex index eddeaa911f..902f377864 100644 --- a/macros/latex/contrib/xsim/code/xsim.solutions.code.tex +++ b/macros/latex/contrib/xsim/code/xsim.solutions.code.tex @@ -82,7 +82,9 @@ % #2: id \prg_new_protected_conditional:Npnn \xsim_if_solution_exist:nn #1#2 {T,F,TF} { - \xsim_if_exist:nnnTF {#1} {#2} {solution} + \xsim_if_boolean_property:nnnTF {#1} {#2} {solution} + { \xsim_if_exist:nnnTF {#1} {#2} {exercise} } + { \xsim_if_exist:nnnTF {#1} {#2} {solution} } { \prg_return_true: } { \prg_return_false: } } diff --git a/macros/latex/contrib/xsim/code/xsim.sty b/macros/latex/contrib/xsim/code/xsim.sty index a6a5538c67..0939f4796a 100644 --- a/macros/latex/contrib/xsim/code/xsim.sty +++ b/macros/latex/contrib/xsim/code/xsim.sty @@ -29,9 +29,9 @@ \ExplSyntaxOn -\tl_const:Nn \c_xsim_date_tl {2020/01/16} +\tl_const:Nn \c_xsim_date_tl {2020/02/21} \tl_const:Nn \c_xsim_version_major_number_tl {0} -\tl_const:Nn \c_xsim_version_minor_number_tl {16a} +\tl_const:Nn \c_xsim_version_minor_number_tl {17} \tl_const:Nn \c_xsim_version_subrelease_tl {} \tl_const:Nx \c_xsim_version_number_tl { @@ -55,29 +55,49 @@ % options, information -\bool_new:N \g_xsim_final_bool -\bool_new:N \g_xsim_verbose_bool +\bool_new:N \g__xsim_final_bool +\bool_new:N \g__xsim_verbose_bool \bool_new:N \g_xsim_clear_aux_bool \bool_new:N \g__xsim_write_to_file_bool \bool_new:N \g_xsim_use_aux_bool \bool_new:N \g__xsim_rerun_bool +\bool_new:N \g__xsim_blank_bool \keys_define:nn {xsim/package} { - final .bool_gset:N = \g_xsim_final_bool , - verbose .bool_gset:N = \g_xsim_verbose_bool , + final .bool_gset:N = \g__xsim_final_bool , + verbose .bool_gset:N = \g__xsim_verbose_bool , clear-aux .bool_gset:N = \g_xsim_clear_aux_bool , no-files .bool_gset_inverse:N = \g__xsim_write_to_file_bool , no-files .initial:n = false , use-aux .bool_gset:N = \g_xsim_use_aux_bool , - use-aux .initial:n = false + use-aux .initial:n = false , + blank .bool_gset:N = \g__xsim_blank_bool , + blank .initial:n = false } \ProcessKeysPackageOptions {xsim/package} +\keys_define:nn {xsim/package} + { + final .code:n = \msg_error:nnn {xsim} {load-time-option} {final} , + verbose .code:n = \msg_error:nnn {xsim} {load-time-option} {verbose} , + clear-aux .code:n = \msg_error:nnn {xsim} {load-time-option} {clear-aux} , + no-files .code:n = \msg_error:nnn {xsim} {load-time-option} {no-files} , + use-aux .code:n = \msg_error:nnn {xsim} {load-time-option} {use-aux} , + blank .code:n = \msg_error:nnn {xsim} {load-time-option} {blank} + } + % -------------------------------------------------------------------------- % messages: +\msg_new:nnn {xsim} {load-time-option} + { + `#1'~ is~ a~ load-time~ option! \\ + You~ cannot~ set~ it~ with~ \token_to_str:N \xsimsetup ! \\ + You~ need~ to~ use~ \token_to_str:N \usepackage [#1] {xsim} . + } + \msg_new:nnn {xsim} {rerun} { Exercise~ properties~ may~ have~ changed.~ Rerun~ to~ get~ them~ @@ -105,5 +125,9 @@ \xsim_do_rerun: \xsim_close_aux: } - + +% -------------------------------------------------------------------------- \file_input_stop: + +2020/02/20 - implement issue #31 (blank package option) +2020/02/21 - don't allow package options to be set with \xsimsetup diff --git a/macros/latex/contrib/xsim/code/xsim.verbwrite.code.tex b/macros/latex/contrib/xsim/code/xsim.verbwrite.code.tex index 5d87f7c750..e43c30d34d 100644 --- a/macros/latex/contrib/xsim/code/xsim.verbwrite.code.tex +++ b/macros/latex/contrib/xsim/code/xsim.verbwrite.code.tex @@ -52,11 +52,11 @@ \file_if_exist:nTF {#2} { \xsim_if_final:F { \iow_open:Nn #1 {#2} } } { - % \g_xsim_final_bool is a global variable; however, if it is true and + % \g__xsim_final_bool is a global variable; however, if it is true and % the exercise file doesn't exist, yet, we need to set it locally to % false in order to ensure that the file is correctly written and the % stream closed afterwards - \bool_set_false:N \g_xsim_final_bool + \bool_set_false:N \g__xsim_final_bool \iow_open:Nn #1 {#2} } } diff --git a/macros/latex/contrib/xsim/code/xsimverb.sty b/macros/latex/contrib/xsim/code/xsimverb.sty index a7cbd0706b..90373e9021 100644 --- a/macros/latex/contrib/xsim/code/xsimverb.sty +++ b/macros/latex/contrib/xsim/code/xsimverb.sty @@ -59,8 +59,8 @@ \cs_new_protected:Npn \xsimverb_bool_provide:N #1 { \bool_if_exist:NF #1 { \bool_new:N #1 } } -\xsimverb_bool_provide:N \g_xsim_final_bool -\xsimverb_bool_provide:N \g_xsim_verbose_bool +\xsimverb_bool_provide:N \g__xsim_final_bool +\xsimverb_bool_provide:N \g__xsim_verbose_bool \xsimverb_bool_provide:N \g_xsim_clear_aux_bool \xsimverb_bool_provide:N \g__xsim_write_to_file_bool \xsimverb_bool_provide:N \g_xsim_use_aux_bool @@ -68,8 +68,8 @@ \keys_define:nn {xsimverb} { - final .bool_gset:N = \g_xsim_final_bool , - verbose .bool_gset:N = \g_xsim_verbose_bool , + final .bool_gset:N = \g__xsim_final_bool , + verbose .bool_gset:N = \g__xsim_verbose_bool , clear-aux .bool_gset:N = \g_xsim_clear_aux_bool , no-files .bool_gset_inverse:N = \g__xsim_write_to_file_bool , no-files .initial:n = false , diff --git a/macros/latex/contrib/xsim/doc/xsim-manual.cls b/macros/latex/contrib/xsim/doc/xsim-manual.cls index 6e1359c0b1..3fa56cc833 100644 --- a/macros/latex/contrib/xsim/doc/xsim-manual.cls +++ b/macros/latex/contrib/xsim/doc/xsim-manual.cls @@ -522,6 +522,7 @@ \XSIMfilewritestart*{\jobname.tmp}% }% \endgroup + \def\xsimman@read@options@[#1]{\pgfqkeys{/cnltx}{#1}} \RenewDocumentEnvironment{sourcecode}{} @@ -565,6 +566,7 @@ } {% \XSIMfilewritestop + \catcode`\^^M=5 \ifbool{cnltx@sidebyside} {% \cnltxcode @@ -865,6 +867,16 @@ % ---------------------------------------------------------------------------- % versions: +\xsim@add@version{0.0} {2017-02-09} +\xsim@add@version{0.1} {2017-03-19} +\xsim@add@version{0.2} {2017-03-21} +\xsim@add@version{0.4} {2017-03-24} +\xsim@add@version{0.5} {2017-03-30} +\xsim@add@version{0.5a} {2017-04-15} +\xsim@add@version{0.5b} {2017-04-16} +\xsim@add@version{0.6} {2017-04-27} +\xsim@add@version{0.6a} {2017-04-28} +\xsim@add@version{0.7} {2017-05-09} \xsim@add@version{0.8} {2017-05-18} \xsim@add@version{0.8a} {2017-05-19} \xsim@add@version{0.8b} {2017-05-23} @@ -875,8 +887,11 @@ \xsim@add@version{0.12} {2019-09-26} \xsim@add@version{0.13} {2019-10-06} \xsim@add@version{0.14} {2019-10-13} +\xsim@add@version{0.14a} {2019-10-19} \xsim@add@version{0.15} {2019-11-02} \xsim@add@version{0.16} {2019-11-10} +\xsim@add@version{0.16a} {2020-01-16} +\xsim@add@version{0.17} {2020-02-21} % ---------------------------------------------------------------------------- \newrobustcmd*\xsimauxfileinfo{% diff --git a/macros/latex/contrib/xsim/doc/xsim.history b/macros/latex/contrib/xsim/doc/xsim.history index b2bf16e4c0..7cb4ab4849 100644 --- a/macros/latex/contrib/xsim/doc/xsim.history +++ b/macros/latex/contrib/xsim/doc/xsim.history @@ -113,7 +113,7 @@ HISTORY: - \ProvideExerciseTagging v0.12 2019/09/30 - add parameter versions for the plural forms of exercise and solution names - - bug fixes (issues 37, 39, 43, 47) + - bug fixes (issues 37, 39, 43, 47) v0.13 2019/10/06 - experimental package option `no-files' v0.14 2019/10/13 - new exercise parameters `exercise-heading' and `solution-heading' @@ -133,6 +133,14 @@ HISTORY: `use-aux' v0.16 2019/11/10 - fix issue due to usage of own auxiliary file - \XSIMatbegindocument and \XSIMatenddocument - - \xprintexercise, \xprintsolution, \xsimprint, \xsimxprint + - \xprintexercise, \xprintsolution, \xsimprint, \xsimxprint 2019/12/29 - bugfix in `xsimverb' v0.16a 2020/01/16 - adapt to renaming of string case changing functions + v0.17 2020/02/21 - prefer lazy boolean evaluation if possible + - remove spurious \par at the beginning of typeset + exercises + - add `blank' option, implements issue #31 + - add `solution' property, implements issue #33 + - fix issue #27 + - implement issue #2 + - don't allow package options to be set with \xsimsetup diff --git a/macros/latex/contrib/xsim/doc/xsim.ideas b/macros/latex/contrib/xsim/doc/xsim.ideas index 0882c70535..6ae5cd9a6a 100644 --- a/macros/latex/contrib/xsim/doc/xsim.ideas +++ b/macros/latex/contrib/xsim/doc/xsim.ideas @@ -26,4 +26,3 @@ IDEAS: - a document class `xsim-exam' for creating exams - a mechanism for providing variants of an exam -- some kind of `subexercise' mechanism diff --git a/macros/latex/contrib/xsim/doc/xsim_manual.pdf b/macros/latex/contrib/xsim/doc/xsim_manual.pdf Binary files differindex 9c3f546204..9014b1c368 100644 --- a/macros/latex/contrib/xsim/doc/xsim_manual.pdf +++ b/macros/latex/contrib/xsim/doc/xsim_manual.pdf diff --git a/macros/latex/contrib/xsim/doc/xsim_manual.tex b/macros/latex/contrib/xsim/doc/xsim_manual.tex index 46706662a1..e3328631df 100644 --- a/macros/latex/contrib/xsim/doc/xsim_manual.tex +++ b/macros/latex/contrib/xsim/doc/xsim_manual.tex @@ -1,8 +1,8 @@ -% !arara: pdflatex: { action: nonstopmode } +% !arara: pdflatex: { interaction: nonstopmode } % !arara: biber -% !arara: pdflatex: { action: nonstopmode } -% arara: pdflatex: { action: nonstopmode } -% arara: pdflatex: { action: nonstopmode } +% arara: pdflatex: { interaction: nonstopmode } +% arara: pdflatex: { interaction: nonstopmode } +% arara: pdflatex: { interaction: nonstopmode } % ---------------------------------------------------------------------------- % the XSIM package % @@ -32,8 +32,7 @@ % ---------------------------------------------------------------------------- \documentclass{xsim-manual} -\usepackage{filecontents} -\begin{filecontents*}{\jobname.bib} +\begin{filecontents*}[overwrite]{\jobname.bib} @online{texsx:romannumeral, author = {Bruno Le Floch} , title = {Cunning (La)TeX tricks} , @@ -44,7 +43,7 @@ title = {Questions tagged `exsheets'} , author = {various} , url = {http://tex.stackexchange.com/questions/tagged/exsheets} , - urldate = {2017-05-15} + urldate = {2020-02-21} } \end{filecontents*} \addbibresource{\jobname.bib} @@ -76,7 +75,7 @@ using an up to date \TeX\ distribution, anyway. It has been quite a while since I first published \pkg{exsheets}~\cite{pkg:exsheets} in June 2012. Since then it has gained a user base and a little bit of popularity as the number of questions on tex.sx -shows (119~at the time of writing)~\cite{texsx:tagged/exsheets}. User +shows (143~at the time of writing)~\cite{texsx:tagged/exsheets}. User questions, bug reports and feature requests improved it over the time. It still has a version number starting with a zero, though, which in my versioning system means I still consider it experimental. @@ -138,21 +137,21 @@ meaning in this manual. \sinceversion{0.15}With this option enabled \xsim\ will use the regular auxiliary file \cs*{jobname}\code{.aux} instead of its own auxiliary file \cs*{jobname}\code{.xsim}. + \opt{blank} + \sinceversion{0.17}With this option enabled \xsim\ will not define the + default environments \env{exercise} and \env{solution}. \end{options} -Those options are used the usual way as package option +Those options are load-time options and are used the usual way as package +options: \begin{sourcecode} \usepackage[verbose]{xsim} \end{sourcecode} -or as global option -\begin{sourcecode} - \documentclass[verbose]{article} -\end{sourcecode} -or via the setup\changedversion{0.13} command as options belonging to the -\module{package}, see also section~\vref{sec:setting-options}: -\begin{sourcecode} - \xsimsetup{package/verbose} -\end{sourcecode} +\begin{bewareofthedog} + Although those options technically belong to the \module{package} module + (see also section~\vref{sec:setting-options}) it is \emph{not} possible to + set them via \cs{xsimsetup}. +\end{bewareofthedog} \subsection{Setting Options}\label{sec:setting-options} Apart from the package options already described in @@ -208,7 +207,8 @@ also means two additional commands exist: \section{Exercises and Solutions} The two predefined environments for exercises and solutions are the following -ones: +ones\footnote{When you load \xsim\ with the \option{blank} those environments + will \emph{not} be defined!}: \begin{environments} \environment{exercise}[\oarg{\acsp*{prop}}] Input and typeset an exercise. See section~\vref{sec:exercise-properties} @@ -334,15 +334,15 @@ package option: A lot of the lines \xsim\ writes to the auxiliary file and reads in a subsequent run look like this: \begin{sourcecode} - \XSIM{points}{exercise-2=={4}|exercise-10=={2.5}|problem-11=={5}} + \XSIM{points}{exercise-2=={4}||exercise-10=={2.5}||problem-11=={5}} \end{sourcecode} As you can see different entries of the various properties of exercises are - separated with a \code{|}. This means that you cannot use this symbol - inside properties. This is why \xsim\ provides an option to change this - marker. + separated with \code{||}. This means that you cannot use this symbol + combination inside properties. For this reason \xsim\ provides an option to + change the marker. \end{bewareofthedog} \begin{options} - \keyval{split-aux-lists}{string}\Default{\code{|}} + \keyval{split-aux-lists}{string}\Default{\code{||}} Set\sinceversion{0.11} the string that is used to separate the property entries in the auxiliary file. \end{options} @@ -515,30 +515,37 @@ Exercise like the \env{exercise} environment and possibly others defined with True if an exercise has been used at least once. For an existing exercise this is only false for exercises that have been collected (\cf~section~\vref{sec:collecting-exercises}). + \propbool{solution} + \sinceversion{0.17}Holds the solution boolean of an exercise. If this is + true then a solution has the same text\slash environment body as the + corresponding exercise. (This might be useful for multiple choice + questions for example.) \propval{tags}{csv list of tags} Holds the list of tags the exercise should be associated with. \propval{topics}{csv list of topics} Holds the list of topics the exercise should be associated with. \propval{page}{text} - Holds the page counter value representation of an exercise (\ie, what you - usually know as \cs*{thepage}). + Holds the page counter value representation of an exercise \\ + (\ie, what you usually know as \cs*{thepage}). \propval{page-value}{integer} - Holds the page counter value of an exercise (\ie, what you usually know as - \cs*{the}\cs*{value}\Marg{page}). + Holds the page counter value of an exercise \\ + (\ie, what you usually know as \cs*{the}\cs*{value}\Marg{page}). \propval{section}{text} - Holds the section counter value representation of an exercise (\ie, what - you usually know as \cs*{thesection}). + Holds the section counter value representation of an exercise \\ + (\ie, what you usually know as \cs*{thesection}). \propval{section-value}{integer} - Holds the section counter value of an exercise (\ie, what you usually know - as \cs*{the}\cs*{value}\Marg{section}). + Holds the section counter value of an exercise \\ + (\ie, what you usually know as \cs*{the}\cs*{value}\Marg{section}). \propval{chapter}{text} - Holds the chapter counter value representation of an exercise (\ie, what - you usually know as \cs*{thechapter}). \emph{Only if a command - \cs*{chapter} \emph{and} a counter \code{chapter} exist.} + Holds the chapter counter value representation of an exercise \\ + (\ie, what you usually know as \cs*{thechapter}). \\ + \emph{Only if a command \cs*{chapter} \emph{and} a counter \code{chapter} + exist.} \propval{chapter-value}{integer} - Holds the chapter counter value of an exercise (\ie, what you usually know - as \cs*{the}\cs*{value}\Marg{chapter}). \emph{Only if a command \cs*{chapter} - \emph{and} a counter \code{chapter} exist.} + Holds the chapter counter value of an exercise \\ + (\ie, what you usually know as \cs*{the}\cs*{value}\Marg{chapter}). \\ + \emph{Only if a command \cs*{chapter} \emph{and} a counter \code{chapter} + exist.} \propval{sectioning}{section numbers} Holds five brace groups which in turn hold the section numbers (integers) of the exercise in the order @@ -594,15 +601,12 @@ others can be set using the optional argument of the exercise environment. This is better demonstrated with an example: \begin{example} - % \lipsum is provided by package `lipsum' \begin{exercise} - \lipsum[4] \verb+\GetExerciseProperty{id}+: \GetExerciseProperty{id} \par \verb+\GetExerciseAliasProperty{ID}+: \GetExerciseAliasProperty{ID} \par \verb+\GetExerciseProperty{ID}+: \GetExerciseProperty{ID} \end{exercise} \begin{exercise}[ID=foo-bar] - \lipsum[4] \verb+\GetExerciseProperty{id}+: \GetExerciseProperty{id} \par \verb+\GetExerciseAliasProperty{ID}+: \GetExerciseAliasProperty{ID} \par \verb+\GetExerciseProperty{ID}+: \GetExerciseProperty{ID} |