为什么要使用 \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 这样做,您就无法混合编码;使用 选项\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 对 latex 的更准确回答,您可能需要查看xelatex,它支持我曾经尝试过的每个 latex 包(甚至更多!)。您只需要更改排版引擎。

以下是用尽可能少的行来实现您想要的代码。

加载新的字体系列很容易:

\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 中用西里尔文书写

相关内容