我正在尝试排版一个包含很长段落的表格。由于工作性质,表格不能分成较小的表格。我希望满足以下条件
- 表格所在的页面必须按用户定义的角度旋转,90 度或 -90 度
上面提供的图片只是使用 PDF 查看器旋转表格的结果。
- 表格必须精确地位于页面的中心(水平和垂直),无论文档类或
geometry
包指定的边距如何。
但是,它必须由用户灵活地更改。这很重要,因为环境width=1.1\textwidth
中的选项adjustbox
会扩大可用于排版表格的区域。因此,我可能想增加表格的大小,但我也希望它保持在页面的中心。
然而,在提供的代码中,很容易看出表格与页面左边缘的边距非常小
emptytablepage
必须对表所在的页面执行该样式
笔记:在提供的代码中,当我删除命令时\clearpage
,表格排版的方向会发生变化。这该如何解释?
我尝试应用如何将某些页面更改为横向/纵向模式。但是,该软件包typearea
似乎改变了页面的总体布局,这对于我的工作来说并不是所希望的(即,我希望页面的几何形状保持完全相同)
\documentclass{book}
\usepackage{ragged2e}
% ========== Caption packages ==========
\usepackage{caption}
% ========== Table packages ==========
\usepackage{tabularx}
% BEGIN_FOLD
\newcolumntype{J}{ >{\arraybackslash\justifying} X }
\def \tabularxcolumn#1{m{#1}}
% END_FOLD
\usepackage{booktabs}
\usepackage{makecell}
\usepackage[flushleft]{threeparttable}
\usepackage[]{rotating}
\usepackage{adjustbox}
% ========== Figures and tables locations packages ==========
\usepackage{float}
\usepackage{blindtext}
\usepackage{fancyhdr}
\fancypagestyle{emptytablepage}{
\renewcommand{\headrulewidth}{0pt}
\fancyhead{}
\fancyfoot{}
}
\pagestyle{emptytablepage}
\begin{document}
\blindtext
\clearpage
\begin{sidewaystable*}[p]
\caption{Classifications of Strategies}
\label{table:strategies_names_definitions}
\centering
\renewcommand{\arraystretch}{1}
\begin{adjustbox}{width=1.1\textwidth, center}
\begin{tabularx}{\textwidth}{r c c J c}
\toprule
\multicolumn{3}{c}{Strategy} &
\multicolumn{2}{c}{Definition and References that Discuss/Propose the Strategy}
\\
\cmidrule(r){1-3} \cmidrule(l){4-5}
&
\multicolumn{2}{c}{Name and Abbreviation} &
\multicolumn{1}{c}{Definition}
& References
\\
\cmidrule(r){2-3} \cmidrule(lr){4-4} \cmidrule(lr){5-5}
1. &
Name A &
Class A &
\blindtext &
\\
\addlinespace[0.3cm]
2. &
Name B &
Class B &
\blindtext &
\\
3. &
Name C &
Class C &
\blindtext &
\\
\bottomrule
\end{tabularx}
\end{adjustbox}
\end{sidewaystable*}
\blindtext
\end{document}
答案1
最简单的解决方案是使用 TikZ 和 (当前页面.center)。另请参阅在横向页面上的极端页面上绘图和如何在横向表格中保留章节标题和脚注
请注意,minipage
(用于使内容居中)会改变\textwidth
,因此\dimen0
。此外,sidewaystable
和\tikz[remember picture]
不兼容。
\documentclass{book}
\usepackage{ragged2e}
% ========== Caption packages ==========
\usepackage{caption}
% ========== Table packages ==========
\usepackage{tabularx}
% BEGIN_FOLD
\newcolumntype{J}{ >{\arraybackslash\justifying} X }
\def \tabularxcolumn#1{m{#1}}
% END_FOLD
\usepackage{booktabs}
\usepackage{makecell}
\usepackage[flushleft]{threeparttable}
\usepackage[]{rotating}
\usepackage{adjustbox}
% ========== Figures and tables locations packages ==========
\usepackage{float}
\usepackage{blindtext}
\usepackage{fancyhdr}
\fancypagestyle{emptytablepage}{
\renewcommand{\headrulewidth}{0pt}
\fancyhead{}
\fancyfoot{}
}
\pagestyle{emptytablepage}
\usepackage{tikz}
\begin{document}
\blindtext
\begin{table*}[p]
\dimen0=\textwidth
\sbox0{\begin{minipage}[c][\paperheight][c]{\paperwidth}% fill entire page
\caption{Classifications of Strategies}
\label{table:strategies_names_definitions}
\centering
\renewcommand{\arraystretch}{1}
\begin{adjustbox}{width=1.1\dimen0, center}
\begin{tabularx}{\textwidth}{r c c J c}
\toprule
\multicolumn{3}{c}{Strategy} &
\multicolumn{2}{c}{Definition and References that Discuss/Propose the Strategy}
\\
\cmidrule(r){1-3} \cmidrule(l){4-5}
&
\multicolumn{2}{c}{Name and Abbreviation} &
\multicolumn{1}{c}{Definition}
& References
\\
\cmidrule(r){2-3} \cmidrule(lr){4-4} \cmidrule(lr){5-5}
1. &
Name A &
Class A &
\blindtext &
\\
\addlinespace[0.3cm]
2. &
Name B &
Class B &
\blindtext &
\\
3. &
Name C &
Class C &
\blindtext &
\\
\bottomrule
\end{tabularx}
\end{adjustbox}
\end{minipage}}%
\tikz[remember picture,overlay]{\node[rotate=90] at (current page.center) {\usebox0};}
\end{table*}
\clearpage
\blindtext
\end{document}