最近的艾克玛特风格(尝试这里如果该链接已损坏)似乎无法正常工作titletoc
,在目录开头产生了一串不需要的章节名称:
我正在寻找类似于答案中所示的输出这个问题,我可以通过替换acmart
来获得article
:
我曾经研究过其他目录解决方案,但我特别喜欢 的输出titletoc
,因此如果可能的话,我希望它能够发挥作用。
代码如下:
\documentclass{acmart}
\usepackage{appendix}
\usepackage{titletoc}
\newcommand\DoToC{%
\startcontents
\printcontents{}{2}{\textbf{Contents}\vskip3pt\hrule\vskip5pt}
\vskip3pt\hrule\vskip5pt
}
\begin{document}
\DoToC
\section{My First Section}
\section{My Second Section}
\begin{appendices}
\section{My First Appendix}
\DoToC
\subsection{My First Subsection}
\subsection{My Second Subsection}
\section{My Second Appendix}
\DoToC
\subsection{My First Subsection}
\subsection{My Second Subsection}
\end{appendices}
\end{document}
答案1
问题是,acmart
加载hyperref
。通常hyperref
会重新定义一些titletoc
内部函数以使其正常工作。但是,由于您现在titletoc
在 之后加载hyperref
,因此它没有机会这样做。
这意味着您需要自己重新定义它们。
这有效:
\documentclass{acmart}
\usepackage{appendix}
\usepackage{titletoc}
\makeatletter
\def\ttl@Hy@steplink#1{%
\Hy@MakeCurrentHrefAuto{#1*}%
\edef\ttl@Hy@saveanchor{%
\noexpand\Hy@raisedlink{%
\noexpand\hyper@anchorstart{\@currentHref}%
\noexpand\hyper@anchorend
\def\noexpand\ttl@Hy@SavedCurrentHref{\@currentHref}%
\noexpand\ttl@Hy@PatchSaveWrite
}%
}%
}%
\def\ttl@Hy@PatchSaveWrite{%
\begingroup
\toks@\expandafter{\ttl@savewrite}%
\edef\x{\endgroup
\def\noexpand\ttl@savewrite{%
\let\noexpand\@currentHref
\noexpand\ttl@Hy@SavedCurrentHref
\the\toks@
}%
}%
\x
}%
\def\ttl@Hy@refstepcounter#1{%
\let\ttl@b\Hy@raisedlink
\def\Hy@raisedlink##1{%
\def\ttl@Hy@saveanchor{\Hy@raisedlink{##1}}%
}%
\refstepcounter{#1}%
\let\Hy@raisedlink\ttl@b
}%
\def\ttl@gobblecontents#1#2#3#4{\ignorespaces}%
\makeatother
\newcommand\DoToC{%
\startcontents
\printcontents{}{2}{\textbf{Contents}\vskip3pt\hrule\vskip5pt}
\vskip3pt\hrule\vskip5pt
}
\begin{document}
\DoToC
\section{My First Section}
\section{My Second Section}
\begin{appendices}
\section{My First Appendix}
\DoToC
\subsection{My First Subsection}
\subsection{My Second Subsection}
\section{My Second Appendix}
\DoToC
\subsection{My First Subsection}
\subsection{My Second Subsection}
\end{appendices}
\end{document}