将多列布局的每一列放在单独的页面上?

将多列布局的每一列放在单独的页面上?

假设我有一个多列文档,我想要做的是生成同一文档的替代版本,基本上将每一列(具有相同的换行符和分栏符)放在自己的页面上。(在文本周围留出大量空间用于记笔记)。我猜这要么是一个简单的挂入新列宏的情况,要么是一场绝对的噩梦。

因此对于这个 MWE:

\documentclass[twocolumn=true]{scrartcl}
\usepackage{lipsum}
\begin{document}
\lipsum
\end{document}

我想修改此代码,以便有一个可以设置的开关true,使我得到一个三页文档,每列都在自己的页面上。也就是说,每列的换行符和分栏符与上述代码生成的相同。

一种方法是将页面几何形状设置为一列占用的大小,但这非常脆弱,每当我更改双列版本的格式时都需要重新进行设置......所以我想知道是否有更好的办法?

也可以考虑使用不同的方法来获得两列布局的相同结果...

答案1

这看起来像是 flowfram 的工作!

\documentclass[twocolumn=true]{scrartcl}
\usepackage{flowfram}
\usepackage{lipsum}

\newflowframe[all]{\columnwidth}{\textheight}{0pt}{0pt}

\begin{document}
\onecolumn
\lipsum
\end{document}

答案2

如果使用 LaTeX 模式设置两列布局\twocolumn,则可以通过在\clearpage设置第一列的代码末尾添加 来将每一列设置在自己的页面上。因此,我\@outputdblcol从中复制latex.ltx了的代码texmf-dist/tex/latex/base并添加了\clearpage,将其包装在 if 中,然后瞧:

\documentclass[twocolumn=true]{scrartcl}
\newif\ifmakeonecol
% \makeonecolfalse
\makeonecoltrue

\makeatletter
\ifmakeonecol
\def\@outputdblcol{%
  \if@firstcolumn
    \global\@firstcolumnfalse
    \global\setbox\@leftcolumn\copy\@outputbox
    \splitmaxdepth\maxdimen
    \vbadness\maxdimen
     \setbox\@outputbox\vbox{\unvbox\@outputbox\unskip}%
     \setbox\@outputbox\vsplit\@outputbox to\maxdimen
    \toks@\expandafter{\topmark}%
    \xdef\@firstcoltopmark{\the\toks@}%
    \toks@\expandafter{\splitfirstmark}%
    \xdef\@firstcolfirstmark{\the\toks@}%
    \ifx\@firstcolfirstmark\@empty
      \global\let\@setmarks\relax
    \else
      \gdef\@setmarks{%
        \let\firstmark\@firstcolfirstmark
        \let\topmark\@firstcoltopmark}%
      \fi
      \clearpage % <<-- addition
    \else
    \global\@firstcolumntrue
    \setbox\@outputbox\vbox{%
     \hb@xt@\textwidth{%
        \hb@xt@\columnwidth{\box\@leftcolumn \hss}%
        \hfil
        {\normalcolor\vrule \@width\columnseprule}%
        \hfil
       \hb@xt@\columnwidth{\box\@outputbox \hss}}}%
  \@combinedblfloats
    \@setmarks
    \@outputpage
    \begingroup
      \@dblfloatplacement
      \@startdblcolumn
      \@whilesw\if@fcolmade \fi{\@outputpage
     \@startdblcolumn}%
    \endgroup
    \fi}%
  \fi
\makeatother

\usepackage{lipsum}
\begin{document}
\lipsum
\end{document}

除非有其他东西开始重新定义如何设置列,或者使用另一种创建列的方法,否则这应该是相当强大的......

浮动将出现在每页的“剩余”一半。我想这可以补救,但对我的用例来说没问题。

相关内容