并排显示字体系列

并排显示字体系列

肯定没有任何东西还没有得到回答,但我找不到它。

如何在一个文档中获取罗马字体和无衬线字体?

当我的文档是无衬线字体时,我需要 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}

sansserif Latex 代替罗马字体

答案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}
    % .... %

会产生类似这样的结果:

上述建议的结果


解释

  1. \let\myLaTeX\LaTeX命令将复制\LaTeX到中,我们这样做是为了避免在下一步中\myLaTeX覆盖命令。\LaTeX可以将其视为“\让 \this 与 \that 相同”
  2. \def\LaTeX{...}\LaTeX使用括号内输入的内容重新定义命令序列{...}(知道作为一个群体)。
  3. {\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在我看来), 如下所示:

该图说明仅使用 Source Sans Pro 作为默认字体系列

强制使用字体后,它的外观如下\LaTeX

更好的表现


其他选择

如果要使用相同的字体类型以保持一致性,则可以使用 \LaTeX 可以很好地扩展的字体:

对于 Typewriter 字体,请尝试pcr(Courier),其外观如下:

徽标排版与快递

对于无衬线字体,请尝试phv(Helvet),它看起来像这样:

使用 Helvetica 字体排版的徽标

对于 Serif 字体,您还可以尝试ppl(Palatino),它看起来像这样:

使用 Palatino 排版的徽标

进一步阅读

  1. 如何排版每个与 TeX 相关的徽标
  2. 局部和全局范围的区别
  3. 更改特定单词或段落的字体(乳胶), (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。

使用 LaTeX 排版

\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{...}

相关内容