![為什麼 \usepackage[T2A]{fontenc} 接管?](https://rvso.com/image/265773/%E7%82%BA%E4%BB%80%E9%BA%BC%20%5Cusepackage%5BT2A%5D%7Bfontenc%7D%20%E6%8E%A5%E7%AE%A1%EF%BC%9F.png)
我想產生一個非襯線類型的文件。我還想包括西里爾字符。這兩個目標似乎是互相排斥的。當我註解掉時\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
定義可以做到這一點。最後指定的編碼將成為預設編碼。babel
russian
這應該是 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}