Existe-t-il un moyen facile d'entrer en mode texttt, comme $ pour le mode mathématique?

Aug 19 2020

Quand je veux faire référence à une variable mathématique, disons un index i, je l'entoure simplement de dollars (c'est-à-dire $i$) par opposition à l'écriture \begin{math}i\end{math}.

Existe-t-il une option similaire pour le textttmode, par exemple §i§à remplacer \texttt{i}?

Réponses

27 egreg Aug 19 2020 at 23:04

Vous pouvez l'utiliser §comme délimiteur sans affecter les autres caractères en utilisant le même premier octet.

\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

Pas pour \textttmais pour \verbla distribution de base inclut un shortvrbpackage qui vous permet de définir un raccourci

\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}

Cependant, comme David le souligne dans les commentaires, comme il §ne s'agit pas d'un caractère à un octet, mais d'un caractère étendu UTF-8 (multi-octets), cette approche effacera tous les caractères UTF-8 commençant par le même préfixe, résultant en une erreur, si ces caractères sont utilisés (tels que ©).

Donc, si vous vouliez ce type de solution, il serait préférable de choisir le délimiteur sous forme de caractère ASCII à un octet et de le rendre actif:

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

L'inconvénient ici est que vous perdez l'utilisation de |comme caractère d'entrée normal. Par conséquent, vous pouvez avoir de la fantaisie et créer un échappement dans la définition, de sorte ||qu'ensemble, un seul écho |soit composé:

\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}