Cleveref 和 ametsoc

Cleveref 和 ametsoc

我真的很喜欢 cleveref。

我在写手稿时也用过它ametsoc 样式文件

但至少存在一个问题:附录字母(必须手动分配并在文本中引用)会发生位移。

例子:

\appendix[A]
\appendixtitle{Title name}

应该屈服

附录 A

标题名称

但我得到的却是

附录

A

标题名称

我不想浏览整个文本并\cref用适当的图、方程式等替换我的文本……特别是因为我可能想在另一个文档中重复使用该文本,其中的部分可能是章节。

有任何想法吗?


最小工作示例

\documentclass[twocol]{ametsoc}
\journal{mwr}
\usepackage{cleveref} 
\begin{document}
\appendix[A]
\appendixtitle{Title}
  Blah blah
\end{document}

答案1

cleveref包修补程序\appendix假设它是一个无参数的宏,但事实并非如此ametsoc

因此,我的策略是从修补不当的宏中恢复正确的定义\appendix,并以更安全的方式进行修补。

\documentclass[twocol]{ametsoc}
\journal{mwr}
\usepackage{cleveref}
\usepackage{xpatch}

% split the badly patched \appendix command
% into the two parts: the first four tokens
% will restore the correct definition of \appendix
% and the rest is the patching text, stored
% into \appendtoappendix
\begingroup
\def\splitappendix#1#2#3#4#5\splitappendix{%
  \endgroup
  \def\appendix{#1#2#3{#4}}\toks0={#5}%
  \edef\cleverefappendixaddition{\the\toks0}%
}
\expandafter\splitappendix\appendix\splitappendix % \splitappendix will disappear
\xapptocmd\appendix{\cleverefappendixaddition}{}{}

\begin{document}
\appendix[A]           
\appendixtitle{Title}
  Blah blah
\end{document}

在此处输入图片描述

一个可能更简单的策略是

\documentclass[twocol]{ametsoc}
\journal{mwr}

\let\goodappendix\appendix
\def\appendix{}

\usepackage{cleveref}

\let\cleverefappendixaddition\appendix
\let\appendix\goodappendix
\usepackage{xpatch}
\xapptocmd\appendix{\cleverefappendixaddition}{}{}

这将获得相同的结果,但需要与包加载混合的代码。

相关内容