我正在使用 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.0
、Miktex 4.4
和Windows 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}
提示:每次我修改code prepended
TikzEdt 的设置中时,我都会删除隐藏的temp_header.tex
和文件以避免任何错误。temp_header.fmt
C:\Users\USER\AppData\Roaming\TikzEdt\TikzEdt\0.2.3.0
Compilation failed with exit code 1
答案2
这篇文章已经发表好几年了,但我发现自己对 TikzEdt 中的 pgfplots 实现感到困惑。我相信我找到了解决方案。而不是添加\使用包{pgfplots}到你的一个样式中,将其添加到设置(选项卡)/设置/编译器/代码前置。
对我有用!Piotr
答案3
添加\pgfplotsset{compat=1.13}
到您的前言中应该可以解决问题。这可能是由于不同版本的 TikZ 在其功能上存在细微差异造成的。此行告诉 TikZ 使用特定版本编译 TikZ 代码。
此外,即使在没有警告的情况下包含此行通常也是一种很好的做法,以避免意外输出,因为人们的计算机上可能安装了不同版本的 TikZ。
答案4
我发这个只是为了回答已回答的问题。
不幸的是,TikzEdt 似乎不再维护。一年前,我也给上面列出的电子邮件地址写了一封信其网站,但我没有得到答案。
我通过卸载并重新安装解决了具体问题,但当然,这只是一种解决方法。
对于任何其他无法通过这种方式解决的错误,唯一的解决办法就是更换编辑器(真的很遗憾)。