我试图引用附录中给出的结果,但cleveref
给出的是“附录附录”(将其加倍)。解决此问题的一种方法是添加\def\appendixname{}
。
毫不奇怪,这也从章节标题中删除了名称“附录”。我该如何解决这个问题,同时仍在章节标题中保留“附录”?
梅威瑟:
主文本
\documentclass[final,times,letterpaper,authoryear,12pt]{elsarticle}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{indentfirst}
\usepackage{amscd}
\usepackage{mathrsfs}
\usepackage{ulem}
\usepackage{bbm}
\usepackage{hyperref}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{setspace}
\usepackage{color}
\usepackage{subfiles}
\usepackage{graphicx}
\usepackage[nameinlink]{cleveref}
\usepackage{lmodern}
\usepackage{kpfonts}
\usepackage{etex,etoolbox}
\usepackage{amsthm,amssymb}
\usepackage{thmtools}
\usepackage{environ}
\crefname{lem}{lemma}{lemmas}
\crefname{prop}{Proposition}{Propositions}
\crefname{thr}{Theorem}{Theorems}
\crefname{cor}{Corollary}{Corollaries}
\crefname{ass}{Assumption}{Assumptions}
\crefname{df}{Definiton}{Definitons}
\usepackage{enumitem}
\usepackage{caption}
\usepackage{subcaption}
\usepackage[letterpaper,layout=letterpaper]{geometry}
\begin{document}
\subfile{testa}
\appendix
\subfile{appendix}
\subfile{appendixb}
\end{document}
种皮
\documentclass[main.tex]{subfiles}
\begin{document}
\section{Introduction}
This is an introduction. From now on we will hold Result A and B as true. We prove Result A in \Cref{regsol} and we prove Result B in \Cref{regsolB}.
附录.tex
\documentclass[main.tex]{subfiles}
\def\appendixname{}
\begin{document}
\section{Proof of Result A}\label{regsol}
We show that...
\end{document}
附录b.tex
\documentclass[main.tex]{subfiles}
\begin{document}
\section{Proof of Result B}\label{regsolB}
We show that...
\end{document}
\end{document}
答案1
执行时,文档类会以一种快速但不幸的是相当肮脏的方式elsarticle
重新定义宏:\thesection
\appendix
\gdef\thesection{\appendixname\@Alph\c@section}
[2020 年中更新:最新版本的说明elsarticle.cls
是
\gdef\thesection{\appendixname~\@Alph\c@section}
与我答案的原始形式的代码相比,唯一的区别是在 之后插入了一个不可破坏的空格\appendixname
。]
这会将单词“Appendix”添加到(Alpha-stye)部分“数字”(A,B,C 等)的前缀。这就是导致生成的交叉引用调用cleveref
包含两次字符串“Appendix”的原因。
快速解决方法是在交叉引用文档附录部分的章节时使用指令\labelcref
而不是使用指令。\cref
更复杂的修复(即允许您继续使用\Cref
和\cref
交叉引用附录中的章节的修复)涉及在\appendix
指令后立即插入以下代码块:
\gdef\thesection{\Alph{section}} % corrected redefinition of "\thesection"
\makeatletter
\renewcommand\@seccntformat[1]{\appendixname\ \csname the#1\endcsname.\hspace{0.5em}}
\makeatother
单独的评论:说得委婉一点,文档的序言组织得不是很好。例如,您times
为\documentclass
指令提供了选项;此选项告诉 LaTeX 加载“Times Roman”字体。稍后,您加载lmodern
字体包,该包加载“Latin Modern”字体系列,然后加载kpfonts
字体包,该包加载“Palatino”字体系列的克隆。您想要哪个字体系列?您可能需要浏览序言并确定真正需要哪些包。
以下是一个 MWE,它说明了上面显示的“更复杂的修复”的工作原理。(我简化了测试文档的序言和正文,以便将重点放在要点上。)
\documentclass[letterpaper,12pt]{elsarticle}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage{geometry}
\usepackage[colorlinks]{hyperref}
\usepackage[nameinlink]{cleveref}
\begin{document}
\section{Introduction}
We prove Result A in \Cref{regsol} and we prove Result B in \Cref{regsolB}.
\appendix
%% now insert the new code block
\gdef\thesection{\Alph{section}}
\makeatletter
\renewcommand\@seccntformat[1]{\appendixname\ \csname the#1\endcsname.\hspace{0.5em}}
\makeatother
\section{Proof of Result A}\label{regsol}
We show that \dots
\section{Proof of Result B}\label{regsolB}
We show that \dots
\end{document}