在下面的例子中,第一个\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
不会开始段落,而是直接将自身添加到当前垂直或水平列表中,从而看到结果。