為什麼 \usepackage[T2A]{fontenc} 接管?

為什麼 \usepackage[T2A]{fontenc} 接管?

我想產生一個非襯線類型的文件。我還想包括西里爾字符。這兩個目標似乎是互相排斥的。當我註解掉時\usepackage[T2A]{fontenc},文檔很漂亮,只是西里爾字元無法列印。當我包含 時\usepackage[T2A]{fontenc},文檔很漂亮,但它完全是一種serif字體。

下面是 MWE。一些序言可能看起來有點愚蠢,但它都包含在我大學的模板中(請參閱下面的連結)。它實際上會編譯,但只有在一些鼓勵的情況下(參見http://helpdesk.ufl.edu/wp-content/uploads/2012/12/latex_spring_2011.zip)。

從我讀到的內容來看,我思考我需要載入不同的字體系列。但我不確定這是否正確,甚至不確定如何做。

如何獲得同時包含西里爾字母的文檔保留其sans serif字體?

\documentclass{article}
\renewcommand{\rmdefault}{ma1}
\renewcommand{\sfdefault}{phv}
\renewcommand{\familydefault}{\sfdefault}
\usepackage{datetime}
\usepackage{qtree}
\usepackage[T1,T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tipa}
\usepackage{pgfplots}
\usepackage[authoryear]{natbib}
\usepackage{hypernat}
\usepackage[dvipdfm,hyperfootnotes=false]{hyperref}
\hypersetup{colorlinks=true,linkcolor=blue,anchorcolor=blue,citecolor=blue,filecolor=blue,urlcolor=blue,bookmarksnumbered=true,pdfview=FitB} \usepackage{gb4e}
\noautomath
\let\eachwordone=\sffamily
\let\eachwordtwo=\sffamily
\let\eachwordthree=\sffamily

\begin{document}

Todd is a cat. у меня есть машина. я очень харашо.

\end{document}

答案1

TeX 字體只有 256 個槽。如果你不告訴 LaTeX 的話,你就不能混合編碼;由with選項\textcyrillic定義可以做到這一點。最後指定的編碼將成為預設編碼。babelrussian


這應該是 T2A 編碼(西里爾文)中可用的無襯線字體的完整列表:

\documentclass{article}
\usepackage[T2A,T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage[russian,english]{babel}

\renewcommand{\familydefault}{\sfdefault}


\begin{document}

\renewcommand{\sfdefault}{PTSans-TLF}\normalfont
\section{PTSans}

Todd is a cat. \textcyrillic{у меня есть машина. я очень харашо.}


\renewcommand{\sfdefault}{fds}\normalfont
\section{Droid}

Todd is a cat. \textcyrillic{у меня есть машина. я очень харашо.}


\renewcommand{\sfdefault}{fco}\normalfont
\section{Comforta}

Todd is a cat. \textcyrillic{у меня есть машина. я очень харашо.}


\renewcommand{\sfdefault}{fca}\normalfont
\section{Cantarell}

Todd is a cat. \textcyrillic{у меня есть машина. я очень харашо.}


\renewcommand{\sfdefault}{iwona}\normalfont
\section{Iwona}

Todd is a cat. \textcyrillic{у меня есть машина. я очень харашо.}


\renewcommand{\sfdefault}{fos}\normalfont
\section{OpenSans}

Todd is a cat. \textcyrillic{у меня есть машина. я очень харашо.}

\end{document}

當然,聲明應該在序言中給出,這只是為了展示樣本。

在此輸入影像描述

在下面的範例中,我展示了拉丁文本使用 Helvetica(類似 Arial)以及西里爾文俄語文字使用先前的字體之一的結果。做出您的選擇並定義\sfcyrillic所選的系列。

\documentclass{article}
\usepackage[T2A,T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage[russian,english]{babel}

\renewcommand{\sfdefault}{phv}
\renewcommand{\familydefault}{\sfdefault}

\newcommand{\sfcyrillic}{} %%% Add here your preference
\usepackage{xpatch}
\xpatchcmd{\Russian}
  {\selectfont}
  {\fontfamily{\sfcyrillic}\selectfont}
  {}{}
\xshowcmd\Russian


\begin{document}

\renewcommand{\sfcyrillic}{PTSans-TLF}\normalfont
\section{PTSans}

Todd is a cat. \textcyrillic{у меня есть машина. я очень харашо.}


\renewcommand{\sfcyrillic}{fds}\normalfont
\section{Droid}

Todd is a cat. \textcyrillic{у меня есть машина. я очень харашо.}


\renewcommand{\sfcyrillic}{fco}\normalfont
\section{Comforta}

Todd is a cat. \textcyrillic{у меня есть машина. я очень харашо.}


\renewcommand{\sfcyrillic}{fca}\normalfont
\section{Cantarell}

Todd is a cat. \textcyrillic{у меня есть машина. я очень харашо.}


\renewcommand{\sfcyrillic}{iwona}\normalfont
\section{Iwona}

Todd is a cat. \textcyrillic{у меня есть машина. я очень харашо.}


\renewcommand{\sfcyrillic}{fos}\normalfont
\section{OpenSans}

Todd is a cat. \textcyrillic{у меня есть машина. я очень харашо.}

\end{document}

在此輸入影像描述

答案2

為了補充egreg對乳膠的更準確的答案,您可能需要研究一下xelatex,它支持我曾經嘗試過的乳膠中的每個包(以及更多!)。您只需要更改您的排版引擎。

這是用盡可能少的行實現您想要的程式碼。

載入新的字體系列很簡單:

\setmainfont{系統字型名稱}

我(不情願地)為本範例選擇了 Arial,但任何同時包含西里爾字符和拉丁字符的字體就足夠了。

根據 EGREG 的評論更新了程式碼以包括 POLYGLOSSIA

\documentclass[12pt]{article}
\usepackage{fontspec}
\usepackage{polyglossia} %% added for proper hyphening
\setmainfont{Arial}
\begin{document}

Todd is a cat. у меня есть машина. я очень харашо.

\end{document}

無襯線西里爾字母排版

還請查看我可以使用什麼字體在 LaTeX 中書寫西里爾字母

相關內容