如何逐字居中

如何逐字居中
\begin{figure}
\centerline
\begin{verbatim}
for (int a = 0; a < 10; a++)
  for (int b = 0; b < 10; b++) 
    ...
\end{verbatim}
\caption{C++ code}
\end{figure}

我希望图形居中,因此我添加了\centerline。但这会导致错误。我该如何修复?

答案1

您可以使用fancyvrb包装特点;在本例中,BVerbatim包装逐字材料的环境:

\documentclass{article}
\usepackage{fancyvrb}

\begin{document}


\begin{figure}
\centering
\begin{BVerbatim}
for (int a = 0; a < 10; a++)
  for (int b = 0; b < 10; b++) 
    ...
\end{BVerbatim}
\caption{C++ code}
\end{figure}
\noindent A\hrulefill B% just for visual guide

\end{document}

在此处输入图片描述

答案2

以下解决方案基于包varwidth

\documentclass{article}
\usepackage{varwidth}

\begin{document}

\begin{figure}
\centering
\begin{varwidth}{\linewidth}
\begin{verbatim}
for (int a = 0; a < 10; a++)
  for (int b = 0; b < 10; b++)
    ...
\end{verbatim}
\end{varwidth}
\caption{C++ code}
\end{figure}

\end{document}

结果

在包的帮助下verbatim这也可以放入新的环境定义中:

\documentclass{article}
\usepackage{varwidth}
\usepackage{verbatim}

\newenvironment{centerverbatim}{%
  \par
  \centering
  \varwidth{\linewidth}%
  \verbatim
}{%
  \endverbatim
  \endvarwidth
  \par
}

\begin{document}

\begin{figure}
\begin{centerverbatim}
for (int a = 0; a < 10; a++)
  for (int b = 0; b < 10; b++)
    ...
\end{centerverbatim}
\caption{C++ code}
\end{figure}

\end{document}

相关内容