% \iffalse %% %% File: topsection.dtx Copyright (C) 2005 by Alexander I. Rozhenko %% %\NeedsTeXFormat{LaTeX2e} %\ProvidesPackage{topsection} % [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} % % \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}}% }% }% } % % \end{macrocode} % \end{macro} \endinput