내 문서에서는 다양한 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 구문은 차선책이라고 믿기 때문에 기본 설정이 아닙니다.