对于我的论文,我使用 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