1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 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
|