Есть ли простой способ войти в режим texttt, например $ для математического режима?
Когда я хочу обратиться к математической переменной, например к некоторому индексу i
, я просто окружаю ее долларами (т. Е. $i$
), А не записываю \begin{math}i\end{math}
.
Есть ли аналогичный вариант для texttt
режима, например §i§
, на замену \texttt{i}
?
Ответы
Вы можете использовать §
как разделитель, не затрагивая другие символы, используя тот же первый байт.
\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}

Не для, \texttt
но для \verb
базового дистрибутива включает shortvrb
пакет, который позволяет вам определять сокращение
\documentclass{article}
\usepackage{shortvrb}
\MakeShortVerb|
\begin{document}
aaaa |z| aaa
\end{document}
\documentclass{article}
\def§#1§{\texttt{#1}}
\begin{document}
roman §tt text§ back to roman
\end{document}

Однако, как указывает Дэвид в комментариях, поскольку §
это не однобайтовый символ, а расширенный (многобайтовый) символ UTF-8, этот подход уничтожит любой из символов UTF-8, начинающихся с того же префикса, приводит к ошибке, если используются эти символы (например, ©
).
Итак, если вам нужен этот тип решения, было бы лучше выбрать разделитель как однобайтовый символ ASCII и сделать его активным:
\documentclass{article}
\catcode`|=\active
\def|#1|{\texttt{#1}}
\begin{document}
roman |tt text| back to roman
\end{document}
Обратной стороной здесь является то, что вы теряете возможность использовать его |
как обычный вводимый символ. Таким образом, вы могли бы пофантазировать и встроить в определение escape-последовательность, чтобы ||
вместе |
отображалось одно, которое нужно набрать:
\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}
