C'è un modo semplice per entrare in modalità texttt, come $ per la modalità matematica?

Aug 19 2020

Quando voglio fare riferimento a una variabile matematica, diciamo un indice i, la circondo semplicemente con dollari (cioè $i$) invece di scrivere \begin{math}i\end{math}.

C'è qualche opzione simile per la textttmodalità, ad esempio §i§, per sostituire \texttt{i}?

Risposte

27 egreg Aug 19 2020 at 23:04

È possibile utilizzare §come delimitatore senza influire sugli altri caratteri utilizzando lo stesso primo 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}

22 DavidCarlisle Aug 19 2020 at 18:27

Non per \textttma per \verbla distribuzione di base include il shortvrbpacchetto che consente di definire una scorciatoia

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

Tuttavia, come David sottolinea nei commenti, poiché §non è un carattere a byte singolo, ma un carattere esteso (multibyte) UTF-8, questo approccio cancellerà tutti i caratteri UTF-8 che iniziano con lo stesso prefisso, risultante in un errore, se vengono utilizzati quei caratteri (come ©).

Quindi, se volessi questo tipo di soluzione sarebbe meglio scegliere il delimitatore come carattere ASCII a byte singolo e renderlo attivo:

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

Lo svantaggio qui è che perdi l'uso di |come un normale carattere di input. Pertanto, potresti essere fantasioso e costruire una via di fuga nella definizione, in modo che ||insieme riecheggino un singolo |da comporre:

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