在我的文档中,我希望 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,看看这对您是否可行。
题外话:你一直在加载 Ti钾Z 三次。\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
宏,但这会将整个选项附加到您的绘图中。如果某个选项设置了两次,Ti钾Z 将取最后一次出现的次数。
如果您需要将文档中的所有节点都设置为\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}