![如何使用纯 XeTeX 更改 pgfplots 中的字体?](https://linux22.com/image/241111/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E7%BA%AF%20XeTeX%20%E6%9B%B4%E6%94%B9%20pgfplots%20%E4%B8%AD%E7%9A%84%E5%AD%97%E4%BD%93%EF%BC%9F.png)
我努力了:
\font\figfn="Myriad Pro:mapping=tex-text" at 8pt
\input tikz
\tikzset{font=\figfn}
\input pgfplots
\pgfplotsset{
width=\hsize,
compat=1.3,
every axis label={font=\figfn},
tick label style={font=\figfn},
label style={font=\figfn},
legend style={font=\figfn}
}
\tikzpicture[font=\figfn]
\axis[ybar,bar width=2pt,x tick label style={/pgf/number format/1000 sep=}]
\addplot coordinates {(2009,18) (2008,28) (2007,12) (2006,9) (2005,11)
(2004,12) (2003,4) (2002,4) (2001,5) (2000,10) (1999,5) (1998,2) (1997,4)
(1996,5) (1995,11) (1994,11) (1993,14) (1992,10) (1991,10) (1990,4)};
\addplot coordinates {(2009,13) (2008,15) (2007,13) (2006,16) (2005,11)
(2004,7) (2003,4) (2002,4) (2001,2) (2000,6) (1999,11) (1998,5) (1997,13)
(1996,10) (1995,3) (1994,6) (1993,16) (1992,15) (1991,15) (1990,7)};
\endaxis
\endtikzpicture
\bye
没有字体变化(您可以从上面的代码中看到我越来越大的挫败感,我尝试将字体应用到我能想到的每个地方)。
答案1
以下是我的一个实验:
%\font\figfn="Myriad Pro:mapping=tex-text" at 8pt
\def\figfn{\tt}
\input tikz
\tikzset{font=\figfn}
\input pgfplots
\pgfplotsset{
width=\hsize,
compat=1.3,
every axis label={font=\figfn},
tick label style={font=\figfn},
label style={font=\figfn},
legend style={font=\figfn},
title=A title,
xticklabel style={/pgf/number format/assume math mode},
yticklabel style={/pgf/number format/assume math mode},
}
\tikzpicture[font=\figfn]
\axis[ybar,bar width=2pt,x tick label style={/pgf/number format/1000 sep=}]
\addplot coordinates {(2009,18) (2008,28) (2007,12) (2006,9) (2005,11)
(2004,12) (2003,4) (2002,4) (2001,5) (2000,10) (1999,5) (1998,2) (1997,4)
(1996,5) (1995,11) (1994,11) (1993,14) (1992,10) (1991,10) (1990,4)};
\addplot coordinates {(2009,13) (2008,15) (2007,13) (2006,16) (2005,11)
(2004,7) (2003,4) (2002,4) (2001,2) (2000,6) (1999,11) (1998,5) (1997,13)
(1996,10) (1995,3) (1994,6) (1993,16) (1992,15) (1991,15) (1990,7)};
\endaxis
\endtikzpicture
\bye
效果很好。您会注意到我用默认字体替换了您的字体。这直接适用于图表的标题。
不过,刻度标签比较棘手:正确的方法是交换数学字体,因为它们默认在数学模式下排版。对于 LaTeX,这通常需要加载不同的包来完成这项工作(LaTeX 互联网论坛上还有其他与此问题相关的问题)。
如果您确实想使用文本字体来显示刻度标签,则必须对这些标签使用文本模式。/pgf/number format/assume math mode
上例中使用的键告诉数字格式化程序它不需要切换到数学模式 - 而且由于您没有明确激活数学模式,它将使用文本字体排版刻度标签(对于 1.5 之前的 pgfplots 修订版,您必须添加xticklabel=\pgfmathprintnumber{\tick}
和yticklabel=\pgfmathprintnumber{\tick}
才能获得相同的效果)。