TkZ-Euclide:在表格环境中 dim 参数导致错误

TkZ-Euclide:在表格环境中 dim 参数导致错误

我试图在表格环境中为我的 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)。

如何规避这个问题?我发现,在大多数此类干扰情况下,以下方法是有效的:

  1. 定义一个\newsavebox,例如\newsavebox\mydrawing

  2. 用于\savebox将干扰外部环境的内容排版到此框中,例如,

    \savebox\mydrawing{\begin{tikzpicture}...\end{tikzpicture}}
    
  3. 使用包装盒代替原有内容,例如,\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}

相关内容