我一直在尝试使用 制作带误差线的 ybar 图pgfplots
。我想在 tex 模板中制作此图表,但发生了一件奇怪的事情 - 当我将以下代码(更具体地说 - 仅插入tikzpicture
及其内容)插入模板时,出现了此错误消息:
! \pgfplots@foreach@plot@coord@NEXT@plusminus 的使用与其定义不符。
\documentclass[10pt]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5.1}
\begin{document}
\begin{tikzpicture}
\begin{axis} [%log ticks with fixed point
,symbolic x coords={Lighting,Computers,Total}]
\addplot+[only marks] plot[error bars/.cd, y dir=both, y explicit]
coordinates{
(Lighting,0.12) +- (0.31,0.03)
(Computers,0.06) +- (0.12,0.01)
(Total,0.07) +- (0.14,0.02)
};
\end{axis}
\end{tikzpicture}
\end{document}
(代码取自带有符号 x 坐标和误差线的 pgfplots。
当我将此代码插入到单独的 tex 文件中时,一切运行正常并生成了图形。
我知道一种解决方案是在外部文件中制作图形,然后导入它,但我想问什么会导致此错误消息(我对 tex 还很陌生,但读过手册pgfplots
)以及是否有办法让它工作。
我尝试用谷歌搜索,但一无所获。我还尝试更改主文件中序言中项目的顺序。序言如下所示:
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{amsmath,amssymb,verbatim}
\usepackage{txfonts, cleveref}
\usepackage[linesnumbered]{algorithm2e}
\usepackage{multirow}
\usepackage{array}
\usepackage{float}
\usepackage{pgfplotstable}
\usepackage{caption}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5.1}
\usetikzlibrary{positioning}
\usetikzlibrary{calc}
\usetikzlibrary{patterns}
我故意不发布模板,因为对我来说,从外部文件导入图表比让别人阅读模板更简单。
答案1
该问题是由模板中的 catcode 重新分配引起的:一些代码更改使用了类似
\catcode\-=13
这会导致 TeX 改变减号字符 的含义-
。此字符的任何出现都将与之前不同 - 并pgfplots
在误差线输入规范中使用它。
解决方法是在使用之前将其改回来pgfplots
(通过\catcode\-=12
)或消除 catcode 黑客行为。
请注意,更改 catcode 本身会导致此类问题,通常不是一个好的做法。在某些情况下,它们的使用价值超过了它们的价格(即与许多其他软件包不兼容)。但如果可能的话:避免更改 catcode。