列表中的 \hbox 问题

列表中的 \hbox 问题

在下面的例子中,第一个\hbox to \linewidth出现在页面的左侧,尽管它位于itemize环境内。第二个出现在\hspace*{0pt}前面似乎可以消除这个问题。

\documentclass[12pt]{article}
\begin{document}
This is some text which shows the width of the whole page.
We must make sure it is long enough to occupy at least one whole line.
\begin{itemize}
\item 
Inside the itemize environment, the text is not so wide. 
\par
\hbox to \linewidth{\rule{\linewidth}{1pt}}
\par
\hspace*{0pt}\hbox to \linewidth{\rule{\linewidth}{1pt}}
\end{itemize}
\end{document}

这里发生了什么?

答案1

\hbox不是受支持的 LaTeX 命令:您应该\makebox在这种情况下\rule直接使用或。 (同样请注意,虽然 LaTeX \rule可以工作,但 TeX 原语\hrule会以与 相同的方式失败\hbox

在此处输入图片描述

\documentclass[12pt]{article}
\begin{document}
This is some text which shows the width of the whole page.
We must make sure it is long enough to occupy at least one whole line.
\begin{itemize}
\item 
Inside the itemize environment, the text is not so wide. 
\par
\hbox to \linewidth{\rule{\linewidth}{1pt}}
\par
\hspace*{0pt}\hbox to \linewidth{\rule{\linewidth}{1pt}}
\par
\rule{\linewidth}{1pt}
\par
\makebox[\linewidth]{\rule{\linewidth}{1pt}}
\end{itemize}
\end{document}

从技术上讲,问题在于 LaTeX 列表通过调整段落形状来产生缩进,但\hbox不会开始段落,而是直接将自身添加到当前垂直或水平列表中,从而看到结果。

相关内容