如何找出停止编译的原因(包 PGF 数学错误:未知函数)

如何找出停止编译的原因(包 PGF 数学错误:未知函数)

我已经创建了垂直分割圆,它可以独立工作,但是当我将此代码添加到我的大学模板。这是独立代码:

\documentclass[tikz]{standalone}
% BEGIN section 1 
\usepackage{tikz}
\usetikzlibrary{calc, positioning,fit}
% END section 1
\begin{document}
% BEGIN section 2
\begin{tikzpicture}[scale=1]
\tikzset{
    pics/circle vertically split/.style 2 args = {
       code = {
         \pgfmathsetmacro{\widthOne}{width("#1")+4pt}
         \pgfmathsetmacro{\widthTwo}{width("#2")+4pt}

         \node[text=green](-this_is_currcent_center){+};
         \node[xshift=-\widthOne/2] (-left) {#1};
         \node[xshift=\widthTwo/2] (-right) {#2};
         \node[fit=(-left)(-right),draw,circle,text=red](-shape) {+};
         \node(-splitline) at ($ (-left.east)!.5!(-right.west) $) {};
         \draw (-shape.north east -| -splitline.center) -- (-shape.south east -| -splitline.center);
       }
    }
}
% this doesn't center correctly but it's not part of this question
\pic[inner sep = 1pt, align=left] (A) {circle vertically split={$Aaaaaa$}{$B$}};
\pic[inner sep = 1pt, align=left, right = of A-shape] (B) {circle vertically split={A}{$Bbbbb$}};
\end{tikzpicture}
% END section 2
\end{document}

独立代码产生: 独立代码的结果

添加大学模板后出错:

!软件包 PGF 数学错误:未知函数“Aaaaaa”(在‘width(""Aaaaaa"")+4pt’中)。

如何重现错误

对于任何想要帮助我的人,我创建了一种在 30 秒内快速重现错误的方法:

  1. 克隆存储库(这是模板的分支)--git clone https://github.com/xoac/aghdpl-imir.git
  2. 结帐至分支分割环 --git checkout split-circle
  3. 使用命令编译latexmk -outdir=build -pdf praca.tex

附加信息:

检查原始模板与更改后模板之间的差异git diff master split-circle

pdflatex --version

pdfTeX 3.14159265-2.6-1.40.20 (TeX Live 2019/Arch Linux) kpathsea 版本 6.3.1
版权所有 2019 Han The Thanh (pdfTeX) 等。没有任何保证。本软件的再分发受 pdfTeX 版权和宽 GNU 通用公共许可证条款的约束。
有关这些事项的更多信息,请参阅名为 COPYING 的文件和 pdfTeX 源。pdfTeX
的主要作者:Han The Thanh (pdfTeX) 等。
使用 libpng 1.6.37 编译;使用 libpng 1.6.37
使用 zlib 1.2.11 编译;使用 zlib 1.2.11
使用 poppler 版本 0.85.0 编译


如何找到添加我的代码后停止编译的原因?


我创建了垂直分割圆,混合了以下两种解决方案:1。https://tex.stackexchange.com/a/528851/192768 2.https://tex.stackexchange.com/a/186506/192768

答案1

问题可能是你的格式使用了

\usepackage[english, polish]{babel}

它转换了一些特殊字符的含义(技术上来说使角色活跃),在这种情况下可能是引号",我猜它是用来添加一些重音的……(我不懂波兰语,所以不知道细节)。

如果你使用 utf8 输入特殊字符,你可以尝试使用以下方法禁用babel简写

 \usepackage[english, polish, shorthands=off]{babel}

或者您可以尝试加载 TiZ 库

   \usetikzlibrary{babel}

我认为您的例子中这两种方法都有效。

babel 和 tikz 使用 \draw 的问题我怀疑与此非常相似。

相关内容