肯定没有任何东西还没有得到回答,但我找不到它。
如何在一个文档中获取罗马字体和无衬线字体?
当我的文档是无衬线字体时,我需要 LATEX Roman。
\documentclass[11pt]{article}
\usepackage{fontspec}
\setromanfont{Times-Roman}
\setmonofont{FiraMono-Regular.otf}
\setmainfont{FiraSans}[
Ligatures=TeX,
Path = /Users/novski/Library/Fonts/,
BoldFont = *-Regular,
BoldItalicFont = *-Italic,
ItalicFont = *-Italic,
UprightFont = *-UltraLight,
]
\begin{document}
\thispagestyle{empty}
\begin{center}
\vspace*{\fill}
\noindent\rule{\textwidth}{1pt} \\ [4mm]
\Large{\textsc{this Document is Typset with}} \\ [3mm]
\textrm{ \Huge{\LaTeX{}} }\\ [1mm]
\noindent\rule{\textwidth}{1pt}\\
\vspace*{\fill}
\end{center}
\end{document}
答案1
我来晚了一点,但如果你只是想确保命令\LaTeX
正确扩展而无需调整字距(你可以用 metafont
包裹),您可以强制命令使用Computer Modern
字体系列。
为了实现这一点,您需要从想要应用命令的位置重新定义该命令:
\let\myLaTeX\LaTeX
\def\LaTeX{\fontfamily{cmr}\rmfamily\selectfont\myLaTeX}
您可以通过以下方式轻松恢复正常:
\let\LaTeX\myLaTeX
之后\LaTeX
您需要排版。
因此如下:
% .... %
\vspace*{2mm}
\let\myLaTeX\LaTeX % <- Copy \LaTeX here
\def\LaTeX{\fontfamily{cmr}\rmfamily\selectfont\myLaTeX} % <- Redefine here
{\Large\mdseries\textsc{The logo with Computer Modern:}\par}
{\Huge\LaTeX\par}
\let\LaTeX\myLaTeX % <- Revert changes
{\Large\mdseries\textsc{The logo with default font:}\par}
{\Huge\LaTeX\par}
\vspace*{2mm}
% .... %
会产生类似这样的结果:
解释
- 该
\let\myLaTeX\LaTeX
命令将复制\LaTeX
到中,我们这样做是为了避免在下一步中\myLaTeX
覆盖命令。\LaTeX
可以将其视为“\让 \this 与 \that 相同” \def\LaTeX{...}
\LaTeX
使用括号内输入的内容重新定义命令序列{...}
(知道作为一个群体)。{\fontfamily{cmr}\rmfamily\selectfont\myLaTeX}
cmr
设置后面的字体,在我们的例子中,是之前的\let
(或复制) 命令序列\myLaTeX
。注意:我在这里特意设置了,\rmfamily
以避免某些字体出现未定义形状的警告。
也可以通过以下方式实现一些和\TeX
朋友一样。
对于整个文档
如果您想对每个宏使用它,您可以将定义放在主 *.tex 文件的前言中,如下面的 MWE 所示:
\documentclass[11pt]{article}
\usepackage[light, default]{sourcesanspro} % <- Using this sans serif
\usepackage[T1]{fontenc}
\let\myLaTeX\LaTeX
\def\LaTeX{\fontfamily{cmr}\rmfamily\selectfont\myLaTeX}
\begin{document}
\thispagestyle{empty}
\begin{center}
\vspace*{\fill}
\noindent\rule{\textwidth}{1pt}\par
\vspace*{2mm}
{\Large\mdseries\textsc{This Document is typeset with}\par}
{\Huge\LaTeX\par}
\vspace*{2mm}
\noindent\rule{\textwidth}{1pt}\par
\vspace*{\fill}
\end{center}
\end{document}
我通常建议这样做,而不是对字体进行内联更改。由于 LaTeX 传统上是用罗马字体排版的,我认为应该按预期使用它。即便如此,我还是在下面添加了一些选项。
结果
为了说明这是如何工作的,我使用Source Sans Pro
字体系列作为文档字体(就像我在上面的例子里做的那样)此字体不扩展\LaTeX
(在我看来), 如下所示:
强制使用字体后,它的外观如下\LaTeX
:
其他选择
如果要使用相同的字体类型以保持一致性,则可以使用 \LaTeX 可以很好地扩展的字体:
对于 Typewriter 字体,请尝试pcr
(Courier),其外观如下:
对于无衬线字体,请尝试phv
(Helvet),它看起来像这样:
对于 Serif 字体,您还可以尝试ppl
(Palatino),它看起来像这样:
进一步阅读
- 如何排版每个与 TeX 相关的徽标
- 局部和全局范围的区别
- 更改特定单词或段落的字体(乳胶), (XeLaTeX 和 LuaTeX)
答案2
好的,让我们从代码中的几个问题开始:
- 您设置了
\setromanfont
和,\setmainfont
其中前者是后者的过时同义词。因此,基本上 Fira Sans 会覆盖 Times Roman。 - 你可以
\Huge
像使用带参数的命令一样使用 size 命令。可以分组正确使用它们 ({\Huge Test}
),也可以先使用\DeclareTextFontCommand{\textHuge}{\Huge}
,然后再使用\textHuge{Text}
。 - 如果其中一行中有超过一行的字体大小发生了变化,请考虑添加段落分隔符,以便调整行间间距。
关于您的问题:您决定使用无衬线字体排版您的文档。这很好,但是当您将其用作主字体时,您可能希望忽略命令名称,而只使用罗马字体系列作为“无衬线字体”,因为无论如何您都会交换含义。
然后,您就可以在您的示例中使用\textsf
或\sffamily
,它就会起作用。顺便说一句:\LaTeX
由于字距问题,除了 Computer/Latin Modern 之外,在其他字体中可能看起来不太好,因此如果您真的想强调“使用 LaTeX 排版”方面,您可能需要调整字体的字距。
为了说明目的,我使用了 TeX Live 中包含的 Fira 字体(删除了路径)和同样是 TeX Live 一部分的 Libertinus Serif。
\documentclass[11pt]{article}
\usepackage{fontspec}
\setmainfont{Fira Sans}
\setsansfont{Libertinus Serif}
\setmonofont{Fira Mono}
\begin{document}
\thispagestyle{empty}
\begin{center}
\vspace*{\fill}
\noindent\rule{\textwidth}{1pt}\par
\vspace*{2mm}
{\Large\textsc{This Document is typeset with}\par}
{\Huge\sffamily\LaTeX\par}
\vspace*{2mm}
\noindent\rule{\textwidth}{1pt}\par
\vspace*{\fill}
\end{center}
\end{document}
答案3
您可以做的一件事是将您的衬线字体作为命名字体系列加载,例如\libertine
,大多数字体包都支持,然后将您的无衬线字体设置为您的主字体(在许多包中,这是[sfdefault]
包选项)。
然后你可以声明新的命令
\newcommand\seriffamily{\libertine}
\DeclareTextFontCommand\textserif{\seriffamily}
\seriffamily
因此,您可以代替\rmfamily
和\textserif{...}
代替进行书写\textrm{...}
。