大于点的逗号小数分隔符

大于点的逗号小数分隔符
\documentclass{mwrep}
\usepackage{amsmath}
\begin{document}
Check:\\
with "," $0,125$\\
with "." $0.125$

with commas:
\begin{equation}
P=
\begin{bmatrix} 0,1 & 0,3 & 0,0 & 0,6 \\
                0,2 & 0,4 & 0,1 & 0,3 \\
                0,0 & 0,8 & 0,0 & 0,2 \\
                0,2 & 0,0 & 0,2 & 0,6
\end{bmatrix}
\end{equation}

with dots:
\begin{equation}
P=
\begin{bmatrix} 0.1 & 0.3 & 0.0 & 0.6 \\
                0.2 & 0.4 & 0.1 & 0.3 \\
                0.0 & 0.8 & 0.0 & 0.2 \\
                0.2 & 0.0 & 0.2 & 0.6
\end{bmatrix}
\end{equation}

\end{document}

如您所见,以逗号作为小数分隔符的数字比以点作为小数分隔符的数字更宽。如何将逗号后的空格改为与点后的空格相同?

答案1

你需要一个intelligent comma类似的包伊科马或者ncccomma

您还可以改编以下代码:克劳迪奥·贝卡利文章于PracTEX 期刊,2011 年,第 1 期

添加

\usepackage{icomma}

或者

\usepackage{ncccomma}

你的序言。

如果您没有安装任何这些软件包,您可以将 Claudio Beccari 的代码添加到您的序言中(我已删除注释并将其添加\makeatother为最后一行):

\makeatletter
\DeclareMathSymbol{\punctcomma}{\mathpunct}{letters}{"3B}
\DeclareMathSymbol{\decimalcomma}{\mathord}{letters}{"3B}
\AtBeginDocument{\mathcode‘\,="8000}
{\catcode‘\,=\active \gdef,{\futurelet\let@token\m@thcomma}}
\def\m@thcomma{\let\@tempB\punctcomma
\@tfor\@tempA:=0123456789\do{%
    \expandafter\ifx\@tempA\let@token\let\@tempB\decimalcomma
    \@break@tfor\fi}\@tempB}
\makeatother

希望这会有所帮助。

答案2

我不知道上述智能包中究竟隐藏着什么智能,但我猜测可以用以下四行代码来实现:

\def\mathcomma{\futurelet\next\mathcommaA}
\def\mathcommaA{\mathchar`, \expandafter\ifx\space\next\,\fi}
{\catcode`,=13 \global\let,=\mathcomma}
\mathcode`,="8000

without space after comma: $1,234$ with spaces: $1, 2, 3$.

\bye

相关内容