抱歉,标题太模糊了。我已尽力将其表达得尽可能清楚。
在我的文档中,我使用包设置语言选项babel
,为了避免一些麻烦,我还必须加载babel
tikzlibrary。除了我想在最后显示的内容外,我的绘图一切都很好。为了实现这一点,我加载了etoolbox
包并使用\AtEndDocument
宏。此时,pdfLaTeX 给出以下错误:File ended while scanning use of \pgfplots@addplotimpl@expression@curly.
经过一番研究,似乎问题出在french
我使用的选项上。我通过对代码进行故障排除将代码简化为 MWE,但我找不到解决方案。无论是使用shorthanoff{;}
还是使用相关帖子中的其他修复方法。
以下是一些观察结果:
- 评论
babel
tikzlibrary 解决了 MWE 中的问题,但我想保留它,否则我的绘图会出现许多其他错误; - 删除该
french
选项解决了问题,但学生在法语物理方面已经遇到了一些困难。我更喜欢保留该选项 :]
您能帮我找到如何在文档末尾显示 tikzdrawings 吗?
谢谢你的帮助。
M(N)WE:
\documentclass[french]{book}
\usepackage{babel}
\usepackage{etoolbox}
\usepackage{tikz}
\usetikzlibrary{babel}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\chapter{foo}
\section{bar}
You have to solve $P=NP$ problem. Good luck !
\AtEndDocument{%
\subsection*{Resolution of the homework}
Here is my resolution :
\begin{tikzpicture}
\begin{axis}
\addplot {x};
\end{axis}
\end{tikzpicture}
}
\end{document}
答案1
添加\shorthandoff{;}
前 禁用\AtEndDocument
速记。
里面的争论已经太迟了,那时 catcode 已经被冻结了。
答案2
使用 a\savebox
来绘制内部图\AtEndDocument{...}
也可以解决问题,我认为一般情况下都可以。一般情况下,即无论 babel 等如何,\savebox
在将轴放入钩子中时使用 es 可能是一个好主意\AtEndDocument{...}
,另请参阅下面的第二个代码。
\documentclass[french]{book}
\usepackage{babel}
\usepackage{etoolbox}
\usepackage{tikz}
\usetikzlibrary{babel}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\newsavebox\myplotA
\begin{document}
\chapter{foo}
\section{bar}
You have to solve $P=NP$ problem. Good luck !
\begin{lrbox}\myplotA
\begin{tikzpicture}
\begin{axis}
\addplot {x};
\end{axis}
\end{tikzpicture}
\end{lrbox}%
\AtEndDocument{%
\subsection*{Resolution of the homework}
Here is my resolution :
\usebox\myplotA
}
\end{document}
这是解决问题的另一种方法。我对 babel 了解不够多,无法理解为什么这种情况会发生在 babel 上,但这是一种解决此处扩展问题的可能方法。(我发现将轴放入钩子中实际上有点勇敢,\AtEndDocument{...}
但如果您说这通常有效,那么我很高兴相信它。;-)
\documentclass[french]{book}
\usepackage{babel}
\usepackage{etoolbox}
\usepackage{tikz}
\usetikzlibrary{babel}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\chapter{foo}
\section{bar}
You have to solve $P=NP$ problem. Good luck !
\AtEndDocument{%
\subsection*{Resolution of the homework}
Here is my resolution :
\begin{tikzpicture}
\begin{axis}
\edef\temp{\noexpand\addplot {x};}
\temp
\end{axis}
\end{tikzpicture}
}
\end{document}