如何制作带有小型无衬线字体的 TikZ 图形?

如何制作带有小型无衬线字体的 TikZ 图形?

我希望图形中的字体是无衬线字体,并且比主文档小。我试过了

\begin{tikzpicture}[font=\sffamily]
 \tikzstyle{every node}=[font=\small]
\draw (0,0) rectangle (5, 5) node[midway] {I am a rectangle}
\end{tikzpicture}

问题是,font=\small图中的选项覆盖了\font=\sffamily图片声明中的选项,最终我得到的是小衬线字体。如何同时设置字体大小和字体系列?

答案1

两种方式:

  1. \sffamily在输入之前调用tikz,或者

  2. 您可以在同一个指令中组合\small和。\sffamilyfont=

这是 MWE

\documentclass{article}
\usepackage{tikz}
\begin{document}
{\sffamily
\begin{tikzpicture}
 \tikzset{every node}=[font=\small]
\draw (0,0) rectangle (5, 5) node[midway] {I am a rectangle};
\end{tikzpicture}}

No longer in sffamily

\begin{tikzpicture}[font=\sffamily]
 \tikzset{every node}=[font=\small\sffamily]
\draw (0,0) rectangle (5, 5) node[midway] {I am a rectangle};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

选项fontnode font可组合:

\begin{tikzpicture}[font=\sffamily]
  \draw[node font=\small]
    (0,0) rectangle (4, 2) node[midway] {I am a rectangle};
\end{tikzpicture}

另外,add to font可以定义一个选项,将额外的字体设置添加到选项的当前设置中,font如下面的示例所示,其中包括上面的代码:

\documentclass{article}
\usepackage{tikz}

\makeatletter
% Definition of option "font" in "tikz.code.tex":
%   \tikzoption{font}{\def\tikz@textfont{#1}}
% New TikZ option "add to font":
\tikzoption{add to font}{%
  \providecommand*{\tikz@textfont}{}%
  \expandafter\def\expandafter\tikz@textfont\expandafter{%
    \tikz@textfont
    #1%
  }%
}
\makeatother

\begin{document}
\begin{tikzpicture}[font=\sffamily]
  \draw[node font=\small]
    (0,0) rectangle (4, 2) node[midway] {I am a rectangle};
\end{tikzpicture}

\begin{tikzpicture}[font=\sffamily]
  \draw[add to font=\small]
    (0,0) rectangle (4, 2) node[midway] {I am a rectangle};
\end{tikzpicture}
\end{document}

结果

相关内容