我想要的是将命令重新定义为给定整数 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}