独立列环境

独立列环境

我正在创建一个两页的课程大纲,其中左侧列有一个 tikz 日历,所有内容都在页面右侧。目前,右侧内容就像一个普通的文章类文档,左边距由几何包调整,以避免与绝对定位的 tikz 日历重叠。

问题:在 (Xe)Latex 中,是否有任何方法可以将两列放入环境中,这样我在左列中输入的任何内容都完全独立于右列,反之亦然,这样可以有效地将 tikz 图片锁定到页面上,而忽略右侧内容

我的目标:我的所有教学大纲的主文档,右侧内容只是一个 \input{thecontent}。左侧将是一个 tikz 日历(一个在第一页,一个在第二页)

问题:我有一个主文档,但如果右栏内容(这\输入{内容}) 是一份较短的文档,或者更可能是一份较长的文档,我必须不断移动 tikzpicture 环境才能将日历放在页面左侧。文本似乎将它们推到下一页。

注意:目前,tikzpicture 环境绝对定位在页面上。

--------------->

\documentclass[10pt]{article}
\usepackage{fontspec}

%CUSTOM VARIABLES
\newcommand{\content}{./"Winter2012/Listening and Speaking 1/Listening_and_Speaking_1_Syllabus"}
%UNUSED COMMANDS, BUT PERHAPS USEFUL LATER
\newcommand{\institution}{Universität Innsbruck}
\newcommand{\department}{Institut der Anglistik}
\newcommand{\class}{Listening \& Speaking I}
\newcommand{\designation}{SL/2}
\newcommand{\ECTS}{ECTS: 2.5}
\newcommand{\hours}{[W 10.00-12.00]}
\newcommand{\office}{}

%SET MARGINS (AND PAGE DIMENSIONS)
\usepackage[top=2.8cm,bottom=2cm,left=7cm,right=2cm,head=30pt]{geometry}

\usepackage{wrapfig}

%USE THISPAGESTYLE{EMPTY} BELOW MAKETITLE OR {FANCY}
\usepackage{tikz}
\usetikzlibrary{shapes,calendar,mindmap,patterns}
\usepackage{everypage} % put something on every page

