图像编译正确,但 TikzEdt 给出错误

图像编译正确,但 TikzEdt 给出错误

我正在使用 TikzEdt (版本 0.2.3.0)。我发现它很方便,因为它可以通过命令直接生成 .tikz 文件并将其包含在主文档中\input

一切工作正常,但是,当我编译下面的代码时,TikzEdt 出现此错误:

无法解析代码。MismatchedTokenException:预期标记 ')'。而是在第 23 行第 39 位置找到“,”

即使编译已经完成。

我应该忽略它还是担心它(“今天的警告是明天的错误”)?

% Code prepended -------------------------------------------------
\documentclass{article}
\usepackage{tikz,amsmath, amssymb,bm,color}
\usepackage[margin=0cm,nohead]{geometry}
\usepackage[active,tightpage]{preview}
\usepackage{pgfplots}
\usetikzlibrary{shapes,arrows}
\usetikzlibrary{calc, intersections}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{mindmap,trees}
\pgfplotsset{compat=1.13}

\PreviewEnvironment{tikzpicture}

\begin{document}
%------------------------------------------------------------------

% My code ---------------------------------------------------------
\newcommand{\Lossdistribution}{%
    (bassissimos) .. 
    controls (bassos) and (altos) 
    .. (punta) .. 
    controls (altod) and (bassod)
    .. (bassissimod)
}%

\begin{tikzpicture}

\begin{axis}[
axis lines=middle,
no markers, 
ticks=none,
xmin=-4, xmax=7, ymin=0, ymax=4,
samples=300,
clip=false, 
every axis x label/.style={at=(current axis.right of origin),anchor=west},
xlabel={Loss},
ylabel={Probability density}
]

\node[below=0.5] (nulla) at (axis cs: 0, 0)  {$0$}; 
\node[below=0.5] (VaR) at (axis cs: 3.5, 0)  {VaR$_\alpha$}; 
\node[] (unomenoalfa) at (axis cs: 5.4, 1)  {$1-\alpha$}; 
\node[below] (inmezzoallarea) at (axis cs: 4, 0.14)  {}; 

\coordinate (bassissimos) at (axis cs: -4, 0.04) {};
\coordinate (bassos) at (axis cs: -2, 0.1) {};
\coordinate (altos) at (axis cs: -2.5, 2.7) {};
\coordinate (punta) at (axis cs: -1.5, 3.5) {};
\coordinate (altod) at (axis cs: 0, 4.5) {};
\coordinate (bassod) at (axis cs: 1, 0.1) {};
\coordinate (bassissimod) at (axis cs: 6.7, 0.07) {};

\begin{scope}
\clip (axis cs: 3.5, 0) rectangle (axis cs: 6.7, 3);
\fill [gray!30] \Lossdistribution -- (axis cs: 6.7, 0);
\end{scope} 

\draw [name path=curva, thick, smooth] \Lossdistribution;

\draw [-{Stealth[scale=0.7]}] (unomenoalfa) -- (inmezzoallarea);

\path [name path=riga] (axis cs: 3.5, 0) -- (axis cs: 3.5, 4);
\path [name intersections={of=curva and riga}];
\draw[] (intersection-1) -- ({intersection-1} |- {axis cs: 0, 0}); 

\end{axis};

\end{tikzpicture}
%------------------------------------------------------------------

% Code appended ---------------------------------------------------
\end{document}
%------------------------------------------------------------------

当我编译包含“我的代码”的主文档时,没有任何问题。

编辑:我已经修改了代码插入\pgfplotsset{compat=1.13}(如建议的那样)但是它并不能解决问题。

答案1

Code Prepended对我有用。我正在使用TikzEdt 0.2.3.0Miktex 4.4Windows 11

% Code Prepended
\documentclass{article}
\usepackage{tikz,amsmath, amssymb,bm,color}
\usepackage[margin=0cm,nohead]{geometry}
\usepackage[active,tightpage]{preview}
\usetikzlibrary{shapes,arrows}
% needed for BB
\usetikzlibrary{calc}

%begin{document}
\PreviewEnvironment{tikzpicture}

