matplotlib 的 pgf 输出中未定义的控制序列

matplotlib 的 pgf 输出中未定义的控制序列

我正在包含一个pgf由 matplotlib 创建的图形。使用 lualatex 构建文档时出现以下错误。

! Undefined control sequence.
l.55 ...,right,bottom]{\color{textcolor}\setmainfont
                                                  {Liberation Mono}\rmfamily...

完整的第 55 行粘贴在下面。

\pgftext[x=1.578628in,y=5.846758in,right,bottom]{\color{textcolor}\setmainfont{Liberation Mono}\rmfamily\fontsize{36.000000}{43.200000}\selectfont \(\displaystyle \displaystyle \frac{dC_T}{dr}\)}%

我的 latex 文档如下,其中包含我在 matplotlib 创建的 pgf 文件中推荐的序言中的项目。

\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgf}
\usepackage{pgfplots}
\usepackage{import}
\pgfplotsset{compat=1.18}
\usepackage{graphics}

\usepackage{lmodern}
\usepackage{fontspec}
\setmainfont{DejaVuSerif.ttf}[Path=\detokenize{/home/nikos/.local/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/}]
\setsansfont{DejaVuSans.ttf}[Path=\detokenize{/home/nikos/.local/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/}]
\setmonofont{DejaVuSansMono.ttf}[Path=\detokenize{/home/nikos/.local/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/}]
\makeatletter\@ifpackageloaded{underscore}{}{\usepackage[strings]{underscore}}\makeatother

\begin{document}
\begin{tikzpicture}
\input{c5_ct-polar.pgf}
\end{tikzpicture}
\end{document}

我不是很熟悉pgf,我无法判断第 55 行的哪一部分导致了错误,但如果我注释掉\pgftext文档中的所有行,编译就可以正常进行。

该文件的重要部分pgf如下所示。

% this lines works
\pgftext[x=1.578628in,y=5.846758in,right,bottom]{hi}
% When the command \setmainfont is added, the error occurs
%\pgftext[x=1.578628in,y=5.846758in,right,bottom]{\setmainfont{Liberation Mono}hi}%

\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgf}
\usepackage{pgfplots}
\usepackage{import}
\pgfplotsset{compat=1.18}
\usepackage{graphics}

\usepackage{lmodern}
\usepackage{fontspec}
\setmainfont{DejaVuSerif.ttf}
\setsansfont{DejaVuSans.ttf}
\setmonofont{DejaVuSansMono.ttf}
\makeatletter\@ifpackageloaded{underscore}{}{\usepackage[strings]{underscore}}\makeatother

\begin{document}
\begin{tikzpicture}
%\input{c5_ct-polar.pgf}
\pgftext[x=1.578628in,y=5.846758in,right,bottom]{\color{textcolor}\setmainfont{Liberation Mono}\rmfamily\fontsize{36.000000}{43.200000}\selectfont \(\displaystyle \displaystyle \frac{dC_T}{dr}\)}%

\end{tikzpicture}
\end{document}

答案1

原因undefined control sequence不是命令\setmainfont本身,而是字体Liberation Mono未定义。

相关内容