我在我的论文中使用了很多数字,并且我使用cfr-lm
包使它们变成旧式而不是衬里式,这样它们就不会那么分散注意力 - 否则看起来我到处都有随机的大写单词。
我正在使用该siunitx
包排版论文中的所有单位。但是,siunitx 包读取这些数字时,就好像它们应该处于数学模式一样,即排列数字。当它位于具有 S 列类型的表中时,这非常有用,因为它使所有数字排列成列,我想要这个。但这意味着使用的任何数字的\SI
格式都与没有单位的数字不同,这是我不想要的。我希望这些数字是旧式的。
我如何告诉 siunitx 对具有 S 列类型的表使用一种类型的数字,对\SI
(或一般不是该类型的列的所有内容)使用一种类型的数字?我想我已经尝试了所有检测选项的组合,但我可能错过了一个。
MWE 显示问题:
\documentclass{article}
%kpfonts is needed for something not relavent to the question
%Removing it changes the spacing in the detect-all=false siunitx line
\usepackage{kpfonts}
\DeclareSymbolFontAlphabet{\mathrm}{operators}
\usepackage{cfr-lm}
\usepackage{siunitx}
\begin{document}
\sisetup{detect-all=false}
\textbackslash sisetup{detect-all=false}
\noindent 1234567890 Text \\
\(1234567890\) Math \\
\SI{1234567890}{\angstrom} siunitx
\begin{tabular}{Sl}
1.234(5678) & 12345678901234567890\\
1.111(1111) & 11111111111111111111 \\
\end{tabular}
\vspace{1 cm}
\sisetup{detect-all=true}
\textbackslash sisetup{detect-all=true}
\noindent 1234567890 Text \\
\(1234567890\) Math \\
\SI{1234567890}{\angstrom} siunitx
\begin{tabular}{Sl}
1.234(5678) & 12345678901234567890\\
1.111(1111) & 11111111111111111111 \\
\end{tabular}
\end{document}
(kpfonts
并且该命令不会siunitx
在左键处断开,因为删除它会改变命令内数字的间距\SI
,所以我想知道它是否与问题有关。即使不是,我也需要解决方案才能使用它。)
答案1
我认为您需要做的就是将mode=text
其指定为可选参数\SI
。例如,
\SI[mode=text]{1234567890}{\meter}
如果在文本模式下使用\num
宏 --则也是一样。\num[mode=text]{12345}
附录为了解决 OP 的后续评论:如果必须明确指定和指令[mode=text]
的可选参数是一种负担,我建议您加载\SI
\num
letltxmacro打包并在序言中发出下列指令。
\LetLtxMacro\origSI\SI
\renewcommand\SI[3][mode=text]{\origSI[#1]{#2}{#3}}
\LetLtxMacro\orignum\num
\renewcommand\num[2][mode=text]{\orignum[#1]{#2}}
这样,\SI
将默认\num
设置该选项。如果出于某种原因,您mode=text
不是希望设置此选项并使用\SI
和的原始定义,您可以通过运行和或明确指定一个空的第一个参数来\num
实现,例如和。\origSI
\orignum
\SI[]{...}{...}
\num[]{...}
\documentclass{article}
\usepackage{kpfonts} % are you sure you need this?
\usepackage[T1]{fontenc}
\DeclareSymbolFontAlphabet{\mathrm}{operators}
\usepackage{cfr-lm}
\usepackage{siunitx}
\usepackage{letltxmacro}
%% redefine \SI and \num -- carefully
\LetLtxMacro\origSI\SI
\renewcommand\SI[3][mode=text]{\origSI[#1]{#2}{#3}}
\LetLtxMacro\orignum\num
\renewcommand\num[2][mode=text]{\orignum[#1]{#2}}
\begin{document}
\begin{tabular}{@{} l l @{}}
1234567890 & Text \\
\(1234567890\) & Math \\
\SI{1234567890}{\meter} & \verb+\SI+ \\
\num{1234567} & \verb+\num+ \\
\origSI{1234567890}{\meter} & \verb+\origSI+ \\
\orignum{1234567} & \verb+\orignum+ \\
\end{tabular}
\medskip
\begin{tabular}{@{} S[table-format=1.3] l @{}}
\verb+S+ & \verb+l+\\
\hline
1.234 & 1234567890 \\
1.111 & 1111111111 \\
\end{tabular}
\end{document}