如何检测电传打字机/打字机模式

如何检测电传打字机/打字机模式

如何检测我是否处于 LaTeX 中的电传打字模式?我正在寻找类似\ifmmode\mathpalette或 的内容\mathchoice

也许这是一个 xy 问题,所以让我给出我原来的背景:我想定义一些在 中运行良好的运算符的版本texttt。例如,我想要一个\vdash在等宽字体中运行良好的版本。在这里,我可以为 tt 模式和正常模式定义单独的版本,但我想要一个根据模式选择使用哪一个的单个命令:

\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{ifthen}
\usepackage{calc}
\newcommand{\aswidthof}[2]{\rlap{#1}\hphantom{#2}}
\makeatletter
\newlength{\aswidthof@w}
\newcommand{\aswidthofc}[2]{%
  \settowidth{\aswidthof@w}{#2}%
  \hspace{\dimexpr\aswidthof@w/2\relax}%
  \ifthenelse{\boolean{mmode}}{\mathclap{#1}}{\clap{#1}}%
  \hspace{\dimexpr\aswidthof@w/2\relax}%
}
\makeatother
\newcommand{\bettervdash}{\aswidthofc{\ensuremath{\vdash}}{\text{|-}}}
\begin{document}
\noindent \texttt{abcdefghijklmnopqrstuvwxyz} \\
\noindent \texttt{a$\vdash$cdefghi$\vdash$klmnopqrstuvwxyz} \\
\noindent \texttt{abcdefghijklmnopqrstuvwxyz} \\
\noindent \texttt{a\bettervdash cdefghi\bettervdash klmnopqrstuvwxyz} \\
\noindent \texttt{abcdefghijklmnopqrstuvwxyz} \\
\noindent $abc\bettervdash def$ \\
\noindent $abc\vdash def$ \\
\end{document}

呈现的文档

我曾经有过的想法:

  1. 我可以尝试解析\the\font,寻找tt
  2. 我可以判断\widthof{i}和是否\widthof{m}相等

有没有更好的方法?如果没有,是否有理由相信其中一种方法会比另一种方法更有效?

相关内容