我对自动引用有疑问cleveref
和chemmacros
包。当我使用 cleveref 引用反应时,cleveref 会键入“eq. (1)”,因为chemmacros
使用方程环境。这就是为什么使用 \crefname、\creflabelformat 或 \crefformat 进行简单自定义没有效果的原因。但我希望 cleveref 检测反应并将引用设置为reaction {1}
。这里是 MWE。
\documentclass{scrartcl}
\usepackage{chemmacros}
\usepackage{cleveref}
\begin{document}
Before a little text.
\begin{reaction}
A -> B \label{rxn:test}
\end{reaction}
After the ref with cleveref \cref{rxn:test}.
\end{document}
cleveref 包提供了一个高级 \label 命令,带有一个可选参数来覆盖引用类型。
\begin{reaction}
A -> B \label[reaction]{rxn:test}
\end{reaction}
给予
A -> Breaction]rxn:test
但没有错误和正确的参考输出。根据 cleveref 文档,您应该使用以下代码作为可选的 \label 命令
\begin{reaction}
A -> B {\label[reaction]{rxn:test}}
\end{reaction}
错误代码为 3 次
amsmath: Multiple \label's: label '[reaction]{rxn:test}' will be lost. \end{reaction}
但是使用 \crefname{reaction}{reaction}{reactions} 和 \creflabelformat{reaction}{#2{#1}#3} 时参考输出是正确的。
在调查过程中我发现,使用此代码(在标签中添加 1)
\begin{reaction}
A -> B {\label[reaction]{rxn:test1}}
\end{reaction}
出现了几个错误并且没有正确的参考输出。
Undefined control sequence ...n:test\chemformula_subscript:n {1}}{{1}{1}} Undefined control sequence ...ubscript:n {1}@cref}{{[reaction][3][]1}{1}} amsmath: Multiple \label's: label '[reaction]{rxn:test\chemformula_subscript:n {1}}' will be lost. \end{reaction} Undefined control sequence ...n:test\chemformula_subscript:n {1}}{{1}{1}} Undefined control sequence ...ubscript:n {1}@cref}{{[reaction][4][]1}{1}}
chemmacros 定义反应为environ
. chemmacros 或 environ 处理可选的 \label-command 不正确。
有人有办法将 chemmacros 与 cleveref 连接起来吗?谢谢!
答案1
版本 4.5 (2014/04/08)chemmacros
支持可选参数\label
:
\documentclass{article}
\usepackage{chemmacros}[2014/04/08]
\usepackage{cleveref}
\crefname{reaction}{reaction}{reactions}
\creflabelformat{reaction}{#2\{#1\}#3}
\begin{document}
\begin{reaction}
A -> B \label[reaction]{rct:ab}
\end{reaction}
See \cref{rct:ab}\ldots
\end{document}
更新 2016-11-26
从 v5.6 开始chemmacros
原生支持了cleveref
。上图的代码:
\documentclass{article}
\usepackage{chemmacros}[2016/05/02]
\usechemmodule{reactions}
\usepackage{cleveref}
\begin{document}
\begin{reaction}
A -> B \label{rct:ab}
\end{reaction}
See \cref{rct:ab}\ldots
\end{document}