我在编译以下最小示例时遇到问题:
\documentclass{article}
\usepackage{listings}
\usepackage{tcolorbox}
\begin{document}
\begin{center}
\begin{tcolorbox}
\begin{lstlisting}
alert(123);
\end{lstlisting}
boom
\begin{enumerate}
\item one
\item two
\end{enumerate}
\end{tcolorbox}
\end{center}
\end{document}
我无法减少任何东西,也不知道问题是否出在列表、tcolorbox、枚举或中心。(也许是它们全部在一起)
错误是
! LaTeX Error: Something's wrong--perhaps a missing \item.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.15 ^^I^^I^^I\item o
ne
它(像大多数 LaTeX 错误一样)不是很有用……
答案1
除了增加不必要的垂直空间外,这还\begin{center}
令人困惑。要么在前面添加,要么按照@PeterGrill 在评论中的建议 更好地使用。tcolorbox
\leavevmode
\begin{tcolorbox}
{\centering.... }
\documentclass{article}
\usepackage{listings}
\usepackage{tcolorbox}
\begin{document}
\begin{center}\leavevmode
\begin{tcolorbox}
\begin{lstlisting}
alert(123);
\end{lstlisting}
boom
\begin{enumerate}
\item one
\item two
\end{enumerate}
\end{tcolorbox}
\end{center}
\end{document}
答案2
更新:消除边界。
在我看来,从您对问题的回答来看,您不希望列表位于可见的框中。与 tcolorbox 一样,一切都是可配置的,只需进行设置即可。
- 使用该
skin=empty
参数时,什么都不会绘制:所以没有边框(参见第 237 页)。 - 使用参数
lowerbox=ignored
不显示框的下部(参见第 24 页)。
因此,也可以设置列表内容和框其余部分之间的距离,但我没有这样做。
\documentclass{article}
%\usepackage{listings}
\usepackage[most]{tcolorbox}
\begin{document}
\begin{center}
\begin{tcolorbox}
\begin{tcblisting}{skin=empty,lowerbox=ignored}
alert(123);
\end{tcblisting}
boom
\begin{enumerate}
\item one
\item two
\end{enumerate}
\end{tcolorbox}
\end{center}
\end{document}
旧答案:
可以使用dispListing
tcolorboxdocumentation
库的环境(参见 4.14 手册第 465 页)。
\documentclass{article}
%\usepackage{listings}
\usepackage[most]{tcolorbox}
\tcbuselibrary{documentation}
\begin{document}
\begin{center}
\begin{tcolorbox}
\begin{dispListing}
alert(123);
\end{dispListing}
boom
\begin{enumerate}
\item one
\item two
\end{enumerate}
\end{tcolorbox}
\end{center}
\end{document}
使用 www.DeepL.com/Translator 翻译
答案3
感谢@AboAmmar、@PeterGrill 和@egreg 设法找出错误根源,即中心环境。
为了使居中,tcolorbox
我们可以使用它的center
选项:
\documentclass{article}
\usepackage{listings}
\usepackage{tcolorbox}
\begin{document}
\noindent\hrulefill % this rule is added to show that the box is actually centered
\begin{tcolorbox}[width=0.75\linewidth,center]
\begin{lstlisting}
alert(123);
\end{lstlisting}
boom
\begin{enumerate}
\item one
\item two
\end{enumerate}
\end{tcolorbox}
\noindent\hrulefill
\end{document}