网站上有很多关于逐字块居中的问题,但尝试过后,他们要么使用 硬编码逐字块的宽度minipage
,要么在逐字块有长行时不起作用。以下是此类错误居中策略的一个示例:
\documentclass[a4paper,10pt]{article}
\usepackage{verbatim}
\makeatletter
\newenvironment{centeredverbatim}{\expandafter\verbatim\centering}{\endverbatim}
\makeatother
\begin{document}
\begin{centeredverbatim}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
\end{centeredverbatim}
\end{document}
我想要的是让块居中,这样如果它不适合页面,它就会溢出到两边,而不仅仅是右侧。
答案1
在这里,我使用verbatimbox
包创建一个逐字的 hbox,它将存储在中\theverbbox
。然后我使用输出该框\centerline
。
注意: 是\strut
为了在逐字内容之前获得适当的垂直间距。该\leavevmode
选项是为了识别空白的逐字行,而不是忽略它。 是\scriptsize
为了使非常宽的行足够小以适合纸张。
\documentclass[a4paper,10pt]{article}
\usepackage{verbatim,verbatimbox,environ,lipsum}
\begin{document}
\lipsum[1]\strut
\begin{verbbox}[\scriptsize\leavevmode]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
Next line in verbatim block
Last line in verbatim block
\end{verbbox}
\centerline{\theverbbox}
\lipsum[2]
\end{document}
答案2
虽然不是完整的答案,但可以让你思考。使用adjustwidth
环境来增加逐字文本的文本宽度。
% wideverbprob.tex SE 615607
\documentclass[a4paper,10pt]{article}
\usepackage{lipsum}
\usepackage{changepage} % make adjustments to (local) page geometry
\usepackage{verbatim}
\makeatletter
\newenvironment{centeredverbatim}{\expandafter\verbatim\centering}{\par\endverbatim}
\makeatother
\begin{document}
Lipsum 1. \textbf{Default text width.} \lipsum[1]
\begin{adjustwidth}{-1in}{-1in} % smaller margins, more text
Li[psum 2. \textbf{Wider text width.} \lipsum[2]
\begin{centeredverbatim}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
\end{centeredverbatim}
Lipsum 1. \lipsum[1]
\begin{center}
\verb!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 !
\end{center}
\begin{center}
Centered text.
\end{center}
\end{adjustwidth}
Lipsum 4. \textbf{Default text width.} \lipsum[4]
\begin{centeredverbatim}
1 2 3 4 5 6
\end{centeredverbatim}
Lipsum5. \lipsum[5]
\end{document}
我发现的其他困难包括:
- 你的
centeredverbatim
在adjustwidth
- (非常)长的居中逐字文本将超出页面宽度。您还想要换行吗?
- 如何在逐字文本中产生换行符?
- 如果您不想要换行符,那么您必须选择足够小的字体大小来容纳您的逐字文本和/或选择足够大的文本宽度来容纳您的长逐字文本。