luatexja-fontspec 导致 siunitx-exponent 中出现不需要的空间

luatexja-fontspec 导致 siunitx-exponent 中出现不需要的空间

使用LuaLaTeX 包会导致使用选项和luatexja-fontspec使用该包输入的数字/单位的指数中的“减号”和数字之间出现不必要的空格。当我删除这些选项或删除 时,不会发生此问题。sinunitxmode=textdetect-allluatexja-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 补丁。

相关内容