例如,可以使用“multido”包重复某些文本\multido
,也可以使用“rotating”包的环境旋转文本sideways
。将两者结合起来即可。但是,当尝试将文本居中时,还会出现以下错误消息:
Somethings's wrong--perhaps a missing \item.
我不知道列表会发挥作用...这里是 MWE:
\documentclass{article}
\usepackage{rotating,multido}
\begin{document}
%using center environment
\begin{sideways}
\multido{\i=0+1}{3}{%
\begin{center}This is some centered text...\end{center}
}
\end{sideways}
%using \centering
\begin{sideways}
\centering
\multido{\i=0+1}{3}{%
This is some centered text...\\ \bigskip
}
\end{sideways}
\end{document}
问题是什么?
答案1
在这种情况下,问题在于(隐藏在和\addvspace
的定义中)在 vmode 之外被调用,如下面的简单示例所示:center
\centering
\documentclass{article}
\usepackage{rotating}
\begin{document}
\begin{sideways}
\addvspace{3em}
This is some centered text...
\end{sideways}
\end{document}
此代码会触发“著名”的错误:
! 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.7 \addvspace{3em}
为了证实这一点,一个简单的条件测试可以帮助:
\documentclass{article}
\usepackage{rotating}
\begin{document}
\begin{sideways}
\ifvmode a\else b\fi
\end{sideways}
\end{document}
上面的代码,排版为“b”,所以我们不处于v模式。
这是因为sideways
(并且rotate
和turn
)使用\hbox
来收集材料;例如,在 spinning.sty 中可以发现:
\def\sideways{%
\Grot@setangle{90}%
\setbox\z@\color@hbox\ignorespaces}
进而
\AtBeginDocument{%
\providecommand\color@hbox{\hbox\bgroup}
}
您可以使用以下方法预防该问题\parbox
:
\documentclass{article}
\usepackage{rotating,multido}
\begin{document}
\begin{sideways}
\parbox{\textheight}{%
\multido{\i=0+1}{3}{\centering This is some centered text... \\}%
}
\end{sideways}
\end{document}