我正在写一份报告,需要用到这个iopart
课程,可以从以下网址下载这一页,并且我遇到了目录中“附录”一词与标题重叠的问题。
让我解释一下。请注意图片中的Appendix
单词是如何与阑尾名称重叠的。
乳胶代码:
\documentclass[12pt]{iopart}
\pdfoutput=1
\begin{document}
\title{Title}
\author{Author$^1$, Author$^2$, Author$^1$}
\address{
{\small $^1$University department.} \\
{\small $^2$Company.}
}
\begin{abstract}
Abstract.
\end{abstract}
\maketitle
\tableofcontents
\clearpage
\section{Section 1}
\section{Section 2}
\appendix
\section{Extra 1}
\subsection{Extra 1.1}
\subsection{Extra 1.2}
\section{Extra 2}
\subsection{Extra 2.1}
\subsection{Extra 2.2}
\end{document}
现在我找到了答案这里这帮助我解决了问题,但只是部分问题:有些Appendix
不再与自己的标题重叠,但这只发生在与章节(附录 A、附录 B、...)相对应的附录上。与小节(附录 A.1、A.2、B.1、B.2、...)相对应的附录仍然重叠。
新代码是
\documentclass[12pt]{iopart}
\pdfoutput=1
\usepackage{lipsum}
\usepackage{etoolbox}
\makeatletter
\def\@mkboth#1#2{}
\newlength\appendixwidth
\preto\appendix{\addtocontents{toc}{\protect\patchl@section}}
\newcommand{\patchl@section}{%
\settowidth{\appendixwidth}{\textbf{Appendix }}%
\addtolength{\appendixwidth}{1.5em}%
\patchcmd{\l@section}{1.5em}{\appendixwidth}{}{\ddt}%
}
\makeatother
\begin{document}
\title{Title}
\author{Author$^1$, Author$^2$, Author$^1$}
\address{
{\small $^1$University department.} \\
{\small $^2$Company.}
}
\begin{abstract}
Abstract.
\end{abstract}
\maketitle
\tableofcontents
\clearpage
\section{Section 1}
\section{Section 2}
\appendix
\section{Extra 1}
\subsection{Extra 1.1}
\subsection{Extra 1.2}
\section{Extra 2}
\subsection{Extra 2.1}
\subsection{Extra 2.2}
\end{document}
我尝试通过添加来找到解决方案
\makeatletter
\def\@mkboth#1#2{}
\newlength\subappendixwidth
\preto\subappendix{\addtocontents{toc}{\protect\patchl@subsection}}
\newcommand{\patchl@subsection}{%
\settowidth{\subappendixwidth}{\textbf{Appendix }}%
\addtolength{\subappendixwidth}{1.5em}%
\patchcmd{\l@subsection}{1.5em}{\subappendixwidth}{}{\ddt}%
}
\makeatother
但不幸的是,它不起作用。你们有人知道如何修复附录 A.1、A.2、B.1、B.2、... 的重叠吗?我已经使用 LaTeX 很长一段时间了,但我不知道如何自己修复它,甚至不知道它是否可以修复。
感谢大家抽出时间。
答案1
您可以修补负责排版目录中标题的命令\l@section
和,但只能在发出之后进行。\l@subsection
\appendix
\documentclass[12pt]{iopart}
\usepackage{etoolbox}
\makeatletter
\newrobustcmd{\fixappendix}{%
\patchcmd{\l@section}{1.5em}{7em}{}{}%
\patchcmd{\l@subsection}{2.3em}{7em}{}{}%
}
\makeatother
\begin{document}
\title{Title}
\author{Author$^1$, Author$^2$, Author$^1$}
\address{
{\small $^1$University department.} \\
{\small $^2$Company.}
}
\begin{abstract}
Abstract.
\end{abstract}
\maketitle
\makeatletter
\tableofcontents
\clearpage
\section{Section 1}
\section{Section 2}
\appendix
\addtocontents{toc}{\fixappendix}
\section{Extra 1}
\subsection{Extra 1.1}
\subsection{Extra 1.2}
\section{Extra 2}
\subsection{Extra 2.1}
\subsection{Extra 2.2}
\end{document}
答案2
我没有这个iopart
课程,也不想下载。从我看过的代码来看,你什么也没做附录在目录中的数字之前。如果是这样,那么该类存在问题,您应该报告。
但是,下面的代码与您的类似,但使用了article
类。我已使用该tocloft
包为目录中的附录章节编号提供额外空间。
% temp4.tex SE 520516
%\documentclass[12pt]{iopart}
\documentclass[12pt]{article}
\usepackage{tocloft}
\begin{document}
\tableofcontents
\clearpage
\section{Section 1}
\section{Section 2}
\appendix
\addtocontents{toc}{\addtolength{\cftsecnumwidth}{5em}} % more space for section numbers
\addtocontents{toc}{\addtolength{\cftsubsecnumwidth}{4em}} % more space for subsection numbers
\section{Extra 1}
\subsection{Extra 1.1}
\subsection{Extra 1.2}
\section{Extra 2}
\subsection{Extra 2.1}
\subsection{Extra 2.2}
\end{document}
LaTeX\addtocontents
宏将代码插入 ToC 文件中,并阅读tocloft
手册 ( > texdoc tocloft
) 以了解宏的含义\cft...
。调整 5em 和 4em 以适合您的文档。