在我的文档中,我使用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}