看似幼稚,但%begin{document}之前的评论\PreviewEnvironment{tikzpicture}确实起了作用。在玩了临时文件C:\Users\USER\AppData\Roaming\TikzEdt\TikzEdt\0.2.3.0\temp_header.tex和之后C:/Users/USER/AppData/Local/Temp/TE_temp_previewXXXX.tex,我发现在TikzEdt管理角色方面存在问题%

编辑:对于您的示例,问题似乎与的使用有关axis cs:,我使用以下代码运行它:

% --- Code prepended
\documentclass{article}
\usepackage{tikz,amsmath, amssymb,bm,color}
\usepackage[margin=0cm,nohead]{geometry}
\usepackage[active,tightpage]{preview}
\usepackage{pgfplots}
\usetikzlibrary{shapes,arrows}
\usetikzlibrary{calc, intersections}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{mindmap,trees}
\pgfplotsset{compat=1.18}

%begin{document}
\PreviewEnvironment{tikzpicture}

% --- main
\newcommand{\Lossdistribution}{%
    (bassissimos) .. 
    controls (bassos) and (altos) 
    .. (punta) .. 
    controls (altod) and (bassod)
    .. (bassissimod)
}%

\begin{tikzpicture}

\begin{axis}[
    axis lines=middle,
    no markers, 
    ticks=none,
    xmin=-4, xmax=7, ymin=0, ymax=4,
    samples=300,
    clip=false, 
    every axis x label/.style={at=(current axis.right of origin),anchor=west},
    xlabel={Loss},
    ylabel={Probability density}
    ]

    \node[below=0.5] (nulla) at (0, 0)  {$0$}; 
    \node[below=0.5] (VaR) at (3.5, 0)  {VaR$_\alpha$}; 
    \node[] (unomenoalfa) at (5.4, 1)  {$1-\alpha$}; 
    \node[below] (inmezzoallarea) at (4, 0.14)  {}; 
    % 
    \coordinate (bassissimos) at (-4, 0.04) {};
    \coordinate (bassos) at (-2, 0.1) {};
    \coordinate (altos) at (-2.5, 2.7) {};
    \coordinate (punta) at (-1.5, 3.5) {};
    \coordinate (altod) at (0, 4.5) {};
    \coordinate (bassod) at (1, 0.1) {};
    \coordinate (bassissimod) at (6.7, 0.07) {};
    % 
    \begin{scope}
        \clip (3.5, 0) rectangle (6.7, 3);
        \fill [gray!30] \Lossdistribution -- (6.7, 0);
    \end{scope} 
    % 
    \draw [name path=curva, thick, smooth] \Lossdistribution;
    % 
    \draw [-{Stealth[scale=0.7]}] (unomenoalfa) -- (inmezzoallarea);
    % 
    \path [name path=riga] (3.5, 0) -- (3.5, 4);
    \path [name intersections={of=curva and riga}];
    \draw[] (intersection-1) -- (intersection-1)|-(0, 0);

\end{axis};

\end{tikzpicture}

% --- Code appended
\end{document}

Tikz编辑

提示:每次我修改code prependedTikzEdt 的设置中时,我都会删除隐藏的temp_header.tex和文件以避免任何错误。temp_header.fmtC:\Users\USER\AppData\Roaming\TikzEdt\TikzEdt\0.2.3.0Compilation failed with exit code 1

答案2

这篇文章已经发表好几年了,但我发现自己对 TikzEdt 中的 pgfplots 实现感到困惑。我相信我找到了解决方案。而不是添加\使用包{pgfplots}到你的一个样式中,将其添加到设置(选项卡)/设置/编译器/代码前置

对我有用!Piotr

答案3

添加\pgfplotsset{compat=1.13}到您的前言中应该可以解决问题。这可能是由于不同版本的 TikZ 在其功能上存在细微差异造成的。此行告诉 TikZ 使用特定版本编译 TikZ 代码。

此外,即使在没有警告的情况下包含此行通常也是一种很好的做法,以避免意外输出,因为人们的计算机上可能安装了不同版本的 TikZ。

答案4

我发这个只是为了回答已回答的问题

不幸的是,TikzEdt 似乎不再维护。一年前,我也给上面列出的电子邮件地址写了一封信其网站,但我没有得到答案。

我通过卸载并重新安装解决了具体问题,但当然,这只是一种解决方法。

对于任何其他无法通过这种方式解决的错误,唯一的解决办法就是更换编辑器(真的很遗憾)。

相关内容