数学モードの$のように、textttモードに入る簡単な方法はありますか?

Aug 19 2020

数学変数、たとえばインデックスを参照したい場合はi$i$を書くのではなく、単にドルで囲みます(つまり、)\begin{math}i\end{math}

交換するtextttなど§i§、モードに同様のオプションはあります\texttt{i}か?

回答

27 egreg Aug 19 2020 at 23:04

§同じ最初のバイトを使用する他の文字に影響を与えることなく、区切り文字として使用できます。

\documentclass{article}
\usepackage{newunicodechar}

\newunicodechar{§}{\makeabbreviationtt}
\def\makeabbreviationtt#1§{\texttt{#1}}

\begin{document}

This is §monospaced§. This doesn't affect ©, ¶
and other similar UTF-8 characters.

You can also do §¶§

\end{document}

22 DavidCarlisle Aug 19 2020 at 18:27

基本ディストリビューション\texttt用で\verbはなくshortvrb、省略形を定義できるパッケージが含まれています

\documentclass{article}
\usepackage{shortvrb}
\MakeShortVerb|


\begin{document}
  aaaa |z|  aaa
\end{document}
15 StevenB.Segletes Aug 19 2020 at 18:20
\documentclass{article}
\def§#1§{\texttt{#1}}
\begin{document}
roman §tt text§ back to roman
\end{document}

ただし、Davidがコメントで指摘しているように、§は1バイト文字ではなく、UTF-8拡張(マルチバイト)文字であるため、このアプローチでは、同じプレフィックスで始まるUTF-8文字がすべて消去されます。これらの文字(など©)が使用されている場合、エラーが発生します。

したがって、このタイプのソリューションが必要な場合は、区切り文字を1バイトのASCII文字として選択し、アクティブにすることをお勧めします。

\documentclass{article}
\catcode`|=\active
\def|#1|{\texttt{#1}}
\begin{document}
roman |tt text| back to roman
\end{document}

ここでの欠点は|、通常の入力文字としての使用が失われることです。したがって、あなたは空想を得て、定義にエスケープを組み込むことができます。そうすれば、||一緒に単一|をエコーしてタイプセットすることができます。

\documentclass{article}
\usepackage[T1]{fontenc}
\let\svvert|
\catcode`|=\active
\def|#1|{\ifx\relax#1\relax\expandafter\svvert\else\texttt{#1}\fi}
\begin{document}
roman |tt text| back to roman || or $y =||x||$ and |then back to texttt|.
\end{document}