π w poleceniach siunitx

Aug 30 2020

To, co próbuję zrobić, to ustawić wartość μ₀ (4π × 10⁻⁷ SI) z siunitx przy użyciu danych wejściowych Unicode.

Bez Unicode wyglądałoby to tak:

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

I to działa. W oparciu o symbole matematyczne i dane wejściowe unicode-math wewnątrz poleceń siunitx, a także dokumentację siunitx definiującą domyślną wartość input-symbolsto {\pi \dots}, wypróbowałem następujące rozwiązania:

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

Ale to skutkuje: ! Package siunitx Error: Invalid token 'π' in numerical input.

czego mi brakuje?

Odpowiedzi

1 Skillmon Aug 31 2020 at 21:44

Kwestia, dlaczego nie można umieścić \sisetupw \AtBeginDocumentw preambule jest, że źle kotokodu służy. W LuaTeX πnależy do kategorii 11 w preambule, ale wraz z unicode-mathnią będzie kategorii 12 w dokumencie. Więc musisz zmienić catcode przed użyciem \AtBeginDocument( mathrm=symdzięki 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}