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

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

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

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

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

И это действительно работает. На основеМатематические символы и ввод unicode-math внутри команд siunitxа также документацию siunitx, определяющую значение по умолчанию для input-symbols, {\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

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

\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}

Связанный контент