在 LaTeX 级别将 tt italic 替换为 tt slanted?

在 LaTeX 级别将 tt italic 替换为 tt slanted?

我个人不喜欢 CM 打字机斜体设计。(对不起,DEK :)。它本身还不错,但我觉得它太花哨了。)对于 TUGboat,我总是想用打字机倾斜来代替它。

我的问题是,有没有办法在 LaTeX 级别进行如此根本的替换?(我不想为 TUGboat 分发不同的 .fd 文件。这对作者来说太容易出错了,而且通常会让人发疯。:)

简单的例子:

\documentclass{article}
\begin{document}
\textit{\texttt{Italic typewriter that I want to be slanted.}}
\end{document}

对于这种小情况,在 TeX 源代码中用 \textsl 替换 \textit 显然没有问题。但在实践中,很多时候事情并不那么简单,因为 \textit、\emph 或其他任何东西都隐藏在宏中,这是运行 BibTeX 或其他子程序的结果,等等。

许多软件包(例如 listings)都有自己的配置方法,这些方法已经足够了。我只是想知道是否有办法在全球范围内做到这一点。这将节省我很多时间和精力。——谢谢,karl。

答案1

哦,egreg 有点快,但我的更具可读性:-)

\documentclass{article}


\makeatletter

%\usepackage[T1]{fontenc}% or OT1 or TU...
%FMi {\ttfamily}% force fd to load 
\LoadFontDefinitionFile{\f@encoding}{cmtt}% force fd to load 
\DeclareFontShape{\f@encoding}{cmtt}{m}{it}
  {<->ssub*cmtt/m/sl}{}

\makeatother
\begin{document}
\textit{\texttt{Italic typewriter that I want to be slanted.}}
\end{document}

答案2

确保您加载字体描述文件,然后更改相关定义。

\documentclass{article}
%\usepackage[T1]{fontenc}

% Load <enc>cmtt.fd
\LoadFontDefinitionFile{\encodingdefault}{cmtt}
% replace it with sl
\ExpandArgs{c}\def{\encodingdefault/cmtt/m/it}{<->ssub*cmtt/m/sl}

\begin{document}

\texttt{\textit{test italic=slanted}}

\texttt{test upright}

\end{document}

在此处输入图片描述

相关内容