![减号和数字之间的空格很窄](https://linux22.com/image/339576/%E5%87%8F%E5%8F%B7%E5%92%8C%E6%95%B0%E5%AD%97%E4%B9%8B%E9%97%B4%E7%9A%84%E7%A9%BA%E6%A0%BC%E5%BE%88%E7%AA%84.png)
我喜欢包bitstream-charter
中的字体mathdesign
- 但有一个小例外:在我看来,减号和负数之间的空间看起来太狭窄了。
我猜从排版角度来看,乱改字体可能是一个非常糟糕的主意,但我的问题是:是否有可能增加一点空间?或者从另一种字体中偷取一个减号?或者以某种方式影响字距(但不是在“1+1”之类的情况下)?
一般要求:
- 它必须与
pdflatex
- 适用于
siunitx
- 尤其是按小数点对齐列必须有效
我已经尝试过用括号括起负数(基于https://tex.stackexchange.com/a/152323/36296),但是这会破坏列的对齐。
平均能量损失
以下 MWE 夸大了缩短和额外的空间,以清楚地看到差异。
\documentclass{article}
\usepackage{siunitx}
\usepackage[bitstream-charter]{mathdesign}
\usepackage{graphicx}
\begin{document}
math mode $\num{-42}$: \qquad I would like a bit of space, as in $42 - 42$
\bigskip
text mode \num{-42}: \qquad ~Again I would like a bit of space and ideally a smaller minus sign to look like \scalebox{0.75}[1.0]{$-$}\thinspace42
\bigskip
Bonus: aligning columns at the decimal sign should still work
\begin{tabular}{S[table-format=1.2,round-mode=places,round-precision=2]}
0.890888\\
-0.505642\\
\end{tabular}
\bigskip
Messing with the negative bracket breaks the alignment
\begin{tabular}{S[%
table-format=1.2,
round-mode=places,
round-precision=2,
bracket-negative-numbers,
open-bracket={-\thinspace},
close-bracket={}
]}
0.890888\\
-0.505642\\
\end{tabular}
\end{document}
答案1
感谢约瑟夫·赖特通过重新定义文内的减号符号可以解决这个问题siunitx
:
\cs_undefine:N \c__siunitx_minus_tl
\tl_const:Nn \c__siunitx_minus_tl {\scalebox{0.75}[1.0]{$-$}\thinspace}
若要强制使用此符号,siunitx
必须使用的文本模式
\sisetup{mode = text}
梅威瑟:
\documentclass{article}
\usepackage{siunitx}
\usepackage[bitstream-charter]{mathdesign}
\usepackage{graphicx}
\sisetup{mode = text}
\ExplSyntaxOn
\cs_undefine:N \c__siunitx_minus_tl
\tl_const:Nn \c__siunitx_minus_tl {\scalebox{0.75}[1.0]{$-$}\thinspace}
\ExplSyntaxOff
\begin{document}
math mode $\num{-42}$
text mode \num{-42}
\bigskip
Bonus: aligning columns at the decimal sign should still works
\begin{tabular}{S[table-format=1.2,round-mode=places,round-precision=2]}
0.890888\\
-0.505642\\
\end{tabular}
\end{document}