새로운 단위 명령을 `\si` 단위의 파생물로 정의

새로운 단위 명령을 `\si` 단위의 파생물로 정의

내 문서에서는 다양한 SI 단위를 사용해야 합니다. 타이핑을 쉽게 하기 위해 일반적으로 새 명령을 \newcommand{\unitmass}{\si{\kilogram}}또는 으로 정의합니다 \newcommand{\unitmomentum}{\si{\kilogram\meter\per\second}}. 그런 다음 2.5\unitmass또는 같은 것을 사용하여 3.4\unitmementum완료할 수 있습니다. 그것은 나에게 많은 타이핑 노력을 덜어줍니다.

필요할 때까지는 별 문제가 없지만 \si[2.5d-15]{\kilogram\meter\per\second}(숫자의 과학적 표기법에 주목하세요) 여전히 전체 내용을 입력해야 합니다. 한 가지 대안은 숫자에 대해서만 수학 표기법을 사용하는 것입니다. $2.5\times 10^{-17}$\unitmomentum$이는 훌륭한 옵션이 아닙니다. 이상적으로 나는 \unitmomentum[2.5d-15]지나가는 것과 같은 것을 원할 것입니다 .

즉, 명령을 훨씬 더 복잡하게 정의해야 하며 수십 개가(빠르게 수백 개에 도달) 있습니다. 그러므로 명령을 받아들이는 선택적 인수의 템플릿을 정의해야 합니다.

나의 첫 번째 접근 방식은

\newcommand{\SimpleSIunit}[2]{%
    \expandafter\newcommand\csname #1\endcsname{\si{#2}}%
}

선택적 인수 없이 만족하면 작동합니다. 다음과 같은 수십 개의 지시문을 발행할 수 \SimpleSIunit{unittorque}{\newton\meter}있으며 기본 요구 사항이 충족됩니다.

그런데 내가 정말 하고 싶은 말은

\newcommand{\SimpleSIunit}[2]{%
    \expandafter\newcommand[1][]\csname #1\endcsname{\si[##1]{#2}}%
}

분명히 좋지 않습니다. 어떤 아이디어가 있습니까? 어떻게 수정합니까?

을 발음한 후에는 \SimpleSIunit{unittorque}{\newton\meter}이 네 줄이 동일한 출력을 생성하기를 원합니다.

2.5\unittorque
\unittorque[2.5]
2.5\si{\newton\meter}
\si[2.5]{\newton\meter}

** 추신:: @daleif의 댓글 후 편집 **

공백은 다른 작업을 수행하기 전에 다음 지시문에 의해 처리됩니다. 패키지를 사용합니다 savesym. 나는 아래 코드가 내 원본 작업인 척하지 않습니다. 그것을 화물 숭배 프로그래밍이라고 부르세요. 하지만 저는 숙제가 필요한 학생은 아닙니다. 이것은 나의 전문적인 작업이며 LaTeX를 도구로 사용합니다.

% spacing of siunits
\newlength{\siunitspace}
\sisetup{number-unit-product = \hspace{\siunitspace}}

% new units -- to act as supplement to SI units package \si{unit}
\input{unitdef-v01-2018} % a seperate file maintains this

\savesymbol{si}
\newcommand{\si}[2][?]{%
    \if\relax#1\relax%
    \hspace{\siunitspace}\origsi{#2}\xspace%
    \else%
    \if?#1\hspace{\siunitspace}\origsi{#2}\xspace\else\SI{#1}{#2}\xspace\fi%
    \fi%
}

답변1

siunitx이러한 유형의 입력을 위해 내장된 기능이 있습니다.

\documentclass{article}
\usepackage{siunitx}
\sisetup{free-standing-units, ,unit-optional-argument, space-before-unit}
\DeclareSIUnit{\unitmomentum}{\kilogram\meter\per\second}
\begin{document}
Some text $3.5\unitmomentum$ and $\unitmomentum[2.5e-3]$.
\end{document}

units-like 구문은 차선책이라고 믿기 때문에 기본 설정이 아닙니다.

관련 정보