买者自负

买者自负

我想让所有 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}

全部无

相关内容