我在使用 AER-AEA 文档类交叉引用附录中的子部分时遇到了问题。以下是示例:
\documentclass[AER]{AEA}
\newtheorem{proposition}{Proposition}
\begin{document}
\begin{proposition}\label{Prop1}
Interesting proposition.
\end{proposition}
Proof of Proposition~\ref{Prop1} is in Appendix~\ref{appendix_A1}.\\
\appendix
\section{Appendix}
\subsection{Proof of Proposition~\ref{Prop1}}\label{appendix_A1}
Proof is here.
\end{document}
此代码提供:
命题 1 的证明在附录 A.A1 中。
但我想得到:
命题 1 的证明在附录 A1 中。
答案1
做
\renewcommand\thesubsection{\thesection\@arabic\c@subsection}
在\appendix
命令中,即在前面加上\thesection
,这是\@Alph\c@section
有效的。
通过删除 的特定代码,可以将参考格式\p@subsection
更改为仅使用。\theproposition
subsection
请注意,期刊编辑可能会拒绝此更改。
编辑:一些解释
该宏\g@addto@macro
在现有的宏代码中添加了附加代码,因此如果已使用\g@addto@macro{\appendix}{foo}
则会导致打印。foo
\appendix
由于这是一个名称中\g@addto@macro
带有 - 字母的宏,因此需要宏对来允许宏名称。@
\makeatletter...\makeatother
@
这个\AtBeginDocument
钩子“保证”我们对本地的更改是\appendix
在文档开头完成的,\AtBeginDocument
在类或包提供的所有其他钩子之后,所以我们的更改是这个命令链中的最后一个。
\documentclass[AER]{AEA}
\newtheorem{proposition}{Proposition}
\makeatletter
\AtBeginDocument{
\g@addto@macro{\appendix}{\renewcommand{\p@subsection}{}}
}
\makeatother
\begin{document}
\begin{proposition}\label{Prop1}
Interesting proposition.
\end{proposition}
Proof of Proposition~\ref{Prop1} is in Appendix~\ref{appendix_A1}.\\
\appendix
\section{Appendix}
\subsection{Proof of Proposition~\ref{Prop1}}\label{appendix_A1}
Proof is here.
\end{document}