XeLaTeX: 支持现代字体 LaTeX 编译器

news/2024/11/15 4:01:37/

XeLaTeX: 支持现代字体 LaTeX 编译器

原  文:XeLaTeX
译  者:Xovee
翻译时间:2023年2月21日

文章目录

  • XeLaTeX: 支持现代字体 LaTeX 编译器
  • 介绍
  • 基础:Times New Roman
  • 为不同的LaTeX模块设置不同的字体
  • Overleaf中的字体
    • 安装在Overleaf服务器中的字体:Google Noto字体
    • 使用Overleaf服务器没有安装的字体:以Google Fonts为例
  • 通过设置`fontspec`来使用字体
  • 内容

介绍

XeTeX是一种基于TeX的排班引擎。与原版的TeX不同,XeTeX原生支持 UTF-8 编码的输入,并且内置了HarfBuzz引擎,支持例如OpenType (OTF)和SIL’s Graphite font technology等现代字体格式。Overleaf中的XeTeX被称为xelatex。如果你想知道更多关于TeX引擎的发展史,可以阅读这篇文章。

基础:Times New Roman

Times New Roman是一个被大规模使用的字体。下面介绍如何在Overleaf中使用XeLaTeX来使用Times New Roman。在这个例子中,我们使用\usemainfont{Times New Roman}来设置文档的字体,而这个命令来自于fontspec包。

\documentclass[12pt]{article}
\usepackage{fontspec}\setmainfont{Times New Roman}
\title{Sample font document}
\author{Overleaf}
\date{\today}\begin{document}
\maketitleThis is an \textit{example} of a document compiled 
with \textbf{XeLaTeX}. LuaLaTeX should also work too.\end{document}

在这里插入图片描述

你还可以使用LuaLaTeX来执行相同的代码!🤣

为不同的LaTeX模块设置不同的字体

在LaTeX文档中,不同的模块有着不同的字体,例如,在一个verbatim环境中,文字的字体是等宽字体。我们可以为不同的模块设置不一样的字体:

\documentclass[12pt]{article}
\usepackage{fontspec}%-----------------------------------------------------------------------
\setromanfont{Times New Roman}
\setsansfont{Arial}
\setmonofont[Color={0019D4}]{Courier New}
%-----------------------------------------------------------------------\title{Sample font document}
\author{Overleaf}
\date{\today}
\begin{document}\maketitleThis an \textit{example} of document compiled with the  
\textbf{XeLaTeX} compiler. If you have to write some code you can 
use the \texttt{verbatim} environment:\begin{verbatim}Usually this environment is used to display code, so here's a simple C program.#include <stdio.h>#define NUMYAYS 10int main(){int i;   for (i = 0; i <= NUMYAYS; i++) {printf("Yay! Overleaf is Awesome!\n");}return 0;}\end{verbatim}{\sffamily This is a sample text in \textbf{Sans Serif Font Typeface}}\end{document}

在这个例子中我们使用了三种不同的字体:

  • \setromanfont{Times New Roman}
    这个命令设置文档中大多数文字所使用的常规字体,例如本例中的Times New Roman
  • \setsansfont{Arial}
    这个命令设置了需要使用sans字体的模块。显式地使用\ssfamily就可以使用Arial字体。
  • setmonofont{Courier New}
    设置了文档中等宽文字所使用的字体。这个命令还有一个可选参数:Color={0019D4},你可以设置文字的颜色(基于hexadecimal HTML格式)。

Overleaf中的字体

Overleaf中安装了非常多的字体,你可以直接通过fontspec使用。下面的例子展示了如何使用Overleaf服务器内置的字体(例如Google Noto,以及从Google Font中获取的字体等)。

安装在Overleaf服务器中的字体:Google Noto字体

Overleaf使用Tex Live,它其中包含了谷歌的Noto字体,所以你可以直接通过XeLaTeX或者LuaLaTeX通过fontspec包来使用它。下面是一个使用了noto包的项目,其中介绍了如何设置文档的Noto字体,包括NotoSerifNotoSans以及NotoSansMono。你可以在这里阅读noto包的文档。

