我想让所有 tikz 图形都采用 \sffamily 字体。但是,我无法为 tikz 设置基本字体,因为每当我使用(例如)font=\itshape
本地节点时,它都会被覆盖。
我尝试设置前缀(例如)\tikzset{font/.prefix = {\sffamily}}
,以及分别使用\AtBeginEnvironment{tikzpicture}{\renewcommand*{\familydefault}{\sfdefault}}
和更改默认字体\AtEndEnvironment
。此外,我还尝试了\tikzset{execute at begin picture={\renewcommand*{\familydefault}{\sfdefault}}}
。但是,没有任何帮助。
我只是在寻找一种适当的方法来将所有 tikz 环境中的基本字体设置为\sfdefault
。
在以下 MWE 中,第一个节点应该是无符号的、倾斜的,其他两个节点应该是相似的:
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node [font=\sffamily\itshape] {I should be in sans italic};
\node [font=\itshape,below] {I should be in sans italic};
\node [font=\bfseries,above] {I should be in sans oblique};
\end{tikzpicture}
\end{document}
答案1
这是一个简单的解决方案(如果您还没有使用every picture
样式)。在您的序言中添加以下行:
\tikzset{every picture/.style={/utils/exec={\sffamily}}}
例子:
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\tikzset{every picture/.style={/utils/exec={\sffamily}}}
\begin{document}
\begin{tikzpicture}
\node [font=\sffamily\itshape] {I should be in sans italic or sans oblique};
\node [font=\itshape,below] {I should be in sans italic or sans oblique};
\end{tikzpicture}
\end{document}
答案2
这改变了 Ti 的定义钾Zfont
选项并添加了一个附加base font
选项。它(几乎)完全未经测试。它可能极其脆弱。它可能会导致您的猫按照您的要求行事,或者以其他方式摧毁您所知道的世界。
买者自负
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\makeatletter
\tikzoption{base font}{\def\tikz@base@textfont{#1}}
\tikzoption{font}{\def\tikz@textfont{\tikz@base@textfont#1}}
\tikzset{
base font=\sffamily,
}
\makeatother
\begin{document}
\begin{tikzpicture}
\node [font=\sffamily\itshape] {I should be in sans italic or sans oblique};
\node [font=\itshape, below] {I should be in sans italic or sans oblique};
\end{tikzpicture}
\end{document}