从 TeXLive 2017 更新到 2021 后,我们在附录包中遇到了以下问题:在包含多个附录的文档中,在第一个附录之后,对\autoref
章节的引用标有单词“附录”而不是“章节”。这是 MWE 和输出,一次使用附录包的 v1.2b 编译,一次使用 v1.2c 编译。
梅威瑟:
\documentclass{article}
\usepackage{appendix}
\usepackage{hyperref}
\begin{document}
\section{Section 1}
\label{sec:section1}
SEE \autoref{sec:section1}
\begin{appendices}
\section{Appendix Section 1}
\label{app:section1}
\end{appendices}
\section{Section 2}
\label{sec:section2}
SEE \autoref{sec:section2}
\begin{appendices}
\section{Appendix Section 2}
\label{app:section2}
\end{appendices}
\end{document}
输出:
- 附录 v1.2b
- 附录 v1.2c
有没有办法在 v1.2c 中实现用“section”一词标记的引用?
答案1
我认为这是附录中的一个错误,它使用 \xdef 而不是 \def。你现在可以使用以下方法恢复此问题
\documentclass{article}
\usepackage{appendix,etoolbox}
\usepackage{hyperref}
\makeatletter
\patchcmd\@resets@pp{\xdef}{\def}{}{\fail}
\patchcmd\@resets@ppsub{\xdef}{\def}{}{\fail}
\makeatother
\begin{document}
\section{Section 1}
\label{sec:section1}
SEE \autoref{sec:section1}
\begin{appendices}
\section{Appendix Section 1}
\label{app:section1}
\end{appendices}
\section{Section 2}
\label{sec:section2}
SEE \autoref{sec:section2}
\begin{appendices}
\section{Appendix Section 2}
\label{app:section2}
\end{appendices}
\end{document}
答案2
虽然 LaTeX 将附录视为与章节或节相同的内容,但在这种情况下,您可能希望将它们视为小节。顺便说一句,这也解决了 autoref 问题。
\documentclass{article}
\usepackage{hyperref}
\newenvironment{appendices}{\setcounter{subsection}{0}%
\def\thesubsection{\thesection\Alph{subsection}}}{}
\begin{document}
\section{Section 1}
\label{sec:section1}
SEE \autoref{sec:section1}
\begin{appendices}
\subsection{Appendix Section 1}
\label{app:section1}
\end{appendices}
\section{Section 2}
\label{sec:section2}
SEE \autoref{sec:section2}
\begin{appendices}
\subsection{Appendix Section 2}
\label{app:section2}
\end{appendices}
\end{document}
或者,此版本使用单独的附录计数器。
\documentclass{article}
\usepackage{hyperref}
\newcounter{appendix}
\newenvironment{appendices}{\edef\savesection{\arabic{section}}%
\setcounter{section}{\value{appendix}}%
\def\thesection{\Alph{section}}}%
{\setcounter{appendix}{\value{section}}%
\setcounter{section}{\savesection}}
\begin{document}
\section{Section 1}
\label{sec:section1}
SEE \autoref{sec:section1}
\begin{appendices}
\section{Appendix Section 1}
\label{app:section1}
\end{appendices}
\section{Section 2}
\label{sec:section2}
SEE \autoref{sec:section2}
\begin{appendices}
\section{Appendix Section 2}
\label{app:section2}
\end{appendices}