这可能是针对维护人员和 LaTeX3 项目团队的。
我注意到使用 epslatex 终端外部 gnuplot 生成的图表发生了变化。使用 pdfLaTeX 或 LuaLaTeX 0.95(来自 TeX Live 2016)编译的文档没有问题。
但是,当使用 LuaLaTeX 1.0.4 (Tex Live 2017) 编译文档时,轴上的数字以及一般情况下的任何文本都会略微向左移动。我在此处添加了图片来说明该问题:
LuaLaTeX 0.95
LuaLaTeX 1.0.4
如果您查看 x 轴上的标签以及它们如何与刻度线对齐,差异会最明显。
在测试了 Tex Live 2016 和 2017 的两个版本并加载了所有软件包后,我能够将问题缩小到luatex.def
。如果我将luatex.def
v0.01h(替换 v1.0f)替换到我的 Tex Live 目录中,它就会修复该问题。即使用 LuaLaTeX 1.0.4 和下面日志中列出的所有相关软件包版本进行编译。
我还认为这可能与 eps 到 pdf 的转换有关,当 gnuplot 图表包含在主文档中时就会发生这种情况。
如果我使用 imagemagick 将输入的 eps(绘图的一部分)更改为 png,问题似乎就消失了。因此,要么在将 eps 转换为 pdf 时发生,要么在包含 pdf 时发生。无论哪种方式,只有在luatex.def
加载最新版本时才会发生。
我查看了 luatex.def 的两个版本,但我的 tex-fu 不够强大,无法提出修复建议。使用 gnuplot 中的源 tex 后,我也可以通过操作\setlength{\unitlength}
或坐标来手动修复它。我还可以移动东西,让命令\unitlength
中的和坐标保持\put
不变,但修改命令中的坐标\makebox
。我不确定这是否有助于找到问题。
我在这里提供了我的最小工作示例,我使用 filecontents 输出生成的 gnuplot,plot.tex
以防有人无法访问 gnuplot。生成它的 gnuplot 脚本遵循 LaTeX MWE。
LaTeX 数学公式
%!TEX TS-program = lualatex
%!TEX encoding = UTF-8 Unicode
\RequirePackage{luatex85}
\RequirePackage{shellesc}
\documentclass{standalone}
\usepackage{graphicx}
\begin{filecontents}{plot.tex}
% GNUPLOT: LaTeX picture with Postscript
\begingroup
\makeatletter
\providecommand\color[2][]{%
\GenericError{(gnuplot) \space\space\space\@spaces}{%
Package color not loaded in conjunction with
terminal option `colourtext'%
}{See the gnuplot documentation for explanation.%
}{Either use 'blacktext' in gnuplot or load the package
color.sty in LaTeX.}%
\renewcommand\color[2][]{}%
}%
\providecommand\includegraphics[2][]{%
\GenericError{(gnuplot) \space\space\space\@spaces}{%
Package graphicx or graphics not loaded%
}{See the gnuplot documentation for explanation.%
}{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}%
\renewcommand\includegraphics[2][]{}%
}%
\providecommand\rotatebox[2]{#2}%
\@ifundefined{ifGPcolor}{%
\newif\ifGPcolor
\GPcolorfalse
}{}%
\@ifundefined{ifGPblacktext}{%
\newif\ifGPblacktext
\GPblacktexttrue
}{}%
% define a \g@addto@macro without @ in the name:
\let\gplgaddtomacro\g@addto@macro
% define empty templates for all commands taking text:
\gdef\gplbacktext{}%
\gdef\gplfronttext{}%
\makeatother
\ifGPblacktext
% no textcolor at all
\def\colorrgb#1{}%
\def\colorgray#1{}%
\else
% gray or color?
\ifGPcolor
\def\colorrgb#1{\color[rgb]{#1}}%
\def\colorgray#1{\color[gray]{#1}}%
\expandafter\def\csname LTw\endcsname{\color{white}}%
\expandafter\def\csname LTb\endcsname{\color{black}}%
\expandafter\def\csname LTa\endcsname{\color{black}}%
\expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}%
\expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}%
\expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}%
\expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}%
\expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}%
\expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}%
\expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}%
\expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}%
\expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}%
\else
% gray
\def\colorrgb#1{\color{black}}%
\def\colorgray#1{\color[gray]{#1}}%
\expandafter\def\csname LTw\endcsname{\color{white}}%
\expandafter\def\csname LTb\endcsname{\color{black}}%
\expandafter\def\csname LTa\endcsname{\color{black}}%
\expandafter\def\csname LT0\endcsname{\color{black}}%
\expandafter\def\csname LT1\endcsname{\color{black}}%
\expandafter\def\csname LT2\endcsname{\color{black}}%
\expandafter\def\csname LT3\endcsname{\color{black}}%
\expandafter\def\csname LT4\endcsname{\color{black}}%
\expandafter\def\csname LT5\endcsname{\color{black}}%
\expandafter\def\csname LT6\endcsname{\color{black}}%
\expandafter\def\csname LT7\endcsname{\color{black}}%
\expandafter\def\csname LT8\endcsname{\color{black}}%
\fi
\fi
\setlength{\unitlength}{0.0500bp}%
\ifx\gptboxheight\undefined%
\newlength{\gptboxheight}%
\newlength{\gptboxwidth}%
\newsavebox{\gptboxtext}%
\fi%
\setlength{\fboxrule}{0.5pt}%
\setlength{\fboxsep}{1pt}%
\begin{picture}(3400.00,3174.00)%
\gplgaddtomacro\gplbacktext{%
\csname LTb\endcsname%%
\put(594,652){\makebox(0,0)[r]{\strut{}-10}}%
\put(594,1190){\makebox(0,0)[r]{\strut{}-5}}%
\put(594,1728){\makebox(0,0)[r]{\strut{}0}}%
\put(594,2266){\makebox(0,0)[r]{\strut{}5}}%
\put(594,2804){\makebox(0,0)[r]{\strut{}10}}%
\put(789,369){\makebox(0,0){\strut{}-10}}%
\put(1327,369){\makebox(0,0){\strut{}-5}}%
\put(1865,369){\makebox(0,0){\strut{}0}}%
\put(2402,369){\makebox(0,0){\strut{}5}}%
\put(2940,369){\makebox(0,0){\strut{}10}}%
}%
\gplgaddtomacro\gplfronttext{%
}%
\gplbacktext
\put(0,0){\includegraphics{test-plot}}%
\gplfronttext
\end{picture}%
\endgroup
\end{filecontents}
\begin{document}
\input{plot.tex}
\end{document}
Gnuplot 输入
set terminal epslatex size 6cm,5.6cm
set output "test-plot.tex"
set tics out
unset key
set size square
set format x '%g'
set format y '%g'
f(x) = x
plot f(x) with lines
您可以在这里找到要包含的 eps:https://www.dropbox.com/s/0thsdguhje266rr/test-plot.eps?dl=0
根据日志文件,这些是每个编译方法加载的关键包:
LuaTeX,版本 0.95.0 (TeX Live 2016)
- luatex85 2016/06/15 v1.4
- shellesc 2016/06/07 v0.02a
- graphicx 2014/10/28 v1.0g
- 图形 2016/10/09 v1.0u
- luatex.def 2017/01/12 v0.01h
LuaTeX,版本 1.0.4 (TeX Live 2017)
- luatex85 2016/06/15 v1.4
- shellesc 2016/06/07 v0.02a
- graphicx 2017/06/01 v1.1a
- 图形 2017/06/25 v1.2c
- luatex.def 2017/06/24 v1.0f
顺便说一句,pdfLaTeX 可以很好地编译 2017 和 106 TeX Live 版本:
pdfTeX,版本 3.14159265-2.6-1.40.18(TeX Live 2017)
- luatex85 2016/06/15 v1.4
- shellesc 2016/06/07 v0.02a
- graphicx 2017/06/01 v1.1a
- 图形 2016/10/09 v1.0u
- pdftex.def 2017/06/24 v1.0g
答案1
抱歉,应用于 pdftex.def 的修复似乎没有复制到 luatex.def
\DeclareGraphicsExtensions{.pdf,.png}
在文档中应该修复它,或者
只需在第 485 行%
之后添加一个,我已经在 github 上更新了文件,将会进行 ctan 更新以供进一步测试。JB2
luatex.def