将所有节点设置为使用 \sffamily 而不覆盖字体大小

将所有节点设置为使用 \sffamily 而不覆盖字体大小

在我的文档中,我希望 tikz 和 pgfplots 图形中的所有标签都使用无衬线字体,因此我使用\tikzset{every node/.append style={font=\sffamily}}。这有效。但是,当我在我的轴环境中使用它时,legend style={font=\tiny}不再有任何效果。下面的文档生成一个轴,其中图例具有正常字体大小。如何将所有节点设置为使用无衬线字体,同时仍然能够根据每个案例调整图例的字体大小?

\documentclass[tikz]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\tikzset{
    every node/.append style={font=\sffamily}}
\begin{document}
\begin{tikzpicture}%
\begin{axis}[
    legend style={font=\tiny}]
\addplot coordinates {(0,0) (1,1) (2,1) (3.5, -1)};
\addlegendentry{Test}
\end{axis}%
\end{tikzpicture}%
\end{document}

真实效果(无衬线字体,但图例字体大小指示无效):

图中未使用小图例字体

禁用指令时的效果font=\sffamily(带有细小图例字体的衬线字体):

图中确实使用了微小的图例字体

答案1

你真的需要每个 Ti 的每个节点都有这个吗Z-picture?你的做法太严厉了。

请查看我的 MWE,看看这对您是否可行。

题外话:你一直在加载 TiZ 三次。\documentclass[tikz]{standalone},,\usepackage{tikz}并且\usepackage{tikz-cd}也会加载它。

% arara: pdflatex

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\pgfplotsset{%
    ,tick label style = {font=\sffamily} % see http://tex.stackexchange.com/a/33329 if also needed for numbers.
    ,every axis label = {font=\sffamily}
    ,legend style = {font=\tiny\sffamily}
    ,label style = {font=\sffamily}
}

\begin{document}
    \begin{tikzpicture}%
    \begin{axis}
    \addplot coordinates {(0,0) (1,1) (2,1) (3.5, -1)};
    \addlegendentry{Test}
    \end{axis}%
    \end{tikzpicture}%
\end{document}

您的方法存在问题,因为您使用了font两次该选项。一次使用font=\sffamily,一次使用font=\tiny。您正在使用.append style宏,但这会将整个选项附加到您的绘图中。如果某个选项设置了两次,TiZ 将取最后一次出现的次数。

如果您需要将文档中的所有节点都设置为\sffamily,则必须定义自己的选项,例如fontsize=fontfamily=(可能已经存在)或定义一个真正的“字体附加”,就像您一直尝试做的那样。这将看起来像下面这样(感谢 Henry DeYoung):

% arara: pdflatex

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\makeatletter
\tikzset{%
    ,font append/.style={font/.expand once=\tikz@textfont #1}
    ,font append/.value required
    }
\makeatother
\tikzset{every node/.append style={font append=\sffamily}}

\begin{document}
    \begin{tikzpicture}%
    \begin{axis}[%
    legend style={font=\tiny}
    ]
    \addplot coordinates {(0,0) (1,1) (2,1) (3.5, -1)};
    \addlegendentry{Test}
    \end{axis}%
    \end{tikzpicture}%
\end{document}

两种 MWE 的结果都是:

在此处输入图片描述

答案2

图例设置为矩阵。因此,您可以使用 更改单元格节点的样式nodes={...}

您可以定义一个新命令

\newcommand\mynodefont{\sffamily}

并对所有节点使用此命令

\tikzset{every node/.append style={font=\mynodefont}}

并在nodes图例的键内:

legend style={nodes={font=\mynodefont\tiny}}

在此处输入图片描述

代码:

\documentclass[margin=10pt]{standalone}
\newcommand\mynodefont{\sffamily}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\tikzset{every node/.append style={font=\mynodefont}}

\begin{document}
\begin{tikzpicture}%
\begin{axis}[
    legend style={nodes={font=\mynodefont\tiny}}
    ]
\addplot coordinates {(0,0) (1,1) (2,1) (3.5, -1)};
\addlegendentry{Test}
\end{axis}%
\end{tikzpicture}%
\end{document}   

相关内容