使用“+(1,1)”样式符号时,TikZ 从 3.0.1 到 3.1.9a 的向后兼容性被破坏

使用“+(1,1)”样式符号时,TikZ 从 3.0.1 到 3.1.9a 的向后兼容性被破坏

此 TikZ 代码在 3.0.1 和 3.1.9a 版本中的呈现方式不同:

\documentclass{article}
\usepackage{tikz}
\begin{document}
My TikZ version is \pgfversion.
\tikz{\draw (0,0) to [out=up, in=up] +(1,0) to +(0,1);}
\end{document}

以下是输出示例:

在此处输入图片描述在此处输入图片描述

这对我来说是个问题,因为我有一整本书都是用这样的 TikZ 代码编写的,而现在在现代版本的 TikZ 中它无法正确渲染。我的书包含数百张图片。我该怎么做才能让我的图片按原计划编译?

我可以猜测为什么会发生这种情况,但这并不重要,因为这本书已经写好了。

答案1

您可以通过简单地禁用内部宏来恢复旧的行为(我认为这是不正确的)\tikz@updatenextfalse,参见https://github.com/pgf-tikz/pgf/commit/8fb44f01cb320279a0e49dbd409a127c472f1903

除非是为了旧文档的向后兼容性,否则我不明白为什么有人会想回到旧的行为。请注意,LaTeX 格式本身在过去几年中也经历了许多重大变化。不要将 Knuth 原始 TeX 引擎的稳定性保证与生态系统的其他部分混为一谈。

\documentclass{article}
\usepackage{tikz}
\makeatletter
\tikz@updatenexttrue % probably not necessary
\let\tikz@updatenextfalse\relax
\makeatother
\begin{document}
My TikZ version is \pgfversion.
\tikz{\draw (0,0) to [out=up, in=up] +(1,0) to +(0,1);}
\end{document}

在此处输入图片描述

相关内容