X–Y
由于我的海报是关于自稳定算法的(坦率地说,我对此没有太多适合海报的内容),我想出了一个很酷的布局想法。我想block
在页面上设置许多 s 并绝对定位它们,手动将任意块与边缘连接起来以形成图形。
我的尝试
% arara: xelatex
% arara: xelatex
\documentclass{beamer}
\usepackage[absolute,overlay]{textpos}
\usepackage[orientation=portrait,width=36in,height=44in]{beamerposter}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\beamertemplategridbackground[1in]
\newenvironment{node}[4]{%
\begin{textblock*}{#2}(#3,#4)%
\begin{block}{#1}%
\tikzmark{#1}\ignorespaces
}{%
\end{block}
\end{textblock*}
}
\begin{document}
\begin{frame}
\begin{node}{Introduction}{4in}{3in}{4in}
What is a self-stabilizing algorithm?
Example from paper.
\end{node}
\begin{node}{Motivation}{10in}{14in}{15in}
blah
\end{node}
\begin{tikzpicture}[remember picture]
\draw[overlay, line width=5mm]
(pic cs:Motivation) -- (pic cs:Introduction);
\end{tikzpicture}
\end{frame}
\end{document}
但是,这毫不奇怪地将标记放在了左上角(文本开始的地方)。我怎样才能让它在垂直和水平方向上都位于块的中心,以便制作出令人信服的图表?
答案1
这是一种不同的方法,不使用 tikzmarks,而是remember as
使用 的功能tcolorbox
。代码如下:
\documentclass{beamer}
\usepackage[absolute,overlay]{textpos}
\usepackage[orientation=portrait,width=36in,height=44in]{beamerposter}
\usepackage{tcolorbox} %new code, tcb definition
\tcbuselibrary{skins}
\newtcolorbox{mybox}[1][]{
enhanced jigsaw,
colback=white,
opacityback=0,
opacityframe=0,
coltitle=blue,
#1
}
\beamertemplategridbackground[1in]
\newenvironment{node}[4]{% %changed code
\begin{textblock*}{#2}(#3,#4)%
\begin{mybox}[title=#1,remember as=#1]%
}{%
\end{mybox}
\end{textblock*}
}
\begin{document}
\begin{frame}
\begin{node}{Introduction}{4in}{3in}{4in}
What is a self-stabilizing algorithm?
Example from paper.
\end{node}
\begin{node}{Motivation}{2in}{14in}{15in}
blah
\end{node}
\begin{tikzpicture}[remember picture]
\draw[overlay, line width=5mm]
(Introduction.center) -- (Motivation.center); %changed code
\end{tikzpicture}
\end{frame}
\end{document}
结果:
我所做的是创建一个自定义 tcolorbox 来代替sblock
内的环境node
。tcolorboxes 标题也可用作remember as
键,因此您可以利用相对于每个 tcolorbox 的标准坐标定位(北、南等)。