使用LuaLaTeX 包会导致使用选项和luatexja-fontspec
使用该包输入的数字/单位的指数中的“减号”和数字之间出现不必要的空格。当我删除这些选项或删除 时,不会发生此问题。sinunitx
mode=text
detect-all
luatexja-fontspec
\documentclass{scrbook}
\usepackage{fontspec}
\usepackage{luatexja-fontspec}
\usepackage[
mode=text,
detect-all,
]{siunitx}
\begin{document}
\SI{2.5e-10}{mol.L^{-1}}
\end{document}
有人有办法去掉这个不必要的空格吗?还是我必须切换到另一个用于亚洲字符的包?(我需要一个可以自动识别亚洲字符而无需在环境或命令中输入它们的包。而且我肯定需要有siunitx
正确的输出。)
答案1
使用 luatexja,siunitx 在此处使用的减号是所谓的,JAchar
并被替换为 lua 代码。您可以全局更改此状态 - 这也会影响 siunitx 之外的文本,或者注入一个,\ltjalchar
以便将其视为ALchar
。
\documentclass[parskip=true]{scrbook}
\usepackage{luatexja-fontspec}
\usepackage[mode=text,detect-all]{siunitx}
\begin{document}
\SI{2.5e-10}{mol.L^{-1}} \\
\char8722 10
%general change
\ltjdefcharrange{1}{"2212}
\SI{2.5e-10}{mol.L^{-1}} \\
\char8722 10
%back to default
\ltjdefcharrange{3}{"2212}
\SI{2.5e-10}{mol.L^{-1}} \\
\char8722 10
\ExplSyntaxOn
%local solution, put inside \AtBeginDocument in the preamble
\tl_set:Nn \c__siunitx_minus_tl {\ltjalchar`\^^^^2212}
\ExplSyntaxOff
\SI{2.5e-10}{mol.L^{-1}} \\
\char8722 10
\end{document}
您还可以为 luatexja 提出功能请求。他们可以添加 siunitx 补丁。