如何在页面的某个部分周围绘制一个框?

如何在页面的某个部分周围绘制一个框?

我正在使用 a0poster 包创建尺寸为 90x100 cm^2 的海报。要将文本放在页面上,我使用\textblock命令。现在,我想将几​​个块组合在一起。显而易见的选择是使用tikz。然而,这失败了。例如,考虑以下

\begin{tikzpicture}
  \node (a) at (0,0) {a};
  \node (b) [left=50cm of a] {b};
  \node (c) [right=10cm of a] {c};
\end{tikzpicture}

a当我在文本块内应用它时,它不会c出现在页面上。当我在文本块外使用它时,节点位置会以不可预测的方式发生变化。如果我尝试使用

\begin{tikzpicture}
  \node (a) at (current page) {a};
  \node (b) [left=50cm of a] {b};
  \node (c) [right=10cm of a] {c};
\end{tikzpicture}

结果基本相同,主要特点是位置不是恒定的。事件使用current page.center不是恒定的,这对我来说是一种缓冲。

那么,我如何在海报上的两个定点之间画一条线呢?

答案1

我认为这并不复杂。您必须使用适当的坐标和remember picture,overlay选项:

\documentclass{a0poster}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{blindtext}
\begin{document}
\begin{tikzpicture}[remember picture,overlay]
\draw[red,line width=5pt] (20,-20) -- (40,-20);  %% one line
\draw[green,line width=5pt] (50,-40) -- (50,-80);  %% another line
\draw[blue,line width=5pt] ($(current page.north west)+(40cm,-50cm)$) -- ($(current page.north west)+(80cm,-50cm)$);  %% one more line
\end{tikzpicture}
\Blinddocument
\end{document}

在此处输入图片描述

另一个例子:

\documentclass{a0poster}
\usepackage{tikz}
\usetikzlibrary{calc,positioning}
\usepackage{blindtext}
\begin{document}
\begin{tikzpicture}[remember picture,overlay]
  \node (a) at ($(current page.north west)+(90cm,-50cm)$) {a};
  \node (b) [left=50cm of a] {b};
  \node (c) [right=10cm of a] {c};
  \draw[red,line width=5pt] (a) -- (b);  %% one line
  \draw[green,line width=10pt] (a) -- (c);  %% one line
\end{tikzpicture}
\Blinddocument
\end{document}

在此处输入图片描述

相关内容