我一直-16
在我的 LaTeX 代码中使用它来写负数。
但问题在于,在许多显示器和 LaTeX 渲染工具包中,它将符号显示得-
非常长,并且与所有其他数学符号(例如16
)分开。
因为我知道 LaTeX 是一种极其彻底、强大且复杂的语言,所以我认为一定有办法解决这个有点烦人的问题。
我真的不希望我的用户看到一英里长的负号。
有办法吗?
例子:
答案1
我不喜欢在数学模式下在文本中输入数字。如果你使用完整的字体,那就没问题,但如果你决定稍后更改数学字体怎么办?我更喜欢使用软件包textminus
中的textcomp
。如果你的编辑器支持 unicode,你可以直接输入正确的减号。
编辑: siunitx
也能够正确处理数字。
编辑2:再回答一下这个问题,在印刷上,“减号”和“负号”之间没有区别。区别在于字距:正$-12$
号靠近数字,而$10-12$
负号在数字之间有适当的字距。简而言之,不需要为负数调整减号的大小,因为好的字体应该有一个减号,这样它的长度才能与文本很好地融合在一起。
\documentclass{scrartcl}
\usepackage{textcomp}
\usepackage{mathpazo}
\usepackage{eulervm}
\usepackage[utf8]{inputenc}
\DeclareUnicodeCharacter{2212}{\textminus}% requires a unicode capable editor
\usepackage{siunitx}
\sisetup{
detect-mode,
detect-family,
detect-inline-family=math,
}
\begin{document}
\noindent
Number \textminus10 (textcomp minus)\\
Number −10 (unicode minus)\\% requires a unicode capable editor
Number -10 (normal text minus)\\
Number $-10$ (all math mode)\\
\vspace{1ex}
\noindent
Number \num{-16} (siunitx textmode. No bug, my bad. Sorry Joseph)\\
Number $\num{-16}$ (siunitx mathmode)
\end{document}
答案2
大卫的
像 (3) 中那样使用连字符实在是太糟糕了,完全是错误的。
让我思考,我想一个不错的选择(如果你不喜欢默认长度)是定义\minus
这样的命令:
\documentclass{article}
\usepackage{graphicx}
\newcommand{\minus}{\scalebox{0.75}[1.0]{$-$}}
\begin{document}
$\minus 16$
$-16$
\end{document}
其中 0.75 是框的水平缩放比例。
答案3
如果您使用该siunitx
包,它会关心正确的符号和字体:
\documentclass[parskip]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{tgschola}
\usepackage{siunitx}
\sisetup{
detect-family,
detect-inline-family=math,
}
\begin{document}
Textmode: \num{-16}
Mathmode: $\num{-16}$
\sffamily
Textmode: \num{-16}
Mathmode: $\num{-16}$
\ttfamily
Textmode: \num{-16}
Mathmode: $\num{-16}$
\end{document}
答案4
请看以下内容:
\documentclass{article}
\usepackage{times}
\begin{document}
\begin{tabular}{rrrr}
-16&--16&-$16$&$-16$\\
+16&+16&+$16$&$+16$
\end{tabular}
\end{document}
文本字体(此处为 Times)中的连字符 - 与 + 不匹配,但 -- 与 + 匹配。另一方面,数学模式下的减号和加号相互匹配。此外,人们可能希望减号和加号在粗细上与数字匹配。因此,要么在文本模式下执行所有操作(并使用 --),要么在数学模式下执行所有操作(如果您能找到稀有的数学字体,也许可以使用具有较短减号和加号的数学字体……)