如何使用纯 XeTeX 更改 pgfplots 中的字体?

如何使用纯 XeTeX 更改 pgfplots 中的字体?

我努力了:

\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}才能获得相同的效果)。

相关内容