我个人不喜欢 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}