如何在两列页面的中心添加一组代码块

如何在两列页面的中心添加一组代码块

希望你一切顺利。我正在尝试在两列页面中添加代码。我正在使用逐字逐句的方式将代码添加到我的论文中。

\documentclass[twocolumn,sigconf,natbib=false]{acmart}
%\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[scale=0.85]{zlmtt}
\usepackage{fancyvrb}

\usepackage{lipsum} % for context

\fvset{
  frame=topline,
  numbers=left,
  framesep=3mm,
  xleftmargin=16pt,
}

\begin{document}

\lipsum[1]

\begin{Verbatim}[label=Original Code]
class C {
  public X x = new X();

  public void f() {
  ...
  }
}
\end{Verbatim}

\begin{Verbatim}[label=duplication code]
class c {
  public X x = new X();

  public void f(){
  ...
  }
}
\end{Verbatim}

\begin{Verbatim}[label=Programming]
class c {
  public X x = new X();

  public void f(){
  ...
  }
}
\end{Verbatim}
\begin{Verbatim}[label=C Code]
class c {
  public X x = new X();

  public void f(){
  ...
  }
}
\end{Verbatim}
\begin{Verbatim}[label= Extract Local]
class c {
  public X x = new X();

  public void f(){
  ...
  }
}
\end{Verbatim}

\lipsum

\end{document}

在此处输入图片描述

它有一些问题,首先我想将块的代码从垂直移动到水平。像这样 在此处输入图片描述

我试过了,但是我无法使用 Verbatim 加粗代码中的某些单词。我想加粗某些单词,同时更改该特定粗体颜色的背景“灰色”,例如单词“class、public、new(粗体 + 背景灰色)”,并且这些代码块应该与标题一起位于页面的开头。我认为,Verbatim 不支持粗体和颜色,可以使用哪些其他方法来执行这些操作?

非常感谢您的帮助。

答案1

要在双列文档中创建一个页面宽度的块,可以使用

\begin{figure*} ... \end{figure*}

但这样东西就会被放在页面顶部。有些包允许将它们放在页面中间(例如 midfloat),但我建议使用包multicol而不是twocolumn选项,以便更好地混合双列和单列。

要使文本部分变粗和/或变色,请Verbatim使用该commandchars=选项。您在此处指定的字符不应出现在文本中,或者如果您需要它们,则必须使用生成这些字符的命令替换它们。

例如,如果您指定commandchars={@[]}但想要在文本中使用[和,您可以定义生成,并生成(因为您不逐字使用数学模式,所以如果您在本地执行此操作是安全的),然后在您的代码中使用和。]\[[\]]@[@]

\documentclass[sigconf,natbib=false]{acmart}
%\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{multicol}
\usepackage[scale=0.85]{zlmtt}
\usepackage{fancyvrb}
\usepackage{color}

\usepackage{lipsum} % for context

\fvset{
  frame=topline,
  numbers=left,
  framesep=3mm,
  xleftmargin=16pt,
}
\newcommand{\red}[1]{\textcolor{red}{#1}}
\begin{document}

\begin{multicols}{2}
  \lipsum[1]
\end{multicols}

\begin{figure}[htp]
\parskip=\baselineskip
\def\[{[}\def\]{]}

  \begin{minipage}{0.48\textwidth}
\begin{Verbatim}[label=Original Code,commandchars={@[]}]
@red[class] C {
  public X x = new X();

  public void f() {
  @[...@]
  }
}
\end{Verbatim}
  \end{minipage}
\hfill
  \begin{minipage}{0.48\textwidth}
\begin{Verbatim}[label=duplication code]
class c {
  public X x = new X();

  public void f(){
  ...
  }
}
\end{Verbatim}
  \end{minipage}

  \begin{minipage}{0.48\textwidth}
\begin{Verbatim}[label=Programming]
class c {
  public X x = new X();

  public void f(){
  ...
  }
}
\end{Verbatim}
  \end{minipage}
\hfill
  \begin{minipage}{0.48\textwidth}
\begin{Verbatim}[label=C Code]
class c {
  public X x = new X();

  public void f(){
  ...
  }
}
\end{Verbatim}
  \end{minipage}

  \begin{minipage}{0.48\textwidth}
\begin{Verbatim}[label= Extract Local]
class c {
  public X x = new X();

  public void f(){
  ...
  }
}
\end{Verbatim}
  \end{minipage}
  
  \caption{Abstraction method}
\end{figure}

\begin{multicols}{2}
  \lipsum
\end{multicols}
\end{document}

在此处输入图片描述

相关内容