如何才能使 mathtt 和 texttt 的字体一致

如何才能使 mathtt 和 texttt 的字体一致

我正在尝试在文本中使用单字体,但似乎单字体在数学和文本环境中的字符映射有所不同。有什么解决办法吗?

\documentclass[fleqn]{article}
\usepackage{fontspec}
\setmonofont[Mapping=tex-text]{Courier New}
\begin{document}

\texttt{Farschad \% + - * \$  ! }

\[
\mathtt{Farschad \% + - * \$ !}
\]

\end{document}

在此处输入图片描述

答案1

\mathtt仅更改数学字母。仅\texttt在数学模式下使用。

\documentclass{article}

\begin{document}

$\texttt{foo-bar!}$

\end{document}

答案2

这可能会或可能不会满足您的所有要求。它需要amsmath获取正确大小的下标和上标,并且您必须自己处理所有间距。

可能有一个适用于此的包,但我不知道。

\documentclass{article}
\usepackage{amsmath}

\begin{document}
Here is some computer code.

\texttt{%
a + b + c = 123$^{\texttt{2}}$ - x$_{\texttt{3}}$
}

That is all.
\end{document}

示例代码的输出

答案3

如果你正在使用,fontspec你也应该使用mathspecunicode-math。如果你使用,那么你可以像这样mathspec设置字体:\mathtt

\documentclass[fleqn]{article}
\usepackage{mathspec}

\setmonofont[Mapping=tex-text]{Courier New}
\setmathtt{Courier New}

\begin{document}

\texttt{Farschad \% + - * \$  ! }

\[
\mathtt{Farschad \% + - * \$ !}
\]

\end{document}

类似地,如果您使用unicode-math,那么:

\documentclass[fleqn]{article}
\usepackage{fontspec}
\usepackage[math-style=TeX]{unicode-math}

\setmonofont[Mapping=tex-text]{Courier New}
\setmathfont{latinmodern-math.otf}
\setmathfont[range=\mathtt->\mathup]{Courier New}

\begin{document}

\texttt{Farschad \% + - * \$  ! }

\[
\mathtt{Farschad \% + - * \$ !}
\]

\end{document}

不可否认,结果并不完美——没有办法改变非字母符号的字体——但这是一个开始。

相关内容