在数学模式中写入 , 而不是 .

在数学模式中写入 , 而不是 .

在我的语言中,数字中通常用逗号代替点(例如 12,34 而不是 12.34)。但是,如果我写“,” ,它会自动在逗号后插入空格。为了解决这个问题,我必须改写“{,}”。是否有可能以某种方式让 latex 在数学模式下写“,” 而不是“。”?感谢您的所有建议。

答案1

是否有可能以某种方式说服 Latex 在数学模式下写“,”而不是“。”?

是的,可以说服 LaTeX打印逗号两边没有空格,而你带有通常的点。例如,2.718将以正确的间距打印 2,718。如果您想要通常的逗号(后面有一个空格),则需要写一个逗号而不是点,例如,(x,y) \in \mathbb{R}^2将打印类似 (1, 2) ∈ ℝ² 的内容。

你只需要@wipet 说的那行

\mathcode`\.=`\,

我原来的答案是这个,它更大

\mathcode`\.="8000
\begingroup
\catcode`\.=\active
\gdef.{\mathord{,}}
\endgroup

这定义.为“数学活动”,因此在数学模式中,LaTeX 将查看其活动定义并使用它。因此,我将其定义.\mathord{,}您想要的,没有空格。当然,正如我之前所说,您需要点,它将以正确间距的逗号形式打印在 .pdf 中。

答案2

您有两个完善的选择:

  • 加载希尼奇带有选项的包output-decimal-marker={,},然后写入。如果指定了包的列类型,则将视为小数点标记的\num{123,456}选项将延续到表中排版的数字。,S

    \documentclass{article}
    \usepackage[output-decimal-marker={,}]{siunitx}  
    \begin{document}
    \num{123,456}
    \end{document}
    

    说明\num以文本形式工作数学模式。该包中可以排版数字(和单位,如\SI{9,81}{\newton\per\second\squared})的其他命令在两种模式下都可以使用。

    您没有提到您的语言,但如果是德语,您也可以使用siunitx选项加载该包locale=DE。这样做会自动调用规则将小数点标记排版为逗号。截至 2014 年 9 月,该包提供五种语言/地区本地化:DE、FR、UK、US 和 ZA(南非)。如果您愿意提供信息来创建新的本地化(例如 CZ),我相信该siunitx包的维护者会很高兴收到您的来信。

  • 回到表格中排版数字的主题,你也可以使用封装并定义您自己的列类型,例如d,如下:

    \newcolumntype{d}[1]{,,{#1}}
    

    然后,在tabulararray环境中,使用列规范,例如,d{2.5}告知 LaTeX,该列中的数字在小数点标记前最多可以有 2 位数字,在小数点标记后最多可以有 5 位数字,这已设置为逗号

答案3

好吧,如果你只想隐藏空格,你可以写$12{,}34$。如果我觉得这siunitx有点过头了,我通常会这么做(我是一名数学家,我很少使用单位,但我会使用浮点数)。

相关内容