我想将我的页面(A4 横向)分成不同的部分。顶部应由四列组成,宽度不同且没有规则。为此,我使用了 vwcol,但我不知道如何在那里进行分栏。文本不应在另一列中继续。在那下面,页面应该只分为两列,中间有一条规则。Multicols 似乎是正确的选择。
我还希望每个部分都有不同的格式。例如,前四列是:图像、左对齐文本、右对齐文本、图像
到目前为止,我尝试了列、多列和 vwcols,但总是有些东西不起作用。这是我现在所拥有的:
\documentclass[a4paper,12pt, landscape]{article}
\usepackage[landscape]{geometry}
\geometry{left=20mm,right=20mm,top=20mm,bottom=20mm}
\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{multicol}
\usepackage{vwcol}
\usepackage{color}
\begin{document}
\begin{vwcol}[widths={0.2,0.3,0.3,0.2}, sep=10mm, rule=0]
\includegraphics[height=0.3\textheight]{img002.png}
%second column: left aligned text
%column break
%third column: right aligned text
\lipsum[1]
\includegraphics[height=0.3\textheight]{img002.png}
\end{vwcol}
\setlength{\columnsep}{20mm}
\setlength{\columnseprule}{3pt}
\renewcommand{\columnseprulecolor}{\color[rgb]{0.9,0.9,0.9}}
\begin{multicols*}{2}
\lipsum[1-2]
\vfill
\columnbreak
\lipsum[1-2]
\end{multicols*}
\end{document}
我很感激您能给我的任何提示。谢谢!
答案1
这是一个使用的方法flowfram
。如果您使用此方法,请务必阅读文档,因为它以您需要了解的方式重新设计了输出例程。
页面顶部分为 4 个框架。这些框架的内容不会流入页面的其他部分,因此您需要确保内容合适,否则会溢出并覆盖内容的其他部分。每侧最远的列居中。内部左侧设置为左对齐。内部右侧设置为右对齐。
页面底部分为两列。文本从一列流向下一列,从一页流向下一页。(因此,如果您想在第一列写满之前移动到下一列,您需要插入手动分隔符,正如您所期望的那样。)
请不要将其用作minimal
示例。我复制了您的代码,但没注意,花了很长时间才弄清楚它为什么抱怨标准 LaTeX 命令未定义。此类不适用于示例,不应用于此类示例。
\documentclass[a4paper,12pt,landscape]{article}
\usepackage{geometry}
\geometry{left=20mm,right=20mm,top=20mm,bottom=20mm}
\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{xcolor}
\usepackage{flowfram,calc}
\newdynamicframe{\dimexpr.2\textwidth-.75\columnsep}{.3\textheight}{0pt}{.7\textheight}[upperfarleft]
\newdynamicframe{\dimexpr.3\textwidth-.75\columnsep}{.3\textheight}{.2\textwidth+.5\columnsep}{.7\textheight}[upperleft]
\newdynamicframe{\dimexpr.3\textwidth-.75\columnsep}{.3\textheight}{.5\textwidth+.5\columnsep}{.7\textheight}[upperright]
\newdynamicframe{\dimexpr.2\textwidth-.75\columnsep}{.3\textheight}{.8\textwidth+.5\columnsep}{.7\textheight}[upperfarright]
\setdynamicframe*{upperleft}{style=raggedright}
\setdynamicframe*{upperright}{style=raggedleft}
\setdynamicframe*{upperfarleft,upperfarright}{style=centering}
\setlength{\columnsep}{20mm}
\setlength{\ffcolumnseprule}{3pt}
\twocolumninarea{\textwidth}{.7\textheight-5pt}{0pt}{0pt}
\renewcommand{\ffruledeclarations}{\color[rgb]{0.9,0.9,0.9}}
\insertvrule{flow}{1}{flow}{2}
\begin{document}
\setdynamiccontents*{upperfarleft}{\includegraphics[height=0.275\textheight,width=.175\textwidth]{example-image-a}}
\setdynamiccontents*{upperfarright}{\includegraphics[height=0.275\textheight,width=.175\textwidth]{example-image-b}}
\setdynamiccontents*{upperleft}{A caption for the left image which will be left aligned. Make sure that the contents fits the area available as it will NOT `flow' elsewhere, as requested!}
\setdynamiccontents*{upperright}{A caption for the right image which will be right aligned. Make sure that the contents fits the area available as it will NOT `flow' elsewhere, as requested!}
\lipsum[1-4]
\end{document}
编辑
针对评论中的疑问做出一些解释...
在顶部设置“动态”框架时,上面使用的语法是:
\newdynamicframe{width of frame}{height of frame}{horizontal offset from origin}{vertical offset from origin}[label]
原点位于文本块的左下角(西南)。
在顶行中,有 3 个列分隔和 4 个列。因此,分隔列的总宽度是 3 倍\columnsep
,并且您希望将其均匀地划分到 4 个列之间(或者我假设如此)。因此,.75\columnsep
从每列宽度中获取。在底行中,有 1 个列分隔和 2 个列。因此,您需要.5\columnsep
从每列的宽度中获取,以使列的宽度相等。因此,这是从每列的宽度中获取的。它不是 3:2 的比例,因为这\columnsep
是顶部的默认值,而底部的默认值为 20 毫米。
答案2
这只是解决方案的尝试。
据我理解,该vwcol
包/环境没有提供命令。\columnbreak
我尝试用tabular
和新列类型来“构建”上部列,用于左对齐和右对齐文本。
当然,间距必须改变。
\documentclass[a4paper,12pt, landscape]{minimal}
\usepackage[landscape]{geometry}
\geometry{left=20mm,right=20mm,top=20mm,bottom=20mm}
\usepackage{lipsum}
\usepackage{calc}
\usepackage{array}
\usepackage{xcolor}
\usepackage[demo]{graphicx}
\usepackage{vwcol}
\usepackage{multicol}
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash}p{#1}}
\begin{document}
\begin{tabular}{p{0.2\textwidth}p{0.3\textwidth}p{0.3\textwidth}p{0.2\textwidth}}
\begin{tabular}[t]{p{0.15\textwidth}}
\includegraphics[width=0.15\textwidth,height={0.3\textheight}]{img002.png}%
\end{tabular}%
&
\begin{tabular}{@{}L{0.25\textwidth}@{}}
\lipsum[1]%
\end{tabular}%
&
\begin{tabular}{@{}R{0.25\textwidth}@{}}
\lipsum[1]%
\end{tabular}
&
\begin{tabular}[t]{@{}p{0.15\textwidth}@{}}
\includegraphics[width=0.15\textwidth,height={0.3\textheight}]{img002.png}%
\end{tabular}% \tabularnewline
\end{tabular}
\setlength{\columnsep}{20mm}
\setlength{\columnseprule}{3pt}
\renewcommand{\columnseprulecolor}{\color[rgb]{0.9,0.9,0.9}}
\begin{multicols*}{2}
\lipsum[1-2]
\vfill
\columnbreak
\lipsum[1-2]
\end{multicols*}
\end{document}