저는 종종 수학 모드에서 아래 첨자 환경을 적용하여 예를 들어 재료를 재료 속성 등에 할당합니다. $\eta_{oil}$
그다지 $\lambda_{air}$
수학적이지는 않지만 안녕하세요, 저는 엔지니어입니다 ;-)
나는 amsmath 패키지를 적용하고 있으므로 아래 첨자는 대부분의 다른 문자와 마찬가지로 이탤릭체로 표시됩니다. 나는 그것을 원하지 않습니다. 물론 이를 로컬에서 변경하는 방법은 여러 가지가 있지만( $\eta_{\mathrm{oil}}$
가장 적절하다고 생각됨) 이는 번거로운 작업입니다.
그렇다면 이 문제를 해결할 수 있는 멋지고 매끄러운 TeXy 방법이 있을까요? 아마도 다음과 같은 것을 적용할 수 있을까요 \DeclareMathSomething{}{}{}{}
?
$_{}$
내 사용의 99%가 변수와 관련이 없기 때문에 전역적으로 수행하고 싶습니다 . 그리고 아주 소수의 상황에서 첨자가 변수인 경우에도 여전히 사용할 수 있습니다 $_{\mathnormal{}}$
...
모든 제안에 감사드립니다.
답변1
나는 이것을 위해 다른 문자를 사용하겠습니다. 여기서는 !
수직 첨자를 사용 하고 수학 모드에서 그 자체로 \exclam
필요한지 정의합니다.!
\documentclass{article}
\usepackage{amsmath}
\begingroup\lccode`~=`!
\lowercase{\endgroup\def~}#1{_{\mathrm{#1}}}
\mathchardef\exclam=\mathcode`!
\AtBeginDocument{\mathcode`!=\string"8000 }
\begin{document}
$a_{x}+b!{eff}=n\exclam$
\end{document}
문자에 \mathcode
32768( "8000
16진수이며 이상한 일을 하는 것에 \string
대한 예방 조치 babel
)이 주어지면 특이한 동작을 하게 됩니다. 텍스트 모드에서는 정상적으로 작동하지만 수학 모드에서 발견되면 매크로, 더 정확하게는 활성 문자와 유사해집니다.
활성 문자로 의 정의 !
가 있어야 합니다. 트릭
\begingroup\lccode`~=`!
\lowercase{\endgroup\def~}#1{_{\mathrm{#1}}}
와 같다
{\catcode`!=\active \gdef!#1{_{\mathrm{#1}}}
\gdef
하지만 가능하다면 피하는 것을 선호합니다 . 따라서 TeX가 !
수학 모드에서 찾을 때 인수를 찾아 이를 로 변환합니다 _{\mathrm{<argument>}}
. 이것이 바로 여러분이 추구하는 것입니다.
마지막 으로 재정의하지 않은 경우 수학 모드에서 생성되는 것과 동일한 것을 생성하도록 \mathchardef\exclam=\mathcode`!
정의합니다 .\exclam
!
아래 첨자에 ASCII 문자만 사용할 계획이 없다면 로 변경해야 합니다. 그러면 \mathrm
악센트 \textnormal
가 있는 문자도 허용됩니다(공백도 존중됩니다).
답변2
나는 보통 다음과 같은 것을 사용합니다.
\newcommand{\mstr}[1] {\ensuremath{\mathit{#1}}}
\newcommand{\subs}[2] {#1\mstr{_#2}}
물론 \mathit
로 변경할 수도 있습니다 \mathrm
. 그런 다음 다음과 같이 사용하십시오.
\subs{x}{y}