我如何重新创建此 pdf 中给出的代码示例?逐字逐句地显示垂直线?

我如何重新创建此 pdf 中给出的代码示例?逐字逐句地显示垂直线?

我指的是链接的pdf这里

具体来说,如何在第一页重新创建此部分?

在此处输入图片描述

我猜它以某种方式使用了 verbatim 环境,但我怎样才能将这些垂直线也放进去呢?提前致谢。

答案1

使用我的答案带垂直线的伪代码,修改后规则颜色变为灰色。

\documentclass{article}
\usepackage{xcolor}
\def\lindent{.5ex}
\def\rindent{2ex}
\def\rthk{1.5pt}
\newcommand\block[3]{\unskip%
  \noindent\parbox[b]{\textwidth}{\strut\ignorespaces#1\strut}\\
  \setbox0=\hbox{\parbox[b]{\textwidth}{\strut\ignorespaces#2\strut}}%
  \hspace*{\lindent}\textcolor{gray!50}{\rule[-.5\dp\strutbox]{\rthk}{\ht0}}%
  \hspace{\rindent}\box0\\\parbox[b]{\textwidth}{\strut\ignorespaces#3\strut}%
\ignorespaces}
\begin{document}
\ttfamily
\block{
def foo():
}{
  \block{
  if something
  }{
    do something\\
    do more things
  }{
  do something last}
}
{}
\end{document}

在此处输入图片描述

答案2

基于的快速解决方案algorithm2e 的软件包文档

\documentclass{standalone}
\usepackage{algorithm2e}

\begin{document}
\begin{algorithm}[H]
  \SetStartEndCondition{ }{}{}%
  \SetKwProg{Fn}{def}{\string:}{}
  \SetKwIF{If}{ElseIf}{Else}{if}{:}{elif}{else:}{}%
  \SetKwFunction{FnFoo}{foo}
  \DontPrintSemicolon
  \SetAlgoLined

  \Fn{\FnFoo{}}{
    \If {something}{
      \FuncSty{Do} something\;
      \FuncSty{Do} something\;
    }
    \FuncSty{Do} something last\;
  }
\end{algorithm}
\end{document}

产生使用 algorithm2e 创建的算法

相关内容