我想制作一个无衬线字体的文档。我还想包含西里尔字符。这两个目标似乎是互相排斥的。当我注释掉时\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
定义的编码会执行此操作。最后指定的编码将成为默认编码。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 对 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}