Tikz:使用 \draw[opacity = 0] 绘制线条会生成可见线条的 .dvi 文件

Tikz:使用 \draw[opacity = 0] 绘制线条会生成可见线条的 .dvi 文件

这是我的 MWE:

\documentclass[11pt]{article}
\usepackage{pgf,tikz}

\begin{document}
\begin{figure}
   \begin{tikzpicture}
       % Bounding box coordinates
       \coordinate (q) at (1,  0);
       \coordinate (t) at (1,  8);
       \coordinate (r) at (12, 8);
       \coordinate (s) at (12, 0);

       % Draw the (invisible) bounding box
       \draw[opacity = 0] (q) -- (t) -- (r) -- (s) -- (q);
   \end{tikzpicture}
\end{figure}
\end{document}

上面的 MWE 使用 进行编译pdflatex以生成一个空白页,但如果我使用 编译为 .dvi latex,则生成的 dvi 文件将显示矩形!我该如何解决这个问题?

(我需要一个不可见的边界框来绘制一个由 4 个部分组成的图形,其中一些框是可见的,因此我实际上没有选择完全删除该框。此外,由于非技术原因,我需要 .dvi 文件也能正确呈现!)

答案1

正如评论中所述,DVI 和 TikZ 并不总是能很好地协同工作。这里的问题在于opacity,因为 DVI 不支持透明度。评论中发布了几种解决方法。

然而,你提出的问题是一个XY问题。指定明确的边界框而不绘制它的正确方法是使用命令\useasboundingbox,或者等效地\path[use as bounding box]

代码中的任何一行注释掉的行(您指定的大部分路径实际上是不必要的)都会提供与我未注释的最后一行相同的边界框:

\documentclass{article}
\usepackage{tikz}

\begin{document}
x% just to illustrate width
\begin{tikzpicture}
  % Bounding box coordinates
  \coordinate (q) at (1,  0);
  \coordinate (t) at (1,  8);
  \coordinate (r) at (12, 8);
  \coordinate (s) at (12, 0);

  % Draw the (invisible) bounding box
%  \useasboundingbox (q) -- (t) -- (r) -- (s) -- (q);
%  \useasboundingbox (q) -- (t) -- (r) -- (s) -- cycle;
%  \useasboundingbox (q) -- (t) -- (r) -- (s);
%  \useasboundingbox (q) -- (t) -- (r) -- cycle;
%  \useasboundingbox (q) rectangle (r);
%  \useasboundingbox (q) -- (r);
  \path[use as bounding box] (q) -- (r);
\end{tikzpicture}%
x% just to illustrate width
\end{document}

相关内容