LaTeX:iopart 和重叠附录

LaTeX:iopart 和重叠附录

我正在写一份报告,需要用到这个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 以适合您的文档。

相关内容