并行显示代码块

并行显示代码块

期望输出

我正在尝试从一篇论文中复制一个示例,该示例包含两个彼此相邻且由符号分隔的代码片段,如图所示。但我不知道该怎么做。它看起来像逐字代码,但这些东西很脆弱。

如果它在 Beamer 中有效,则可以获得加分,但是任何可以解决这个问题的线索都会受到赞赏。

答案1

使用fancyvrb

\documentclass{article}
\usepackage{fancyvrb}

\begin{document}

\begin{BVerbatim}[baseline=c]
local r1;
x  := 1;
r1 := y;
if (r1 = 0) then
  critical region
\end{BVerbatim}
\quad$\parallel$\quad
\begin{BVerbatim}[baseline=c]
local r2;
y  := 1;
r2 := x;
if (r2 = 0) then
  critical region
\end{BVerbatim}

\end{document}

这也是开箱即用的beamer,唯一需要注意的是使用

\begin{frame}[fragile]

在此处输入图片描述

答案2

Beamer 柱是你的朋友!

\documentclass{beamer}

\begin{document}

\begin{frame}[fragile]
\begin{columns}[onlytextwidth]
\begin{column}{.4\textwidth}
\begin{verbatim}
local r1
x := 1
\end{verbatim}
\end{column}
\begin{column}{.05\textwidth}
\rotatebox{90}{=}
\end{column}
\begin{column}{.4\textwidth}
\begin{verbatim}
local r2
y := 1
\end{verbatim}
\end{column}
\end{columns}
\begin{center}
Dekker's Mutal Exclusion Algorithm
\end{center}
\end{frame} 

\end{document}

答案3

您可以轻松地将算法的内容存储在盒子中,然后以您熟悉的任何结构使用这些盒子(例如tabular,或类似的):

在此处输入图片描述

\documentclass{beamer}

\usepackage{varwidth}

\newsavebox{\leftCode}
\newsavebox{\rightCode}

\begin{document}

\begin{lrbox}{\leftCode}
\begin{varwidth}{\linewidth}
\obeylines\obeyspaces\ttfamily
local r1;
x  := 1;
r1 := y;
if (r1 = 0) then
~~critical region
\end{varwidth}
\end{lrbox}

\begin{lrbox}{\rightCode}
\begin{varwidth}{\linewidth}
\obeylines\obeyspaces\ttfamily
local r2;
y  := 1;
r2 := x;
if (r2 = 0) then
~~critical region
\end{varwidth}
\end{lrbox}

\begin{frame}
  \centering
  \usebox{\leftCode} \quad
  $\parallel$ \quad
  \usebox{\rightCode}

  \bigskip

  (a) Dekker's Mutual Exclusion Algorithm
\end{frame}

\end{document}

相关内容