バベルのロシアオプションはインコンソラータを破る

バベルのロシアオプションはインコンソラータを破る

わかりました:

\documentclass[14pt]{extarticle}

\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{zi4}

\begin{document}
\Huge \texttt{I need only latin here} % I see Inconsolata here
\end{document}

よくない:

\documentclass[14pt]{extarticle}

\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{zi4}

\begin{document}
\Huge \texttt{I need only latin here}
\end{document}

後者は、Babel オプションのみが異なりrussian、奇妙な結果(明るいバージョンの CM フォント)が生成されます。

これを修正する方法について何か提案はありますか? (つまり、Inconsolata とrussianbabel のオプションの両方を使用します。)

PS: TeX Live 2015 を使用しています。

答え1

このrussianオプションが有効な場合、出力フォントエンコーディングはT2Aに設定され、Inconsolataではこのエンコーディングはサポートされず、LaTeXはフォールバックフォントを使用します。

LaTeX Font Warning: Font shape `T2A/zi4/m/n' undefined
(Font)              using `T2A/cmr/m/n' instead on input line 8.

等幅フォントのラテン文字のみが必要な場合は、新しいコマンドを定義するのが最適です。

\documentclass[14pt]{extarticle}
\usepackage[OT1,T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{zi4}

\newcommand{\latinttfamily}{\fontencoding{OT1}\ttfamily}
\DeclareTextFontCommand{\ltexttt}{\latinttfamily}

\begin{document}
\Huge Спасибо \ltexttt{abc}
\end{document}

を再定義することもできます\texttt

ここに画像の説明を入力してください

関連情報