\documentclass{article}
\usepackage{xcolor}
\usepackage{noto}
\usepackage{hyperref}
\title{Using Google Noto fonts}
\author{Overleaf}
\date{April 2021}\begin{document}\maketitle\section{Introduction}
This example project uses the \href{https://ctan.org/pkg/noto?lang=en}{\color{blue}\texttt{noto}} package to typeset your document using Google's Noto fonts\footnote{\url{https://www.google.com/get/noto/}}:
\begin{itemize}
\item \verb|\textbf{bold}| produces \textbf{bold}
\item \verb|\textit{italic}| produces \textit{italic}
\item \verb|\textbf{\textit{bold italic}}| produces \textbf{\textit{bold italic}}
\item \verb|\emph{emphasis}| produces \emph{emphasis}
\item \verb|\textbf{\emph{bold italic}}| produces \textbf{\emph{bold italic}}
\end{itemize}\subsection{Monospaced fonts}
You can use Noto's monospaced fonts for \texttt{regular} and \texttt{\textbf{bold}} monospaced text.\subsection{Sans serif fonts}
Here is some \textsf{text is typeset in a sans serif font} together with \textbf{\textsf{text typeset in bold sans serif}}.\section{Further reading}
Documentation for the \texttt{noto} package can be found in its \href{http://mirrors.ctan.org/fonts/noto/README}{\color{blue}\texttt{readme} file on CTAN}.\end{document}

在这里插入图片描述

使用Overleaf服务器没有安装的字体:以Google Fonts为例

为了使用Overleaf服务器所没有的OpenType字体,你首先必须上传字体的文件到Overleaf的项目中(如果字体的协议允许的话)。上传之后,将项目的编译器设置为XeLaTeX(或者LuaLaTeX)然后使用fontspec来设置字体。

下面的例子介绍了如何创建文件夹,上传字体以及通过fontspec来设置它们。我们将使用Google Fonts中的:

  • Serif字体:Brygada1918(https://fonts.google.com/specimen/Brygada+1918)
  • Sans Serif字体:Asap(https://fonts.google.com/specimen/Asap)
  • 等宽字体:JetBrains Mono(https://fonts.google.com/specimen/JetBrains+Mono)

注意:使用的字体仅仅作为展示如何上传字体、设置字体的一部分,而不是推荐它们为一种美观的字体组合。

对于每种字体,你首先需要从Google Fonts中下载它们:
在这里插入图片描述
注意:有些Google Fonts是“静态Static”OpenType字体,有些是“动态Variable”字体。如果下载的ZIP文件中有一个文件夹为“static”,你应该将其中的字体上传,而不是variable字体:
在这里插入图片描述
下一步,你需要将字体文件上传到你的项目中。你也许想使用多种字体,所以你可能得创建多个文件夹来存储不同类型的字体。下面的视频展示了如何做到这一点。然后,我们需要设置XeLaTeX来找到你所上传的字体。

如何在Overleaf中上传字体

视频地址:
https://videos.ctfassets.net/nrgyaltdicpt/4lQFkZ1Ni1FHFdHJUJSNH4/4aee7c5bafeb021a6f21b4637d0fe6ec/UploadingGoogleFonts.mp4

通过设置fontspec来使用字体

上传字体之后,我们可以使用fontspec来使用它们。在下面的LaTeX代码中,请注意我们如何使用Path参数来告诉fontspec字体文件所在的位置:

\setromanfont{Brygada1918}[Path=./BrygadaFontFiles/,Extension = .ttf,UprightFont=*-Regular,BoldFont=*-Bold,ItalicFont=*-Italic,BoldItalicFont=*-BoldItalic]\setsansfont{Asap}[Path=./AsapFontFiles/,Scale=0.9,Extension = .ttf,UprightFont=*-Regular,BoldFont=*-Bold,ItalicFont=*-Italic,BoldItalicFont=*-BoldItalic]\setmonofont{JetBrainsMono}[Path=./JetbrainsFontFiles/,Scale=0.85,Extension = .ttf,UprightFont=*-Regular,BoldFont=*-Bold,ItalicFont=*-Italic,BoldItalicFont=*-BoldItalic]

在这里插入图片描述
fontspec包提供了许多在XeLaTeX或者LuaLaTeX中设置OpenType字体的方法,你可以阅读它的文档来获取更多的微调字体样式或者设计的方法。

内容

  • LaTeX中的粗体、斜体、下划线
  • LaTeX字体、字号、字体样式
  • 字体
  • LaTeX段落格式
  • LaTeX换行、换页、空白空间
  • LaTeX文字对齐
  • LaTeX多栏文档
  • LaTeX大型项目管理
  • 多文件LaTeX项目
  • LaTeX多语言支持
  • 如何选择LaTeX编译器
  • Overleaf中所安装的OTF和TTF字体
  • 谷歌字体
  • fontspec文档

http://www.ppmy.cn/news/227998.html

相关文章

(22.12.20)matlab2022+yalmip+cplex安装教程,win11 x64

前言 Hi,你好&#xff01;最近刚刚更换新的电脑设备&#xff0c;安装软件时尽量选择最新版本&#xff0c;但也遇到了大大小小的安装问题&#xff0c;这里把踩到的坑一并总结出来&#xff0c;给出一份还算合理的MATLAByalmipCPLEX安装教程&#xff08;win11&#xff09;。 MAT…

(已解决)网卡驱动Intel(R) Wi-Fi 6 AX200 160MHz,设备无法启动(代码10)

电脑由于重装系统后双显示屏无法正常工作&#xff0c;于是卸载了原先驱动&#xff0c;重启后发现无法连接wifi了&#xff0c; win键X打开设备管理器查看网络适配器&#xff0c;发现Intel(R) Wi-Fi 6 AX200 160MHz前有黄标&#xff0c;无法启动&#xff08;现已修复&#xff09…

Numpy---创建多维数组、创建正态分布、创建均匀分布

1. 创建一个随机整数的多维数组 np.random.randint(low, highNone, sizeNone, dtypel) 参数说明: low : 最小值 highNone: 最大值 highNone时&#xff0c;生成的数值在【0, low&#xff09;区间内 如果使用high这个值&#xff0c;则生成的数值在【low, high&#xff09;区…

控制算法工程师的主要职责描述(合集)

控制算法工程师的主要职责描述1 职责 1、负责公司MW级机组的控制策略参数整定&#xff0c;编写外部控制器 2、通过控制算法的优化实现风电机组轻量化设计 3、负责公司先进的风电机组智能控制算法的控制&#xff0c;风电机组的前馈控制&#xff0c;风电机组载荷在线预估&#xf…

【罗技鼠标650L蓝牙删除后怎么重新连接】

按住鼠标下面的圆形按钮3到5秒即可

罗技无线鼠标配对

公司一直使用罗技的无线鼠标&#xff0c;时不时会有同事回报不小心将鼠标丢了&#xff0c;或者鼠标与USB接收器之间不工作&#xff0c;于是可用这个工具进行配对&#xff1a;优联接收器&#xff08;Unifying&#xff09;&#xff0c;下载安装后打开&#xff0c;然后按照提示&am…

【日志】罗技鼠标m590 usb或蓝牙连接不上 无法使用

m590模式为usb连接&#xff0c;插上优联连接器&#xff0c;灯1快速闪烁&#xff0c;无法连接。 解决方法&#xff1a; &#xff08;1&#xff09;首先查看蓝牙设备&#xff0c;看是否识别为罗技优联连接器。否则下载Logitech官网固件更新工具。 &#xff08;2&#xff09;若是…

基于kubesphere的k8s环境部署单点版本的rook-ceph

文章目录 前言一、rook-ceph是什么&#xff1f;二、开始部署1.环境准备2.软件包准备3.下载rook-ceph文件4. 部署operator5.创建ceph集群6.创建工具容器&#xff0c;检查集群状态7.准备dashboard的nodeport端口映射服务8.准备prometheus的metric端口映射服务 总结 前言 基于kub…