chemmacros 反应环境和 cleveref 参考

chemmacros 反应环境和 cleveref 参考

我对自动引用有疑问cleverefchemmacros包。当我使用 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}

相关内容