graphics-def 中的 luatex.def 可能存在错误

graphics-def 中的 luatex.def 可能存在错误

这可能是针对维护人员和 L​​aTeX3 项目团队的。

我注意到使用 epslatex 终端外部 gnuplot 生成的图表发生了变化。使用 pdfLaTeX 或 LuaLaTeX 0.95(来自 TeX Live 2016)编译的文档没有问题。

但是,当使用 LuaLaTeX 1.0.4 (Tex Live 2017) 编译文档时,轴上的数字以及一般情况下的任何文本都会略微向左移动。我在此处添加了图片来说明该问题:

LuaLaTeX 0.95

LuaLaTeX 0.95 编译镜像

LuaLaTeX 1.0.4

LuaLaTeX 1.0.4 编译镜像

如果您查看 x 轴上的标签以及它们如何与刻度线对齐,差异会最明显。

在测试了 Tex Live 2016 和 2017 的两个版本并加载了所有软件包后,我能够将问题缩小到luatex.def。如果我将luatex.defv0.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 更新以供进一步测试。JB2luatex.def

相关内容