我正在编写多个文档,例如paper.tex
,report.tex
等book.tex
。它们都有不同的格式,例如单列/双列、横向/纵向等。
所有这些(类似包装器)文档 tex 文件都包含一个名为“ content.tex
”的核心内容文件。因此,此内容会根据包装器 tex 文件声明的不同格式进行格式化。
问题是:我希望里面有一个表格content.tex
,它只以单列全纸宽度和横向模式显示,而不管包装器 tex 的设置。
可能的?
尝试过:在此表之前,我可以说\onecolumn
。但在表的末尾,我不知道是否将其重置为\onecolumn
或\twocolumn
因为content.tex
不知道是谁包括它。
答案1
单/双柱检测
LaTeX 维护着一个\if@twocolumn
用于切换两列模式的开关。在索引的定义中可以找到一个检测列模式并恢复先前设置的示例,例如article.cls
:
\newenvironment{theindex}{%
\if@twocolumn
\@restonecolfalse
\else
\@restonecoltrue
\fi
\twocolumn[\section*{\indexname}]%
...
}{%
\if@restonecol
\onecolumn
\else
\clearpage
\fi
}
以类似的方式,可以定义一个环境来将其内容设置为一列模式:
\makeatletter
\newenvironment{one-column}{%
\if@twocolumn
\def\restorecolumnmode{\twocolumn\relax}%
\onecolumn
\else
\def\restorecolumnmode{\clearpage}%
\fi
}{%
\restorecolumnmode
}
检测landscape
设置
如果landscape
设置了选项(类选项、包geometry
,...),则纸张宽度大于纸张高度,可以通过比较来检测\ifdim
:
\ifdim\paperwidth>\paperheight
% landscape setting
\else
% portrait setting
\fi