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

article/2025/10/25 3:54:42

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://chatgpt.dhexx.cn/article/H36J2KuF.shtml

相关文章

java中如何做展示 IP 属地的功能(至尊典藏版)

目录 前言 1、HttpServletRequest 获取 IP 2、Ip2region 3、99.9%准确率 4、多查询客户端的支持 5、Ip2region V2.0 特性 6、ip2region xdb java 查询客户端实现 7、IDEA中做个测试 8、编译测试程序 9、查询测试 10、bench 测试 前言 细心的朋友应该会发现&#xff…

【获取IP归属地】Java如何实现通过IP获取IP归属地 [离线+在线](附代码,2023年亲测有效)

【写在前面】 编撰这篇文章还得从之前做安全业务需求说起&#xff0c;我们都知道安全攻击都是在某台客户机上执行某些恶意操作&#xff08;sql注入&#xff0c;DoS/DDoS攻击&#xff09;&#xff0c;致使服务端响应异常崩溃亦或响应数据被篡改&#xff0c;那么怎么去阻止这些东…

1.Java获取本机IP地址,主机名,域名

1.如何在程序中获取本机的IP地址&#xff0c;主机名以及域名呢&#xff1f; 在java中&#xff0c;我们可以利用java.net.InetAddress这个类来实现。 InetAddress 类提供了操作 IP 地址的各种方法。该类本身没有构造方法&#xff0c;而是通过调用相关静态方法获取实例。 InetA…

Java通过Ip2region实现IP定位

我们在一些短视频平台上可以看到,视频作者或评论区可以显示IP地址,这其实就是根据IP获取到的我们可以通过一些在线网站就可以看到我们当前的公网IP和IP定位,最近有个需求也需要通过请求获取客户端的IP和IP的定位,于是通过一系列的百度,最终选择使用Ip2region这个工具库来进行定…

ip解析 java_JAVA解析纯真IP地址库

http://lumaqq.linuxsir.org/article/qqwry_format_detail.html&#xff0c;这里就不多叙述了。 看下JAVA代码中怎么解析IP的吧。(代码参考至lumaQQ.谢谢开源作者luma) 解析的主类 package com.showtime.IPparse; import java.io.File; import java.io.FileNotFoundException; …

Java后台获取IP地址位置信息

最近做一个项目&#xff0c;某个模块需要根据IP地址获取区域位置和运营商信息&#xff0c;以前都是根据淘宝提供的一个免费获取该信息接口 http://ip.taobao.com/service/getIpInfo.php?ip112.10.111.18 返回结果为 {"msg": "Server is busy ,Current qps 8…

java 根据ip获取地区信息

离线版本&#xff1a; 依赖&#xff1a; maven <dependency><groupId>org.lionsoul</groupId><artifactId>ip2region</artifactId><version>1.7</version> </dependency> gradle implementation org.lionsoul:ip2region:2…

Java根据IP地址获取对应归属地

1 前言 最近&#xff0c;各大平台都新增了评论区显示发言者ip归属地的功能&#xff0c;例如哔哩哔哩&#xff0c;微博&#xff0c;知乎等等&#xff0c;下面&#xff0c;就来讲讲&#xff0c;Java 中是如何获取 IP 属地的 2 获取IP地址 在Java中有多种获取IP地址的方式,就不…

L58.linux命令每日一练 -- 第九章 Linux进程管理命令 -- pgrep和kill

9.3 pgrep&#xff1a;查找匹配条件的进程 9.3.1 命令详解 ​ 【命令星级】 ★★★★☆ ​ 【功能说明】 ​ pgrep命令可以查找匹配条件的进程号。 ​ 【语法格式】 pgrep [option] [pattern] pgrep [选项] [匹配添加]​ **说明&#xff1a;**在pgrep命令及后面的选项和匹…

Linux命令之查找进程pgrep

概述 pgrep命令是通过名称从运行进程队列中查找进程&#xff0c;并且显示查找到的进程ID。 如果我们想要查找正常运行的java进程&#xff08;通常是tomcat进程&#xff09;&#xff0c;那么可以使用如下语句&#xff1a; ps -ef | grep java | grep -v grep | gawk -n {prin…

