带程序的图形左缩进

带程序的图形左缩进

在我的文档中,我使用program环境创建了一些伪代码部分(尝试了几种替代方案,但最喜欢那一种,所以我想坚持使用那一种)。现在我只想将左侧的伪代码部分缩进几毫米,使其与正文更加突出,如下所示:

缩进程序

是否有一些简单的方法可以实现这一点(如果可能的话,在全球范围内)?

给定示例的 MWE:

\documentclass[ngerman]{scrbook}
\usepackage{program}
\usepackage{lipsum}
\begin{document}

\begin{figure}
    \begin{program}
        \BEGIN
        a=a+1;
        \END
    \end{program}
    \caption{Example code}
    \label{alg:exampleCode}
\end{figure}

 \lipsum[25]
 \end{document}

答案1

修补程序program使其认为处于按您喜欢的量缩进的列表环境中。

\documentclass{book}
\usepackage{program}
\usepackage{etoolbox}

\usepackage{lipsum}

\pretocmd{\program}{\list{}{\leftmargin3em}\item\relax}{}{}% <---- change 3em to suit
\apptocmd{\endprogram}{\endlist}{}{}

\begin{document}

\begin{figure}
\begin{program}
  \BEGIN
  a=a+1;
  \END
\end{program}

\caption{Example code}
\label{alg:exampleCode}

\end{figure}

\lipsum[25]
\end{document}

在此处输入图片描述

您应该联系软件包作者:代码中充斥着\sf\rm和 等\bf已经过时了二十年的命令。scrbook您会收到警告,这些命令可能在不久的将来从类中删除。

答案2

问题是program环境不能放入 a 中\hbox,因此除非手动操作,否则永远无法“居中”。但是,\vbox如果该解决方案足以满足您的需求,则通过将其放入 a 中,可以将其缩进固定量(此处为 2 英寸)。

只是\makebox[0pt][l]{}为了避免盒子过满,以免\vbox超出右边缘。

此解决方案不会分页,但已位于图形浮动内。这应该不是问题。

\documentclass[ngerman]{scrbook}
\usepackage{program}
\usepackage{lipsum}
\begin{document}

\begin{figure}
\setbox0=\vbox{%
    \begin{program}
        \BEGIN
        a=a+1;
        \END
    \end{program}
}\hspace{2in}\makebox[0pt][l]{\box0}
    \caption{Example code}
    \label{alg:exampleCode}
\end{figure}

 \lipsum[25]
 \end{document}

在此处输入图片描述

相关内容