修改目录文件 (.toc) 中的内容行?

修改目录文件 (.toc) 中的内容行?

更新: 抱歉,我不得不删除原始帖子,因为我无法添加超过 2 个链接。好吧,我的问题的根源是这样的:

\documentclass{report}
\usepackage[toc,page]{appendix}
\usepackage{lipsum}

\begin{document}

\tableofcontents
% Main body
\chapter{Foo 1}
\section{bar 1}
baz bar foo.
\chapter{Foo 2}
\section{bar 2}
foo bar baz.
\section{bar 3}
bar foo baz.

% Appendix
\noappendicestocpagenum
\begin{appendices}
\chapter{First appendix}
\lipsum[1]
\chapter{Second appendix}
\lipsum[1]
\end{appendices}
\end{document}

此代码在目录中产生以下输出: toc_bad 其中存在一些问题:

我想:

1)“附录”现在处于“章节”级别。

2) “A”和“B”位于附录中的“章节”级别。这也意味着附录的编号为“A”、“B”……(而不是“附录 A”、“附录 B”……)

3)附录中的“章节”标题改为“附录 A”、“附录 B”(标题后附有附录标题)

我已设法使用子附录和修改一些命令来实现 1 和 3,但似乎无法完全正确地实现 2。这是我尝试的:

\documentclass{report}
\usepackage[toc,page]{appendix}
\usepackage{lipsum}

\begin{document}

\tableofcontents
% Main body
\chapter{Foo 1}
\section{bar 1}
baz bar foo.
\chapter{Foo 2}
\section{bar 2}
foo bar baz.
\section{bar 3}
bar foo baz.

% Appendix
\noappendicestocpagenum
\begin{appendices}
\setcounter{chapter}{1} % To avoid naming problems like .1
\begin{subappendices} % This achieves 2
\renewcommand{\thesection}{Appendix \Alph{section}} % This achieves 3, but screws up 2

\section{First appendix}
\lipsum[1]
\section{Second appendix}
\lipsum[1]
\end{subappendices}
\end{appendices}
\end{document}

我得到以下输出: 坏目录

我尝试过其他方法修复此问题,例如使用tocloft软件包。但我看到的使用此软件包的解决方案无法仅影响附录部分。

注意:最后的输出与我能得到的期望输出非常接近。appendix包中的其他选项似乎都无法实现这样的效果。我只需要按照第 2 点将编号修正为“A”、“B”...

我希望我已经把我的问题说清楚了!:) 谢谢大家!

答案1

编辑:在答案的最后查看 OP 真正想要的版本!

附录章节编号的数字宽度太小,导致条目重叠。

可以通过在\cftsecnumwidth长度上添加一些额外的长度(比如 40pt)来解决此问题,但这必须明确写入文件中.toc,即使用\addtocontents{toc}{\protect\addtolength....}(请参阅实际版本的代码)。

\protect是必要的,因为\addtolength等是脆弱的命令,并且无法在写入.toc文件的过程中存活下来。

\documentclass{report}
\usepackage{tocloft}

\newlength{\appendixextrasecnumwidth}
\setlength{\appendixextrasecnumwidth}{40pt}
\usepackage[toc,page]{appendix}
\usepackage{lipsum}

\begin{document}

\tableofcontents
% Main body
\chapter{Foo 1}
\section{bar 1}
baz bar foo.
\chapter{Foo 2}
\section{bar 2}
foo bar baz.
\section{bar 3}
bar foo baz.

\begin{appendices}
  \addtocontents{toc}{\protect\addtolength{\protect\cftsecnumwidth}{\appendixextrasecnumwidth}}%%%
%  \begin{subappendices}
    \renewcommand{\thesection}{\appendixname\ \Alph{section}} % This achieves 3, but screws up 2

    \section{First appendix}
    \lipsum[1]
    \section{Second appendix}
    \lipsum[1]
%  \end{subappendices}
\end{appendices}
\end{document}

在此处输入图片描述

更新

\documentclass{report}
\usepackage{etoolbox}
\usepackage[toc,page]{appendix}
\usepackage{lipsum}

\makeatletter
\def\@firstarg{}%
\def\@cmp@@{section}%
\makeatother

\begin{document}

\tableofcontents
% Main body
\chapter{Foo 1}
\section{bar 1}
baz bar foo.
\chapter{Foo 2}
\section{bar 2}
foo bar baz.
\section{bar 3}
bar foo baz.



\begin{appendices}
  \makeatletter
  \let\latex@@seccntformat\@seccntformat%
  \def\@seccntformat#1{%
    \ifstrequal{#1}{section} {%
      \appendixname\ %
    }{%
    }%
    \latex@@seccntformat{#1}%
  }
  \makeatother
  \renewcommand{\thesection}{\Alph{section}} % This achieves 3, but screws up 2
  \section{First appendix}
  \lipsum[1]
  \section{Second appendix}
  \lipsum[1]
\end{appendices}
\end{document}

相关内容