如何使用基本的 LaTeX 安装使逐字环境居中?

如何使用基本的 LaTeX 安装使逐字环境居中?

我想仅使用基本的 LaTeX 安装以合理的方式将一些逐字文本居中,即包listingsfancyvrb不可用。

\documentclass{article}

\begin{document}

\begin{center}
hello world
\end{center}

\begin{center}
\begin{verbatim}
def main():
    print("hello world")
\end{verbatim}
\end{center}

\end{document}

逐字逐句的文字怎样才能居中?

答案1

如果您真的不想使用任何额外的代码(为什么不呢?我会varwidth在这里使用)那么您可以使用普通代码minipage,但您必须告诉它最长的一行上有多少个字符。

在此处输入图片描述

\documentclass{article}

\begin{document}

\begin{center}
hello world
\end{center}

\begin{center}\ttfamily\sbox{0}{a}%
\begin{minipage}{24\wd0}% 24 characters here
\begin{verbatim}
def main():
    print("hello world")
\end{verbatim}
\end{minipage}
\end{center}

\end{document}

答案2

varwidth会有所帮助,因为它可以缩短行数(否则将使用完整的行数\linewidth):

\documentclass{article}
\usepackage{varwidth}

\begin{document}

\begin{center}
hello world
\end{center}

\begin{center}
\begin{varwidth}{\linewidth}
\begin{verbatim}
def main():
    print("hello world")
\end{verbatim}
\end{varwidth}
\end{center}

\end{document}

结果

如果无法通过使用该包\usepackage,则可以包含其内容:

\makeatletter
... <contents of varwidth.sty without the initial \ProvidesPackage>
\makeatother

例子:

\makeatletter
\newcommand\narrowragged{\rightskip \z@ plus .25\hsize 
  \@rightskip\rightskip \parfillskip\z@ plus .15\hsize
  \sloppy }

\newbox\@vwid@box
...
...
...
\@ifundefined{newcolumntype}{}{%
 \@ifundefined{NC@rewrite@V}{
 \newcolumntype{V}[1]{%
   >{\begin{varwidth}[t]{#1}\narrowragged\let\\\tabularnewline}%
   l%
   <{\@finalstrut\@arstrutbox\end{varwidth}}}
 }{}
}
\makeatother

%开头的注释行不需要复制,只有代码行很重要。幸运的是,该包不使用选项(v0.92),只是\ProvidesPackage在外部无法正常工作,需要省略。

相关内容