这是我几天前提出的一个问题的后续问题(Chemmacros:调整耦合常数 J 的属性)
我正在使用字体libertine
和beramono
以及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}