我想在一些文本周围绘制矩形框,并使用箭头从其中一个文本指向另一个文本。但是,一个文本有点长,所以我还想将其分成两行。我有以下内容:
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{positioning,shapes}
\begin{document}
\begin{frame}{Test}
\begin{columns}
\begin{column}{0.50\textwidth}
One side
\begin{tikzpicture}[rectangle,draw=cyan,thick]
\node (pq1) {Hard problems};
\node [dashed,below=of pq1] (pq2) {Construct new problems};
\node [below=of pq2] (pq3) {Framework fail};
\node [dashed,below=of pq3] (pq4) {Analyze against \\new adversaries};
\path[->,thick,cyan] (pq1) edge (pq2)
(pq3) edge (pq4);
\end{tikzpicture}
\end{column}
\begin{column}{0.50\textwidth}
Other Part
\end{column}
\end{columns}
\end{frame}
\end{document}
重点是只绘制了箭头,但没有在文本周围绘制矩形。我希望其中两个是实线,另外两个是虚线。另外,如何在 TikZ 节点中将文本拆分成两行?
答案1
像这样:
对于节点,您需要定义选项align
,并且对于您的情况,我也建议您text width=...
。我假设所有节点的形状都是相同的,因此我为所有节点定义了一个通用样式:
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{frame}{Test}
\begin{columns}
\begin{column}{0.50\textwidth}
One side
\begin{center}
\begin{tikzpicture}[
every node/.style = {shape=rectangle,% is not necessary, default node's shape is rectangle
draw=cyan, semithick,
text width=0.8\linewidth,
align=center}
]
\node (pq1) [draw] {Hard problems};
\node (pq2) [dashed,below=of pq1] {Construct new problems};
\node (pq3) [below=of pq2] {Framework fail};
\node (pq4) [dashed,below=of pq3] {Analyze against \\new adversaries};
%
\path[->,thick,cyan] (pq1) edge (pq2)
(pq3) edge (pq4);
\end{tikzpicture}
\end{center}
\end{column}
\begin{column}{0.50\textwidth}
Other Part
\end{column}
\end{columns}
\end{frame}
\end{document}
如果您希望拥有不同的节点形状宽度,以适应包含的文本,那么请删除text width=...
定义中的选项every node
。