如何在横向环境中重复居中文本?

如何在横向环境中重复居中文本?

例如,可以使用“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(并且rotateturn)使用\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}

在此处输入图片描述

相关内容