summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/ncctools/source/topsection.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/ncctools/source/topsection.dtx')
-rw-r--r--macros/latex/contrib/ncctools/source/topsection.dtx133
1 files changed, 133 insertions, 0 deletions
diff --git a/macros/latex/contrib/ncctools/source/topsection.dtx b/macros/latex/contrib/ncctools/source/topsection.dtx
new file mode 100644
index 0000000000..905b702f94
--- /dev/null
+++ b/macros/latex/contrib/ncctools/source/topsection.dtx
@@ -0,0 +1,133 @@
+% \iffalse
+%%
+%% File: topsection.dtx Copyright (C) 2005 by Alexander I. Rozhenko
+%%
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{topsection}
+%<package> [2005/12/24 v1.0 Top section definition (NCC)]
+%
+% \changes{v1.0}{2005/12/24}{Initial version}
+%
+%<*driver>
+\let\makeindex\relax
+\documentclass{ltxdoc}
+\usepackage{topsection}
+\GetFileInfo{topsection.sty}
+\begin{document}
+\title{The \textsf{topsection} package\thanks{This file
+ has version number \fileversion, last
+ revised \filedate.}}
+\author{Alexander I. Rozhenko\\rozhenko@oapmg.sscc.ru}
+\date{\filedate}
+\maketitle
+\DocInput{topsection.dtx}
+\end{document}
+%</driver>
+% \fi
+% \DescribeMacro\topsection
+% This package implements an unnumbered top-level section
+% (chapter in books and reports or section in articles):
+% \begin{quote}
+% |\topsection|\marg{title}
+% \end{quote}
+% Such a section is used when table of contents, index, or
+% bibliography are prepared. So, the |\topsection| command can
+% be used to make such definitions or redefinitions to be independent
+% on class in use. The command definition is compatible with standard
+% \textbf{article}, \textbf{book}, and \textbf{report} classes
+% and also with the \textbf{ncc} class.
+%
+% \DescribeMacro\@iftopchapter
+% To distinguish what type of top section is used, the following
+% conditional command is also specified:
+% \begin{quote}
+% |\@iftopchapter|\marg{chapter-clause}\marg{section-clause}
+% \end{quote}
+% The \meta{chapter-clause} is executed if top section is the |\chapter|.
+% Otherwise, the \meta{section-clause} is executed.
+%
+% If the \textbf{nccsect}
+% package is used together with this package, the top-section title
+% is also written to the aux-file. To avoid this,
+% use |\skipwritingtoaux| modifier just before the top section.
+%
+% \StopEventually{}
+%
+% \section{The Implementation}
+%
+% At first, we provide |\@mkboth| command to be sure that
+% it is defined (in \textbf{ncc} class |\@mkboth| useless and
+% so it does not defined here). If it does not exist yet, its
+% default value will be equal to \LaTeX's |\@gobbletwo| command.
+% \begin{macrocode}
+%<*package>
+\providecommand\@mkboth[2]{}
+% \end{macrocode}
+%
+% \begin{macro}{\NCC@topsection}
+% \begin{macro}{\@iftopchapter}
+% The |\NCC@topsection| macro contains a command to be used as a
+% top section. To select an appropriate command, we test the
+% |\chapter| command to be defined. The |\@iftopchapter| macro is
+% also specified here.
+% \begin{macrocode}
+\newcommand\@iftopchapter[2]{}
+\@ifundefined{chapter}{%
+ \def\NCC@topsection{\section}%
+ \let\@iftopchapter\@secondoftwo
+}{%
+ \def\NCC@topsection{\chapter}%
+ \let\@iftopchapter\@firstoftwo
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\topsection}
+% Now we define the |\topsection| command. When the package is loaded,
+% we specify the command to be a new one. Its real definition
+% is done at the beginning of document when all packages are
+% already loaded and an appropriate decision can be selected.
+% \begin{macrocode}
+\newcommand*\topsection[1]{}
+\AtBeginDocument{%
+% \end{macrocode}
+% If the \textbf{nccsect} package is in use, we define the |\topsection|
+% command using the basic form of the corresponding sectioning command.
+% The |\noheadingtag| modifier turns off the top-section numbering.
+% In the definition, we test the |\@mkboth| command to be equal to
+% |\@gobbletwo|. This situation appears in two cases: when the page
+% style other than |headings| is used or when the \textbf{ncc} class
+% is loaded. In the last case, the appropriate page header is already
+% specified in sectioning command with corresponding mark-command
+% (|\chaptermark| or |\sectionmark| updates both headers by the same
+% manner). So, in both these cases we need not use the |\@mkboth|.
+% But in other cases we specify the header mark in standard way
+% and use the |\norunninghead| modifier to skip updating headers
+% inside the sectioning command.
+% \begin{macrocode}
+ \@ifpackageloaded{nccsect}{%
+ \renewcommand*\topsection[1]{%
+ \ifx\@mkboth\@gobbletwo
+ \noheadingtag \NCC@topsection{#1}%
+ \else
+ \norunninghead
+ \noheadingtag \NCC@topsection{#1}%
+ \@mkboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}%
+ \fi
+ }%
+% \end{macrocode}
+% When the \textbf{nccsect} package does not loaded, the top-section
+% definition uses just the same technique as in standard classes.
+% \begin{macrocode}
+ }{%
+ \renewcommand*\topsection[1]{%
+ \NCC@topsection*{#1}%
+ \@mkboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}%
+ }%
+ }%
+}
+%</package>
+% \end{macrocode}
+% \end{macro}
+\endinput