%HEADER FOOTER
\usepackage{fancyhdr}
\lhead{} \chead{\textsc{}} \rhead{\textsc{{\Huge\class}\\\institution} }
\lfoot{\textsc{J. Komar}} \cfoot{\textsc{}} \rfoot{\textsc{\today}}
\renewcommand{\headrulewidth}{0.0pt} 
\renewcommand{\footrulewidth}{0.0pt}
%\renewcommand{\headersep}{5cm}
\pagestyle{fancy}%ADD HEADER FOOTER TO PAGE EXCEPT TITLE PAGE
%USE THISPAGESTYLE{EMPTY} BELOW MAKETITLE OR {FANCY}
\usepackage{lipsum}%To generate test text, use \lipsum[#NUMOFLINES#] in body

%\newcommand\event[2]{\ifdate{equals=#1} {\node [anchor=north west, text width=3.5cm,event]{#2}; 
\newcommand\event[2]{
    \ifdate{equals=#1} {
% In the following, the event nodes are defined
% The \rule in the node text is necessary to match the "text depth=0.5ex" of the date nodes
        \node [yshift=6pt,xshift=5pt,anchor=west,text height=1.5ex, text width=3.5cm,event]{#2}; 
    }{}
}

\newcommand\redevents{
    \tikzstyle{event}=[black,fill=red!10]
    %\event{2012-10-31}{This is a very long event text running over three lines.}
    %\event{2012-11-07}{Short event!}
    %\event{2012-11-14}{Third of the longish events\ldots}
}

\usepackage{enumitem}
\setlist{nolistsep}
\begin{document}%BEGIN DOCUMENT
%BACKGROUNDS
\AddEverypageHook{ % on every page...ensure \usepackage{everypage} in header
\begin{tikzpicture}[remember picture, overlay]
\node[xshift=1.8cm] at (current page.north west) {\begin{tikzpicture}[remember picture,overlay,fill opacity=0.5]\path[fill=yellow!15] (0,0) rectangle (4.5cm,-\paperheight);\end{tikzpicture}};
\node[yshift=-.5cm,xshift=0cm] at (current page.north west) {\begin{tikzpicture}[remember picture, overlay]\path[fill=blue!15] (0,0) rectangle (\paperwidth,-2cm);
\end{tikzpicture}};
\end{tikzpicture}
}

\begin{wrapfigure}{l}{0.5cm}
\tiny
\begin{tikzpicture}[remember picture]
\path[use as bounding box] (0,0) rectangle (1,1); % adjust to fit
\node[xshift=2.2cm,yshift=-3.5cm](NW) at (current page.north west) {};
  \calendar [day list downward,
              month text=\%mt\ \%y0,
              month yshift=5em,
              name=cal,
              dates=2012-10-01 to 2012-12-last,
              at={(NW)},
              every day/.style={
                   anchor=mid,
                   text depth=0.5ex,
                   text height=1.5ex,
                   text width=.3cm,
                   align=center},
             execute after day scope={
                   \redevents
              }
              ]
    if (Wednesday) {\draw[black] (0,0) circle (4pt);}
    if (weekend) [transparent!0]
    if (day of month=1) {
      \node at (0pt,2em) [anchor=base west,color=black] {\small\tikzmonthtext};
      \draw[anchor=north,yshift=8pt] (0,0)--(4,0);
};
\end{tikzpicture}
\end{wrapfigure}

\input{\content}%inputted right column

%%%%%%%%%%%%%%%%END OF CONTENT

\begin{wrapfigure}{r}{0.5cm}
\tiny
\begin{tikzpicture}[remember picture]
\path[use as bounding box] (0,0) rectangle (1,1); % adjust to fit

\node[xshift=2.2cm,yshift=-3.5cm](NW) at (current page.north west) {};
  \calendar [day list downward,
              month text=\%mt\ \%y0,
              month yshift=5em,
              name=cal,
              dates=2013-01-01 to 2013-02-last,
              at={(NW)},
              every day/.style={
                   anchor=mid,
                   text depth=0.5ex,
                   text height=1.5ex,
                   text width=.3cm,
                   align=center},
             execute after day scope={
                   \redevents
              }
              ]
    if (Wednesday) {\draw[black] (0,0) circle (4pt);}
    if (weekend) [transparent!0]
    if (day of month=1) {
      \node at (0pt,2em) [anchor=base west,color=black] {\small\tikzmonthtext};
      \draw[anchor=north,yshift=8pt] (0,0)--(4,0);
};
\end{tikzpicture}
\end{wrapfigure}

\end{document}

在此处输入图片描述

答案1

不确定parcolums在这种情况下包是否合适,因为您必须定义列之间的某种同步(因为包的目的是让两列的内容并行运行,就像双语文本一样)。

如果您想要的是两个完全独立的列,每个列都有自己的文本“流”,我能想到的最简单的解决方案就是将每个列排版在单独的文档中(每个列的尺寸为paperwidthpaperheight相等),然后通过将两个文档合并为一个文档\includegraphics,取出每个文档的一页并将它们并排放置。

以下 MWE 实现了这个想法。这不是一个完整的解决方案,因为它假设两个文档的长度相同(以页为单位),但它可以说明这个想法。

首先,将以下内容保存在名为的文件中column1.tex,并编译它以获得column1.pdf

\documentclass{article}
\usepackage[paperwidth=6cm, paperheight=23cm, margin=0cm]{geometry}
\usepackage{lipsum}
\begin{document}\sloppy\small
\lipsum[1-15]
\end{document}

本文档的第一页如下所示:

列 1

然后,在名为的文件中排版第二列column2.tex,并进行编译得到column2.pdf

\documentclass{article}
\usepackage[paperwidth=10cm, paperheight=23cm, margin=0cm]{geometry}
\usepackage{lipsum}
\begin{document}
\lipsum[1-20]
\end{document}

其第一页如下所示:

第 2 列

最后,以下文档结合了前两个文档:

\documentclass{article}
\usepackage[margin=2cm]{geometry}
\usepackage{graphicx}
\input{repeat}
\begin{document}
\repeat\for{pag}\by{1}\from{1}\to{4}
\do{
\noindent\includegraphics[page=\the\pag]{column1}%
\hfill\includegraphics[page=\the\pag]{column2}%
\clearpage
}
\end{document}

本文件的第一页和最后一页如下所示:

第一页 最后一页

更新:以下版本的代码现在“合并”了两个列,它更加通用,可以自动适应每列的页数,停止最先结束的列的输出,只继续输出另一列:

\documentclass{article}
\usepackage[margin=2cm]{geometry}
\usepackage{graphicx}
\usepackage{pdfpages}
\input{repeat}
\begin{document}
\pdfximage{column1.pdf}
\edef\pagfirst{\the\pdflastximagepages}
\pdfximage{column2.pdf}
\edef\pagsecond{\the\pdflastximagepages}
\ifnum\pagfirst>\pagsecond
\edef\maxpag{\pagfirst}
\else
\edef\maxpag{\pagsecond}
\fi
\repeat\for{pag}\by{1}\from{1}\to{\maxpag}
\do{
\ifnum\the\pag>\pagfirst\relax\else%
\noindent\includegraphics[page=\the\pag]{column1}%
\fi%
\ifnum\the\pag>\pagsecond\relax\else%
\hfill\includegraphics[page=\the\pag]{column2}%
\fi
\clearpage
}
\end{document}

相关内容