当使用 chemnum 包中的 \cmpd 时,如何显示我的标签/id?

当使用 chemnum 包中的 \cmpd 时,如何显示我的标签/id?

我正在使用chemnumClemens Niederberger 软件包来标记我的化合物。现在我有大量的化合物,有时在文档中看到标签而不查找相应的代码行会很有帮助(当然仅限于准备手稿期间)。该软件包附带一个类似的功能showkeys,但当然只适用于“真实”标签。

我创建了一个示例图像来阐明我所说的内容。是否可以\cmpd使用打印标签选项重新定义?

编辑:

我现在知道了show-keys包的选项,但是在环境chemnum内部使用时会失败。没有帮助,因为当化合物第一次出现时它没有显示标签。tikz\setchemnum{show-keys=ref}

到目前为止,我的解决方法是重新定义cmpd为像 一样运行\cmpdshowref{compound}\cmpd{compound}。如果有更聪明的方法来做到这一点,我很乐意阅读。

编辑 2(现在添加了 MWE):

show-keys当化合物首次出现在tikz环境内部时,该选项会出现错误。

• 显然,show-keys当标签包含下划线(例如compound_2)时,该选项会出现错误。

\documentclass{article}
\usepackage{chemnum,tikz}
\setchemnum{show-keys}

\begin{document}

Lorem ipsum \cmpd{foobar} dolor.

Lorem ipsum \cmpd{foobar} dolor.

\tikz \node[fill=yellow] at (0,0) {Lorem ipsum \cmpd{foobar} dolor.};

\tikz \node[fill=yellow] at (0,0) {Lorem ipsum \cmpd{foobar2} dolor.}; % <- fails

Lorem ipsum \cmpd{foobar_2} dolor. % <- fails

\end{document}

在此处输入图片描述

答案1

回答原始问题:

chemnum有内置功能,请参阅第 12 节调试信息手册内容:

\documentclass{article}

\usepackage{chemnum}
\setchemnum{show-keys}% <<< this is what you're looking for

\begin{document}

Lorem ipsum \cmpd{foobar} dolor

Lorem ipsum \cmpd{foobar} dolor

\end{document}

在此处输入图片描述

新定义标签的键将打印到边缘,而引用现有标签的调用将以内联方式打印。

已编辑问题的答案:

您提到的两个“失败”案例有不同的原因:

  1. \tikz \node[fill=yellow] at (0,0) {Lorem ipsum \cmpd{foobar2} dolor.};
    

    这会导致错误,因为的默认定义\cmpdshowdef使用\marginpar。由于这与浮点数非常相似,因此您不能在框(tikz 节点)内使用它。解决方案是使用包\marginnote中的命令重新定义它\marginnote。所需的重新定义显示在chemnum手册第 25 页的第 12 节中:

    \usepackage{marginnote}
    \renewcommand*\cmpdshowdef[1]{%
      \marginnote{\fbox{\normalfont\ttfamily#1}}%
    }
    \renewcommand*\subcmpdshowdef[2]{%
      \marginnote{\fbox{\normalfont\ttfamily#2 (#1)}}%
    }
    
  2. Lorem ipsum \cmpd{foobar_2} dolor.
    

    由于与您不能在普通文本中使用下划线字符相同的原因,此操作会失败,_并给出预期错误:Missing $ inserted.。尝试打印标签文本时会发生这种情况。 \detokenize可以在这里提供帮助:

    \renewcommand*\cmpdshowdef[1]{%
      \marginnote{\fbox{\normalfont\ttfamily\detokenize{#1}}}%
    }
    \renewcommand*\subcmpdshowdef[2]{%
      \marginnote{\fbox{\normalfont\ttfamily\detokenize{#2 (#1)}}}%
    }
    

完整示例:

\documentclass{article}
\usepackage{chemnum,tikz}
\setchemnum{show-keys}

\usepackage{marginnote}
\renewcommand*\cmpdshowdef[1]{%
  \marginnote{\fbox{\normalfont\ttfamily\detokenize{#1}}}%
}
\renewcommand*\subcmpdshowdef[2]{%
  \marginnote{\fbox{\normalfont\ttfamily\detokenize{#2 (#1)}}}%
}


\begin{document}

Lorem ipsum \cmpd{foobar} dolor.

\bigskip

Lorem ipsum \cmpd{foobar} dolor.

\bigskip

\tikz \node[fill=yellow] at (0,0) {Lorem ipsum \cmpd{foobar} dolor.};

\bigskip

\tikz \node[fill=yellow] at (0,0) {Lorem ipsum \cmpd{foobar2} dolor.}; % <- fails

\bigskip

Lorem ipsum \cmpd{foobar_2} dolor. % <- fails 

\end{document}

在此处输入图片描述

相关内容