π ввод внутри команд siunitx

Aug 30 2020

Я пытаюсь набрать значение μ₀ (4π × 10⁻⁷ SI) с помощью siunitx с использованием ввода Unicode.

Без юникода это выглядело бы так:

\documentclass{standalone}
\usepackage{siunitx}
\begin{document}
    \SI{4 \pi e-7}{SI}
\end{document}

И это действительно работает. На основе символов Maths и ввода unicode-math внутри команд siunitx, а также документации siunitx, определяющей значение по умолчанию input-symbolsto {\pi \dots}, я пробовал следующее:

\documentclass{standalone}
\usepackage[input-symbols = {π}]{siunitx}
\usepackage{unicode-math}
\begin{document}
    \SI{4πe-7}{SI}
\end{document}

Но это приводит к: ! Package siunitx Error: Invalid token 'π' in numerical input.

Что мне не хватает?

Ответы

1 Skillmon Aug 31 2020 at 21:44

Вопрос , почему вы не можете поместить \sisetupв \AtBeginDocumentвашей преамбулы, который используется неправильно catcode. В LuaTeX πэто категория 11 в преамбуле, но вместе с unicode-mathтем будет категория 12 в документе. Таким образом, вам нужно изменить код cat перед использованием \AtBeginDocument( mathrm=symспасибо Ульрике):

\documentclass{standalone}
\usepackage{siunitx}
\usepackage[mathrm=sym]{unicode-math}
\begingroup
\catcode`\π=12
\AtBeginDocument{\sisetup{input-symbols=π}}
\endgroup
\begin{document}
    \SI{4πe-7}{SI}
\end{document}