使用 pgf-axis-environment 中的宏算法来使用 TeXLive2016 指定 x-ticks

使用 pgf-axis-environment 中的宏算法来使用 TeXLive2016 指定 x-ticks

问题:我想使用 TeXLive2016 兼容性编译下图。我知道这有点过时了,但显然 arxiv 使用了它。MWE 使用 TeXLive2019 进行编译,但当我切换到 TeXLive2016 时则不行(例如在 Overleaf 上,您可以轻松更改 TeXLive 版本)。我已将错误定位为由 axis 环境中的 xtick 定义引起的。不知何故,这里的宏没有正确解析,而在其他地方它们都解析得很好。

引发的错误是:

!PGF 数学包错误:无法将输入“0.7+1.0”解析为浮点数,抱歉。无法读取的部分接近“+1.0”。请参阅 PGF 数学包文档以了解解释。输入 H 可立即获得帮助。...
l.49 \end{axis}

我尝试过的:

  • 使用 xfp 包 -> 兼容性问题
  • 使用 fp 包 -> 无法构建评估列表\FPeval
  • 为正确的 x-tick 位置创建样式 -> 没有解决问题
  • 在 xtick-> 上使用 /.expanded 没有解决问题
  • \pgfmathparse与 -> 结合使用\pgfmathresult,在 TeXLive2016 中不可用

相关问题:以下是我认为与我的问题相关的问题,尽管我还无法从中得出答案。

梅威瑟:

\documentclass[preview]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{graphics}
%
\usepackage{tikz}%drawings like geometries
\usetikzlibrary{calc,matrix,positioning}
\usetikzlibrary{decorations.pathmorphing}
%
\usepackage{pgfplots}
\pgfplotsset{
    ,compat=1.12
    }
%----------------------------------------
\begin{document}
%
\begin{figure}[ht]
    \centering
    \begin{tikzpicture}
    %Define Parameters
    \newcommand\tmin{0.7}
    \newcommand{\dtmax}{\dtstart}
    \newcommand{\dtstart}{1.0}
    \newcommand{\T}{2.0}
    \newcommand{\zmin}{3.0}
    \newcommand{\dvstart}{0.8}
    \newcommand{\vstart}{1.0}
    \newcommand{\zmax}{9.0}
    \newcommand{\g}{0.6}
    \newcommand{\keff}{1.0}
    %
    \begin{axis}[
        xlabel={t}, xlabel style={at={(1,0)}, anchor=west},
        ylabel={z (m)}, ylabel style={rotate=-90,at={(0,1)}, anchor=south},
        xmin=0.0, xmax=\tmin+\dtstart+2*\T+2*\dtmax,
        xtick={0,\tmin,\tmin+\dtstart,\tmin+\dtstart+\T,\tmin+\dtstart+\T+\T,\tmin+\dtstart+\T+\T+\dtmax},%
        xticklabels={$0$,$t_{start}$,$t_0$,$t_0+T$,$t_0+2T$,$t_{end}$},%
        ymin=0, ymax=\zmax,
        axis lines = left,
        y=1.cm,
        x=1.cm,
        ytick={0,1,...,12},
        legend pos=north west,
        %grid=both,
        ymajorgrids=true,
        grid style=dashed,
        ]
    \end{axis}
        %Laserbeams
        \draw[decorate, decoration = snake, very thick, red, opacity=0.5]
        ({\tmin + \dtstart},0) to ({\tmin + \dtstart},{.9*\zmax}) node[above] {$\pi/2$};
        \draw[decorate, decoration = snake, very thick, red, opacity=0.5,] 
        ({\tmin + \dtstart+\T},0) to ({\tmin + \dtstart + \T},{.9*\zmax}) node[above] {$\pi$};
        \draw[decorate, decoration = snake, very thick, red, opacity=0.5,] 
        ({\tmin + \dtstart + 2*\T},0) to ({\tmin + \dtstart + 2*\T},{.9*\zmax}) node[above] {$\pi/2$};
    \end{tikzpicture}
\end{figure}
\end{document}

相关内容