我试图在表格环境中为我的 tkz-euclide 绘图绘制线段的尺寸。由于某种原因,这会导致错误。应该注意的是,我在表格环境中包含 tkz-euclide 绘图时没有任何问题。仅当使用 dim 参数时才会出现错误。
这是一个导致错误的最小示例:
\documentclass[a4paper, 11pt]{article}
\usepackage{tkz-euclide}
\begin{document}
\begin{tabular}{c}
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(5,0){B}
\tkzDrawPoints(A,B)
% Excluding the following line removes the error
\tkzDrawSegment[dim={$5\mathrm m$, 12pt,}](A,B)
\end{tikzpicture}
\end{tabular}
\end{document}
但是,在表格环境之外,相同的 tikz 绘图也可以正常工作。例如,以下代码可以正常工作:
\documentclass[a4paper, 11pt]{article}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(5,0){B}
\tkzDrawPoints(A,B)
\tkzDrawSegment[dim={$5\mathrm m$, 12pt,}](A,B)
\end{tikzpicture}
\end{document}
除了表格环境之外,我还尝试了 tabu 和 tabularx——错误仍然存在。
什么可能导致此错误?我该如何避免?理想情况下,我想继续使用 tkz-euclide,而不是定义自己的“dim”等效项,但欢迎任何解决方案!
谢谢!
答案1
什么原因导致了这个错误?tkz-euclide
嗯,与 的一些干扰tabular
可能不值得调查(除非您是 的维护者tkz-euclide
)。
如何规避这个问题?我发现,在大多数此类干扰情况下,以下方法是有效的:
定义一个
\newsavebox
,例如\newsavebox\mydrawing
用于
\savebox
将干扰外部环境的内容排版到此框中,例如,\savebox\mydrawing{\begin{tikzpicture}...\end{tikzpicture}}
使用包装盒代替原有内容,例如,
\usebox\mydrawing
\documentclass{article}
\usepackage{tkz-euclide}
\newsavebox\mydrawing
\savebox\mydrawing{%
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(5,0){B}
\tkzDrawPoints(A,B)
\tkzDrawSegment[dim={$5\mathrm m$, 12pt,}](A,B)
\end{tikzpicture}%
}
\begin{document}
before
\begin{tabular}{c}
above\\
\usebox\mydrawing\\
below
\end{tabular}
after
\end{document}