linuxpgrepgrep_Linux pgrep与kill的使用

想结束系统中指定的进程&#xff0c;有以下指令可能参考&#xff1a; ps -ef | grep pure-ftpd | grep -v grep | awk {print $2" "$3} | xargs kill -9 pkill pure-ftpd killall -9 nginx 或者 kill -9 ps aux |grep -i nginx |grep -v grep |awk {print $2} kill…

linux 命令 pgrep

linux查看服务pid pgrep是一个命令行实用程序&#xff0c;根据给定的条件查找正在运行的程序的进程id。它可以是完整的或部分的进程名、运行该进程的用户或其他属性。 语法&#xff1a; pgrep [options] pattern 当在没有任何选项的情况下调用时&#xff0c;pgrep将显示与给…

linux查看进程pgrep,查看进程PID专用工具-------pgrep

一、Linux命令pgrep简单介绍 pgrep是linux中常用的通过程序名称来查询进程的工具&#xff0c;一般是用来判断程序是否正在运行及查找正在运行进程的PID信息。通过pgrep命令&#xff0c;可以只指定进程的一部分名称从运行进程队列中进行查看进程的PID信息&#xff0c;但只输出PI…

linux shell pgrep命令使用方法(pgrep指令)获取进程号、统计进程数量(学会区分Linux进程进程名)

文章目录 问题背景pgrep指令help文档使用示例1. 列出匹配进程的PID和进程名称&#xff08;-l&#xff09;&#xff08;默认只能从进程名的子集字符串匹配&#xff0c;如果要使用完整进程名的子集字符串匹配&#xff0c;请加-f参数&#xff0c;下同&#xff09;2. 列出匹配进程的…

pgrep

Pgrep 用于根据进程的name查找进程的pid。例如&#xff1a;

Linux pgrep命令

1 pgrep pgrep是一个根据名称查找进程ID的命令&#xff0c;返回的是进程ID&#xff0c;若存在当个进程&#xff0c;则分为不同的行返回ID&#xff08;默认实现&#xff09;。 2 示例 查找java进程&#xff1a; pgrep java上图还显示了ps与pgrep的区别&#xff0c;简单来说&…

【笔记11】个人扫盲:内存与CPU中的核、线程、物理CPU、逻辑CPU

文章目录 CPU与内存CPU内存什么是通道常见问题 物理CPU和逻辑CPU常见问题LINUX查看WINDOW查看 CPU与内存 CPU CPU&#xff08;Central Processing Unit&#xff09;即中央处理器。CPU从内存&#xff08;Memory&#xff09;或缓存&#xff08;Cache&#xff09;中取出指令&…

Linux下区分物理CPU、逻辑CPU和CPU核数

一、概念 ① 物理CPU 实际Server中插槽上的CPU个数 物理cpu数量&#xff0c;可以数不重复的 physical id 有几个 ② 逻辑CPU Linux用户对 /proc/cpuinfo 这个文件肯定不陌生. 它是…

记录一个有意思的cpu逻辑cpu核数问题(已解决)

top命令查看逻辑cpu个数的时候发现只有20个 实际上服务器的的逻辑cpu个数是32个 物理cpu核数 PS&#xff1a;该问题也存在于部分新旧服务器上&#xff0c;网上没找到答案&#xff0c;特此记录。希望未来可以得到答案。 2021年09月27日更新 目前认为最近用到了多少cpu核数就显…

物理CPU,物理CPU内核,逻辑CPU概念详解

1.说明 CPU(Central Processing Unit)是中央处理单元&#xff0c; 本文介绍物理CPU&#xff0c;物理CPU内核&#xff0c;逻辑CPU&#xff0c; 以及他们三者之间的关系&#xff0c; 一个物理CPU可以有1个或者多个物理内核&#xff0c; 一个物理内核可以作为1个或者2个逻辑CPU。 …