Apakah ada cara mudah untuk masuk ke mode texttt, seperti $ untuk mode matematika?

Aug 19 2020

Ketika saya ingin merujuk ke variabel matematika, katakan beberapa indeks i, saya hanya melingkupinya dengan dolar (yaitu, $i$) sebagai lawan menulis \begin{math}i\end{math}.

Apakah ada opsi serupa untuk textttmode, misalnya §i§, untuk mengganti \texttt{i}?

Jawaban

27 egreg Aug 19 2020 at 23:04

Anda dapat menggunakan §sebagai pembatas tanpa mempengaruhi karakter lain menggunakan byte pertama yang sama.

\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

Bukan untuk \texttttetapi untuk \verbdistribusi dasar termasuk shortvrbpaket yang memungkinkan Anda untuk menentukan singkatan

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

Namun, seperti yang ditunjukkan David di komentar, karena §bukan karakter byte tunggal, tetapi karakter UTF-8 diperpanjang (multi-byte), pendekatan ini akan menghapus salah satu karakter UTF-8 yang dimulai dengan awalan yang sama, mengakibatkan kesalahan, jika karakter tersebut digunakan (seperti ©).

Jadi, jika Anda menginginkan jenis solusi ini, akan lebih baik memilih pembatas sebagai karakter ASCII byte tunggal dan membuatnya aktif:

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

Sisi negatifnya di sini adalah Anda kehilangan penggunaan |sebagai karakter input normal. Oleh karena itu, Anda bisa menjadi mewah dan membangun pelarian ke dalam definisi, sehingga ||bersama - sama akan menggemakan satu |untuk menjadi set huruf:

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