我的 LaTeX 方程式中有重分数。
当一行中出现 2 个或更多连续分数时(即我评估一个产品),它们彼此太接近了。
有没有办法在 LaTeX 数学模式中的分数之间添加额外的空格?
更准确地说,我有以下包含大分数的函数:
\newcommand{\myfrac}[1]{
\dfrac{\int\limits_0^{#1} x^2 \, \mathrm{d}x}{\zeta(#1)}
}
我厌倦了在它们之间添加额外的空格:
$ \myfrac{1} \, \myfrac{2} $
而不是$ \myfrac{1} \myfrac{2} $
。
我想到添加一个不可见的符号\i
(在我的自定义函数的开始和结束处),这样它\i
就会被忽略并\i\i
起到作用\,
。
另一种方法是调整任何分数的间距,但我没有找到与具体对象之间的用户定义空间相关的任何内容。
这是我的代码:
\newcommand{\myfrac}[1]{
\dfrac{\int\limits_0^{#1} x^2 \, \mathrm{d}x}{\zeta(#1)}
}
\begin{document}
Here everything works good:
\begin{equation*}
a = 4 + \myfrac{1} < 5.
\end{equation*}
However, here the space between the fractions is too small:
\begin{equation*}
b = 7 + \myfrac{1} \myfrac{2} < 5,
\end{equation*}
so I have to add an extra space:
\begin{equation*}
b = 7 + \myfrac{1} \; \myfrac{2} < 5.
\end{equation*}
\end{document}
仅添加\,
到自定义函数的末尾似乎不起作用,因为\myfrac{1}
和其他运算符(即=
)之间的空间比预期的要大。
答案1
您可以检查是否有另一个\myfrac
跟随,在本例中,添加\;
。
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\myfrac}[1]{%
\dfrac{\int\limits_0^{#1} x^2 \, \mathrm{d}x}{\zeta(#1)}%
\@ifnextchar\myfrac{\;}{}%
}
\makeatother
\begin{document}
\begin{gather*}
a = 4 + \myfrac{1} < 5.
\\
b = 7 + \myfrac{1} \myfrac{2} < 5.
\end{gather*}
\end{document}
相同之处expl3
:
\documentclass{article}
\usepackage{amsmath}
\ExplSyntaxOn
\NewDocumentCommand{\myfrac}{m}
{
\dfrac{\int\limits\sb{0}\sp{#1} x^2 \, \mathrm{d}x}{\zeta(#1)}
\peek_remove_spaces:n { \peek_meaning:NT \myfrac {\;} }
}
\ExplSyntaxOff
\begin{document}
\begin{gather*}
a = 4 + \myfrac{1} < 5.
\\
b = 7 + \myfrac{1} \myfrac{2} < 5.
\end{gather*}
\end{document}
您可能会考虑使用不同的语法:
\documentclass{article}
\usepackage{amsmath}
\ExplSyntaxOn
\cs_new_protected:Nn \oleg_zetafrac:n
{
\dfrac{\int\limits\sb{0}\sp{#1} x^2 \, \mathrm{d}x}{\zeta(#1)}
}
\cs_generate_variant:Nn \oleg_zetafrac:n { V }
\NewDocumentCommand{\zetafrac}{m}
{
\seq_set_split:Nnn \l_tmpa_seq { ; } { #1 }
\seq_pop_left:NN \l_tmpa_seq \l_tmpa_tl
\oleg_zetafrac:V \l_tmpa_tl
\seq_map_inline:Nn \l_tmpa_seq { \; \oleg_zetafrac:n { ##1 } }
}
\ExplSyntaxOff
\begin{document}
\begin{gather*}
a = 4 + \zetafrac{1} < 5.
\\
b = 7 + \zetafrac{1;2} < 5.
\\
c = 11 + \zetafrac{1;2;3} < 5.
\end{gather*}
\end{document}