我的标签如下:
\documentclass{book}
\usepackage{minted}
\usemintedstyle{default}
\usepackage[T1]{fontenc}
\usepackage{FiraMono}
\begin{document}
\begin{minted}[]{python}
with open('data/anna-karenina.txt', encoding='koi8-r') as stream:
# Use stream.readline() to retrieve the next line from a file,
# in this case the 1st one:
line = stream.readline()
print(line)
\end{minted}
\begin{minted}[]{text}
Все счастливые семьи похожи друг на друга, каждая несчастливая семья
несчастлива по-своему.
\end{minted}
\end{document}
输出
但输出应该是
请注意,我正在使用Windows, MikTeX 2.9
并LaTeX -> dvips -> ps2pdf
请指出我的标签中出了什么问题......
答案1
作为Ulrike Fischer 指出,Fira Mono 不支持 T2A 编码。
您可以使用支持西里尔文的 DejaVu Sans Mono。无论如何,pdflatex
如果默认编码是 T1,您就无法(轻易地)混合西里尔文和拉丁文。因此我t2a
为此提供了一个环境。混合是如果当前编码是 T2A,那么这是可能的。
\documentclass{book}
\usepackage[T2A,T1]{fontenc}
\usepackage{minted}
\usemintedstyle{default}
\usepackage{DejaVuSansMono}
\newenvironment{t2a}
{\fontencoding{T2A}\selectfont\ignorespaces}
{\ignorespacesafterend}
\begin{document}
\begin{minted}[]{python}
with open('data/anna-karenina.txt', encoding='koi8-r') as stream:
# Use stream.readline() to retrieve the next line from a file,
# in this case the 1st one:
line = stream.readline()
print(line)
\end{minted}
\begin{t2a}
\begin{minted}[]{text}
Все счастливые семьи похожи друг на друга, каждая несчастливая семья
несчастлива по-своему.
\end{minted}
\end{t2a}
\end{document}
如果您想坚持使用 Fira Mono 学习拉丁语,您仍然可以这样做。
\documentclass{book}
\usepackage[T2A,T1]{fontenc}
\usepackage{minted}
\usemintedstyle{default}
\usepackage{FiraMono}
\DeclareFontFamilySubstitution{T2A}{\ttdefault}{DejaVuSansMono-TLF}
\newenvironment{t2a}
{\fontencoding{T2A}\selectfont\ignorespaces}
{\ignorespacesafterend}
\begin{document}
\begin{t2a}
\begin{minted}[]{python}
with open('data/anna-karenina.txt', encoding='koi8-r') as stream:
# Use stream.readline() to retrieve the next line from a file,
# in this case the 1st one:
line = stream.readline()
print(line)
\end{minted}
\begin{minted}[]{text}
Все счастливые семьи похожи друг на друга, каждая несчастливая семья
несчастлива по-своему.
\end{minted}
\end{t2a}
\end{document}
但是,在这种情况下,您不应在同一minted
环境中混合使用拉丁语和西里尔语。
答案2
您需要加载 T2A 编码,并让西里尔文命令切换到该编码。但 Fira 的 type1 版本不支持 T2A,因此它会退回到 cmr:
LaTeX Font Warning: Font shape `T2A/FiraMono-TOsF/m/n' undefined
(Font) using `T2A/cmr/m/n' instead
\documentclass{book}
\usepackage{minted}
\usemintedstyle{default}
\usepackage[T2A,T1]{fontenc}
\usepackage{FiraMono}
\DeclareTextSymbolDefault{\CYRV}{T2A}
\DeclareTextSymbolDefault{\cyrs}{T2A}
\DeclareTextSymbolDefault{\cyre}{T2A}
\DeclareTextSymbolDefault{\cyrch}{T2A}
\DeclareTextSymbolDefault{\cyra}{T2A}
% and so on...
\begin{document}
\begin{minted}[]{text}
Все сча
\end{minted}
\end{document}