Как заставить 'appendix' появляться в toc в Latex? - PullRequest
19 голосов
/ 04 апреля 2009

Как заставить слово «appendix» появляться в оглавлении? Прямо сейчас toc выглядит так:

1 ......
2 ......
.
.
A .....
Б .....

Я бы хотел, чтобы это было:

1 ......
2 ......
.
.
Приложение А .....
Приложение Б .....

Моя структура исходного файла латекса выглядит следующим образом:

\ BEGIN {документ}
\ Tableofcontents
\ Включают {...}
\ Включают {...}
\ Приложение
\ Включают {...}
\ Включают {...}
\ end {document}

Ответы [ 5 ]

11 голосов
/ 05 апреля 2009

Есть несколько способов решить эту проблему; к сожалению, у меня есть только хак для вас на этом этапе. Одна проблема заключается в том, что если мы переопределим номер раздела «A», включив в него слово «Приложение», это приведет к неправильному форматированию оглавления. Поэтому вместо этого я только что определил новую команду секционирования, которая печатает секцию без номера и вставляет «Приложение X» вручную.

Довольно уродливо, но, по крайней мере, работает без изменения какой-либо разметки :)

\documentclass{article}

\makeatletter
\newcommand\appendix@section[1]{%
  \refstepcounter{section}%
  \orig@section*{Appendix \@Alph\c@section: #1}%
  \addcontentsline{toc}{section}{Appendix \@Alph\c@section: #1}%
}
\let\orig@section\section
\g@addto@macro\appendix{\let\section\appendix@section}
\makeatother

\begin{document}

\tableofcontents

\section{goo}
\label{a} 
This is sec~\ref{a}

\section{har}
\label{b}
This is sec~\ref{b}

\appendix
\section{ji}
\label{c} 
This is app~\ref{c}
\subsection{me}
does this look right?

\end{document}
11 голосов
/ 04 апреля 2009

Этого, вероятно, легче всего достичь с помощью приложения пакет , или класс мемуаров .

Если вы не хотите использовать готовое решение, вам придется взломать команды секционирования. Когда мне нужно было сделать это для моего диссертации, я клонировал report класс, и редактировал, пока я не сделал на полях дама счастлива. То, что вы ищете, это определение макроса \addcontentsline.

7 голосов
/ 04 ноября 2010

Для своей диссертации я сделал следующее:

\appendix
\addcontentsline{toc}{section}{Appendix~\ref{app:scripts}: Training Scripts}
\section*{Sample Training Scripts}
\label{app:scripts}
Blah blah appendix content blah blah blah.

Объяснение: Я вручную добавил строку в оглавление, чтобы в моем оглавлении появилось "Приложение X: ...". Затем я исключил фактическую команду раздела из оглавления, используя звездочку.

1 голос
/ 04 мая 2013

Приложение является действительно хорошим и простым решением. Мой ответ может быть полезен для тех, кто хочет изменить стиль нумерации глав, например, с использованием кириллицы или римских цифр. Стиль нумерации приложений жестко задан в команде \ @ resets @ pp (я искал источники здесь http://hal.in2p3.fr/docs/00/31/90/21/TEX/appendix.sty). Я решил это, просто переопределив эту команду для себя. Просто добавьте этот код в преамбулу:

\makeatletter

    \renewcommand{\@resets@pp}{\par
        \@ppsavesec
        \stepcounter{@pps}
        \setcounter{section}{0}

        \if@chapter@pp
            \setcounter{chapter}{0}
            \renewcommand\@chapapp{\appendixname}
            \gdef\thechapter{\Asbuk{chapter}} % changed
        \else
            \setcounter{subsection}{0}
            \gdef\thechapter{\Asbuk{section}} % changed
        \fi

        \if@pphyper
            \if@chapter@pp
                \renewcommand{\theHchapter}{\theH@pps.\Asbuk{chapter}} % changed
            \else
                \renewcommand{\theHsection}{\theH@pps.\Asbuk{section}} % changed
            \fi

            \def\Hy@chapapp{\appendixname}%
        \fi
    \restoreapp
}

\makeatother

В результате

Appendix A
Appendix B
Appendix C
...

изменится на

Appendix A
Appendix Б
Appendix В
... etc

Я не эксперт по латексу, и я не могу гарантировать, что этот код не сломает что-то еще.

0 голосов
/ 18 января 2017

Исходя из ответа @Will Robertson, приведенный ниже код определяет то же самое, но для главы, а также фиксирует тот факт, что chapter* не добавляет в заголовок при использовании пакета fancyhdr.

С этим в preable все проблемы решены.

\makeatletter
\newcommand\appendix@chapter[1]{%
    \refstepcounter{chapter}%
    \def\app@ct{Appendix \@Alph\c@chapter: #1}
    \orig@chapter*{\app@ct}%
    \markboth{\MakeUppercase{\app@ct}}{\MakeUppercase{\app@ct}}
    \addcontentsline{toc}{chapter}{\app@ct}%
}
\let\orig@chapter\chapter
\g@addto@macro\appendix{\let\chapter\appendix@chapter}
\makeatother
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...