Chemmacros: 耦合常数 J 的字体

Chemmacros: 耦合常数 J 的字体

这是我几天前提出的一个问题的后续问题(Chemmacros:调整耦合常数 J 的属性

我正在使用字体libertineberamono以及chammacros包来排版实验数据。当我这样做时,我注意到了两件事:

耦合常数J以拉丁现代罗马字体显示。这也适用于频率 - 值和单位。我相信这是因为耦合常数是在数学环境中排版的?

有办法改变这种情况吗?

显然,一个建议是改变数学字体,例如euler vm字体。但是,此字体使用直立字母,我想遵循惯例并有一个斜体耦合常数J

有什么建议可以解决这个问题吗?我想最简单的方法是将 eulervm 字体中的 J 重新定义为斜体,因为其他一切都会自动正常,但是,我不知道该怎么做。当然,如果有一个更通用的解决方案,我会很感激。我是否可以假设使用软件包的标准选项无法做到这一点?

这是一个 MWE,说明了我的问题:

     \documentclass[a4paper,10pt,bibliography=totoc,listof=totoc]{scrreprt}
     \usepackage{chemmacros}
     \usepackage{siunitx}
     \chemsetup[nmr]{delta=(ppm),pos-number=side,use-equal,format = \bfseries,list=true}       
     \sisetup{separate-uncertainty,per-mode=symbol,detect-all,range-phrase=--}
     \usepackage[T1]{fontenc}
     \usepackage[utf8]{inputenc}
     \usepackage{libertine}
     \usepackage[scaled=.83]{beramono}
     \ExplSyntaxOn  %Defining Coupling Constant J with Subscript
     \cs_set_protected:Npn \__chemmacros_nmr_coupling:w (#1;#2)
      {
      \tl_set:Nn \l__chemmacros_nmr_coupling_bonds_tl { #1 \! }
      \tl_set:Nn \l__chemmacros_nmr_coupling_nuclei_tl
      {
      \c_math_subscript_token
       { \chemmacros_chemformula:n { #2 } }
      }
      \__chemmacros_nmr_coupling_aux_i:w
      }
      \ExplSyntaxOff

      \begin{document}

      \begin{experimental}

      \NMR(400)[C6D6] \val{2.01} (d, \J(2;CH)[Hz]{25.0}, \#{24},  \pos{5})

      \end{experimental}


      \end{document}

答案1

耦合常数 J 以拉丁现代罗马字体显示。这也适用于频率 - 值和单位。我相信这是因为耦合常数是在数学环境中排版的?

没错,它是用数学排版的。我相信它应该是,因为它是一个变量。至于数字和单位:它们是在包的帮助下排版的siunitx。在我看来,你需要找到一种合适的数学字体,例如\usepackage[libertine]{newtxmath}

下面的示例选择了一些设置,并对用于排版 NMR 数据不同部分的宏进行了一些改进。它看起来像这样:

在此处输入图片描述

\documentclass[a4paper,10pt,bibliography=totoc,listof=totoc]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{libertine}
\usepackage[scaled=.83]{beramono}

% you can delete this line if you don't use libertine with oldstyle figures:
\expandafter\def\csname libertine@figurestyle\endcsname{LF}
\usepackage[libertine]{newtxmath}
% you can delete this line if you don't use libertine with oldstyle figures:
\expandafter\def\csname libertine@figurestyle\endcsname{OsF}

\usepackage{chemmacros}
\chemsetup[nmr]{
  delta = (ppm) ,
  pos-number = side ,
  use-equal,
  format = \bfseries,
  list=true
}
\usepackage{siunitx}
\sisetup{
  separate-uncertainty ,
  per-mode = symbol ,
  range-phrase = -- ,
  detect-mode = false ,
  detect-weight = true ,
  mode = text ,
  text-rm = \libertineLF % use libertine with lining figures
}

\ExplSyntaxOn
\cs_set_protected:Npn \__chemmacros_nmr_coupling:w (#1;#2)
  {
    \tl_set:Nn \l__chemmacros_nmr_coupling_bonds_tl { #1 \! }
    \tl_set:Nn \l__chemmacros_nmr_coupling_nuclei_tl
      {
        \c_math_subscript_token
          { \chemmacros_chemformula:n { #2 } }
      }
    \__chemmacros_nmr_coupling_aux_i:w
  }
\cs_set_protected:Npn \chemmacros_nmr_number:n #1
  {
    $ #1 $ \, % put the number in math-mode for lining figures
    \chemmacros_atom:V \g__chemmacros_nmr_element_tl
  }
\cs_set:Npn \chemmacros_nmr_position:n #1
  {
    \chemmacros_chemformula:V \g__chemmacros_nmr_element_tl
    \tl_use:N \l__chemmacros_nmr_position_tl
    $ #1 $ % put the number in math-mode for lining figures
  }
\ExplSyntaxOff

\begin{document}

\begin{experimental}
  \NMR(400)[C6D6] \val{2.01} (d, \J(2;CH)[Hz]{25.0}, \#{24}, \pos{5})
\end{experimental}

\end{document}

相关内容