¿Existe una manera fácil de ingresar al modo texttt, como $ para el modo matemático?
Cuando quiero referirme a una variable matemática, digamos algún índice i
, simplemente lo rodeo con dólares (es decir, $i$
) en lugar de escribir \begin{math}i\end{math}
.
¿Existe alguna opción similar para el texttt
modo, por ejemplo §i§
, para reemplazar \texttt{i}
?
Respuestas
Puede usarlo §
como delimitador sin afectar a otros caracteres que usan el mismo primer byte.
\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}

No para \texttt
pero para \verb
la distribución base incluye shortvrb
paquete que le permite definir una abreviatura
\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}

Sin embargo, como David señala en los comentarios, debido a §
que no es un carácter de un solo byte, sino un carácter UTF-8 extendido (multibyte), este enfoque eliminará cualquiera de los caracteres UTF-8 que comiencen con el mismo prefijo, dando como resultado un error, si se utilizan esos caracteres (como ©
).
Por lo tanto, si quisiera este tipo de solución, sería mejor elegir el delimitador como un carácter ASCII de un solo byte y activarlo:
\documentclass{article}
\catcode`|=\active
\def|#1|{\texttt{#1}}
\begin{document}
roman |tt text| back to roman
\end{document}
La desventaja aquí es que pierde el uso de |
como carácter de entrada normal. Por lo tanto, podría hacerse elegante y crear un escape en la definición, de modo que ||
juntos se hagan eco de un solo |
para componerse:
\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}
