使用细间距进行乘法微调 \,

使用细间距进行乘法微调 \,

我想要的是将命令重新定义为给定整数 N 的\,版本\,[N]

\, % standard usage
\,[2] % the same as \,\,
\,[3] % the same as \,\,\,

等等

代替上面的用法\hspace不太舒服

答案1

手动间距过大通常表示出现了问题;非常稀有需要更改数学模式下的自动间距,并且\hspace是文本模式下的正确工具。TeX 有数学间距的内部规则,这些规则是从数十年(甚至数百年)的经验中提炼出来的;你呢?

这就是说,您可以\,根据需要轻松地重新定义,但请记住,您的输出很可能会在印​​刷上存在争议。

完整示例:

\documentclass{article}

\renewcommand{\,}[1][1]{%
  \ifmmode
    \mskip #1\thinmuskip
  \else
    \thinspace[#1]%
  \fi
}
\renewcommand{\thinspace}[1][1]{%
  \kern#1\dimexpr0.16667em\relax
}

\begin{document}

$a\,b$---a\,b

$a\,[1]b$---a\,[1]b

$a\,[1.5]b$---a\,[1.5]b

$a\,[2]b$---a\,[2]b

$a\,[2.5]b$---a\,[2.5]b

$a\,[3]b$---a\,[3]b

\end{document}

在此处输入图片描述

当然,在内核中,\newcommand以下情况会出现问题:

A\, [p,q]

(但我问的是为什么这里要手动设置间距)。这可以通过使用以下方法进行重新定义来解决xparse

\usepackage{xparse}

\RenewDocumentCommand{\,}{O{1}}{%
  \ifmmode
    \mskip #1\thinmuskip
  \else
    \thinspace[#1]%
  \fi
}
\RenewDocumentCommand{\thinspace}{O{1}}{%
  \kern#1\dimexpr0.16667em\relax
}

如果后面有括号(不是可选参数),请记得留一个空格。

答案2

如果目标是微调数学原子和分子的水平位置,为什么坚持使用\thinspace作为基本单位?在数学模式下,薄空间等于3mu,其中18 mu = 1 em。您可能需要比更精细的控制3mu。为了最终控制位置,请使用诸如\mkern3.8mu和之类的语句\mkern12.9mu。当然,人们会发现\,\,\,与相同\mkern9mu。(您可能已经猜到这\mkern是“数学字距”的缩写。)

答案3

TexBook 的定义\,是:\def\,{\mskip\thinmuskip}

您可以执行以下操作:

\documentclass[a4paper]{article}

\usepackage{amsmath}

\newcommand\myThinspace[1]{\mskip #1\thinmuskip}

\begin{document}

\begin{align}
    AB                  \\
    A\,B                \\
    A\myThinspace{20} B
\end{align}  

\end{document}

例子

相关内容