Tikzscale
给出了在 中绘制的直方图的错误结果pgfplots
。
未缩放的直方图tikzscale
:
缩放后的直方图:
pgfplots
我在 MWE 1.7 版手册第 67 页中附上了一张直方图。pgfplots.randn.dat
文件附带标准 texlive-2012 发行版或可以从给定的链接下载。
平均能量损失
\documentclass{report}
\usepackage{filecontents,tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.7}
% Comment to get figure without scaling
\usepackage{tikzscale}
\begin{filecontents}{figrandn.tikz}
\begin{tikzpicture}
\begin{axis}[
ybar interval,
xtick=,% reset from ybar interval
xticklabel={$[\pgfmathprintnumber\tick, \pgfmathprintnumber\nexttick)$}
]]
% a data file containing 8000 normally distributed
% random numbers of mean 0 and variance 1
\addplot+[hist={data=x}] file {pgfplots.randn.dat};
\end{axis}
\end{tikzpicture}
\end{filecontents}
\begin{document}
\begin{figure}
\centering
% Comment the line below for figure without scaling.
\includegraphics[width=\textwidth,height=0.5\textwidth]{figrandn.tikz}
%Uncomment to include figure without scaling
%\input{figrandn.tikz}
\caption{Test figure}
\end{figure}
\end{document}
答案1
我可以确认,这是 tikzscale 中的一个错误。非常感谢您发现它。解决方法是,打开tikzscale.sty
,找到包含\endlinechar=-1
并注释/删除该行的行。
出现该错误是因为对 endlinechar 的修改,导致读取 时换行符发生变化pgfplots.randn.dat
,从而导致数字发生变化(例如12\n34
变成1234
)。
我还不知道该如何处理这个错误。修改是endlinechar
为了避免由于图形前后的前导或尾随空格而导致缩放略微不精确。有三个不需要的空格来源:
Tikzscale
由于编程错误,有时会出现虚假的空格。- 一段时间以来,图书馆里
external
一直存在虚假的空白。 \end{tikzpicture}
如果用户忘记在文件末尾添加百分号或意外添加换行符tikz
,这也是虚假空格。
说了这么多问题,现在我们来看看解决方案:
- 总是可以通过新版本来修复
tikzscale
,所以这应该不是什么大问题。 - 可以通过使用的最新开发版本来修复
TikZ
,这对用户来说很不幸,但由于其他错误修复,无论如何可能还是建议这样做。 - 是最难的部分,因为用户在创建
TikZ
文件时必须始终记住这个问题,这是一种糟糕的用户体验。我想我必须进行修改\begin{tikzpicture}
,\end{tikzpicture}
以便endlinechar
在环境中恢复原始内容。
更新
通过(刚刚上传)tikzscale version 0.2.1
,问题已解决。