Beamer 列无法对齐铸造代码和 TikZ 图表

Beamer 列无法对齐铸造代码和 TikZ 图表

我正在尝试创建一个两列的 Beamer 幻灯片,其中第一列显示简短的代码列表,第二列显示 TikZ 图表。

不幸的是,尽管使用了[t]位置说明符和\begin{columns}指令\columns,但生成的代码列表还是被推到了幻灯片的底部。理想情况下,我希望代码与图表的顶部对齐。

LaTeX代码如下:

\documentclass{beamer}
\usepackage{minted}
\usepackage{hyperref}
\usepackage{tikz}
\usepackage{verbatim}

\usetheme{CambridgeUS}

\usetikzlibrary{calc,positioning,shapes,shadows,arrows}

\usemintedstyle{default}
\definecolor{mintedbg}{rgb}{0.8,0.8,0.8}
\newminted{cpp}{bgcolor=mintedbg}
\newminted{make}{bgcolor=mintedbg}

\begin{document}

\begin{frame}[fragile]
\frametitle{Pointers}
\begin{columns}[t]
\column[t]{0.25\paperwidth}
\begin{cppcode}
int a = 5;
int * ptr = &a; 
\end{cppcode}
\column[t]{0.7\paperwidth}
\begin{tikzpicture}
\tikzstyle{r}=[rectangle, outer sep=0pt, inner sep=0pt, minimum width=2.5cm, minimum height=0.5cm, draw=black!100, fill=blue!20]
\tikzstyle{textr}=[rectangle, outer sep=0pt, inner sep=0pt, minimum width=2.5cm, minimum height=0.5cm, draw=black!100]
\matrix[draw=black!100, row sep=1pt, column sep=1pt]
{
\node[textr] {Address}; \pgfmatrixnextcell \node[textr] {Data Value}; \pgfmatrixnextcell \node[textr] {Notes}; \\
\node[r, name=addr1] {0xFFFFFFA0}; \pgfmatrixnextcell \node[r, name=data1] {5}; \pgfmatrixnextcell \node {int a=5}; \\
\node[r, name=addr2] { }; \pgfmatrixnextcell \node[r, name=data2] { }; \pgfmatrixnextcell \node {}; \\
\node[r, name=addr3] { }; \pgfmatrixnextcell \node[r, name=data3] { }; \pgfmatrixnextcell \node {}; \\
\node[r, name=addr4] { }; \pgfmatrixnextcell \node[r, name=data4] { }; \pgfmatrixnextcell \node {}; \\
\node[r, name=addr5] {0xFFFFFFB0}; \pgfmatrixnextcell \node[r, name=data5] {0xFFFFFFA0}; \pgfmatrixnextcell \node {int * ptr=a;}; \\
\node[r, name=addr6] { }; \pgfmatrixnextcell \node[r, name=data6] { }; \pgfmatrixnextcell \node {}; \\
\node[r, name=addr7] { }; \pgfmatrixnextcell \node[r, name=data7] { }; \pgfmatrixnextcell \node {}; \\
\node[r, name=addr8] { }; \pgfmatrixnextcell \node[r, name=data8] { }; \pgfmatrixnextcell \node {}; \\
\node[r, name=addr9] { }; \pgfmatrixnextcell \node[r, name=data9] { }; \pgfmatrixnextcell \node {}; \\
};
\draw[line width=2pt, ->] (data5.north) .. controls (data3.north) and (addr3.south) .. (addr1.south);
\end{tikzpicture}
\end{columns}
\end{frame}

\end{document}

答案1

您必须将图片的基线设置为图片的顶部:

\begin{tikzpicture}[baseline=(current bounding box.north)]

通常,tikz 图片的基线设置为底部,但 minted 似乎将其基线设置为顶部,从而导致您遇到的问题。

相关内容