π ввод внутри команд siunitx
Я пытаюсь набрать значение μ₀ (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.
Что мне не хватает?
Ответы
Вопрос , почему вы не можете поместить \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}