如何反转化学宏中的原子定位?

如何反转化学宏中的原子定位?

对于我的论文,我使用 chemmacros 包来排版我的分析。不幸的是,我们小组在谈论 H 和 C-NMR 时通常持有不同的立场。目前,在编译以下代码时,我有以下输出:

核磁共振: δ = 123 (H-10) 13C-核磁共振: δ = 123 (碳-10)

我想要的是

核磁共振: δ = 123 (10-H) 13C-核磁共振: δ = 123 (碳-10)

我发现在 4.3 版本中,你可以使用参数 \@firstofone 来定义原子位置,但即使有了这些信息,我也无法实现目标,因为我无法弄清楚这是什么类型的参数。我也尝试了这里提出的解决方案 Chemmacros 实验环境上标

但我还是无法得到想要的输出。提前致谢!

\documentclass{article}

\usepackage{chemmacros}

\chemsetup[nmr]{use-equal,format=\bfseries,pos-number=side}

\DeclareChemNMR\HNMR{1,H}
\DeclareChemNMR\CNMR{13,C}

\chemsetup[nmr]{use-equal,format=\bfseries,pos-number=side}

\begin{document}

\begin{experimental}

  \HNMR \val{123} (\pos{10})    
  \CNMR \val{123} (\pos{10})

\end{experimental}

\end{document}

答案1

为了使其工作,您需要重新定义\chemmacros_nmr_position:n。下面我提出了一个解决方案,检查当前原子核是否为 H,并相应地排版位置。(但它使pos-number选项不再有效。)

\documentclass{article}

\usepackage{chemmacros}

\NewChemNMR\HNMR{1,H}
\NewChemNMR\CNMR{13,C}

\chemsetup[nmr]{use-equal,format=\bfseries,pos-number=side}

\ExplSyntaxOn
\tl_const:Nn \c_danleich_hydrogen_tl {H}
\cs_set_protected:Npn \chemmacros_nmr_position:n #1
  {
    \tl_if_eq:NNTF
      \g__chemmacros_nmr_element_tl
      \c_danleich_hydrogen_tl
      {
        \__chemmacros_nmr_position:n {#1}
        -
        \chemmacros_chemformula:V \g__chemmacros_nmr_element_tl
      }
      {
        \chemmacros_chemformula:V \g__chemmacros_nmr_element_tl
        -
        \__chemmacros_nmr_position:n {#1}
      }
  }
\ExplSyntaxOff

\begin{document}

\begin{experimental}
  \HNMR \val{123} (\pos{10})    
  \CNMR \val{123} (\pos{10})
\end{experimental}

\end{document}

在此处输入图片描述

顺便说一句:如果你总是把括号放在一起,\pos你可以将它们包含在定义中:

\ExplSyntaxOn
\tl_const:Nn \c_danleich_hydrogen_tl {H}
\cs_set_protected:Npn \chemmacros_nmr_position:n #1
  {
    \tl_if_eq:NNTF
      \g__chemmacros_nmr_element_tl
      \c_danleich_hydrogen_tl
      {
        (\__chemmacros_nmr_position:n {#1}
        -
        \chemmacros_chemformula:V \g__chemmacros_nmr_element_tl)
      }
      {
        (\chemmacros_chemformula:V \g__chemmacros_nmr_element_tl
        -
        \__chemmacros_nmr_position:n {#1})
      }
  }
\ExplSyntaxOff

相关内容