# How to create a page with two columns that can span pages to achieve my special goal?

I am a Chinese plain TeX user and also a beginner. Now I encounter a hard question, that is

I must write some numbered English paragraphs at the left column and its corresponding Chinese translations at the right column which have the same number with the English one. The first lines of the English paragraph and its corresponding Chinese translations should be located at the same horizontal line.

Here is an example if I can't explain this question clearly:

My method to solve this problem is using \halign with two \vtop, but it can't span pages or produce overfull, underfull \vbox.

\newcount\mycount
\mycount=1
\bigskip
\halign{\tabskip=.5in
\vtop{\hsize=3in\noindent\number\mycount.\enspace#}&
\tabskip=0pt\vtop{\hsize=3in
...}


so ugly it is :-(

Anyone else has a better solution?

-
 Welcome to TeX.sx! – Jubobs Mar 18 at 1:50 Usually, we don't put a greeting or a "thank you" in our posts. While this might seem strange at first, it is not a sign of lack of politeness, but rather part of our trying to keep everything very concise. Accepting and upvoting answers is the preferred way here to say "thank you" to users who helped you. – hpesoj626 Mar 18 at 2:18 yeah, I will follow you advice. – Timothy Li Mar 18 at 10:07

You may be interested in parallel package.

\documentclass[a4paper]{article}
\usepackage{parallel}
\usepackage{lipsum} %% dummy text
\usepackage{microtype} %% Just for my taste
\usepackage{enumitem}
%%%--------------- set a newlist for english--------------------
\newlist{eng}{enumerate}{1}
\setlist[eng]{align=left,itemindent=2.5em,leftmargin=0pt,
rightmargin=.51\textwidth,label=\textbf{\arabic*.}}
%%%--------------- set a newlist for chinese --------------------
\newlist{chin}{enumerate}{1}
\setlist[chin]{align=left,itemindent=2.5em,leftmargin=.51\textwidth,
rightmargin=0pt,label=\textbf{\roman*.}}
%%----------------------------------------------------------
\begin{document}
\begin{Parallel}{.49\textwidth}{.49\textwidth}
\ParallelLText{%
\begin{eng}[series=english]
\item \lipsum[1]
\end{eng}
}%
\ParallelRText{%
\begin{chin}[series=chinese]
\item \lipsum[2]
\end{chin}
}%
\ParallelPar
\ParallelLText{%
\begin{eng}[resume*=english]
\item \lipsum[3]
\end{eng}
}%
\ParallelRText{%
\begin{chin}[resume*=chinese]
\item\lipsum[4]
\end{chin}
}%
\ParallelPar
\ParallelLText{%
\begin{eng}[resume*=english]
\item \lipsum[5]
\end{eng}
}%
\ParallelRText{%
\begin{chin}[resume*=chinese]
\item\lipsum[6]
\end{chin}
}%
\ParallelPar
\ParallelLText{%
\begin{eng}[resume*=english]
\item \lipsum[7]
\end{eng}
}%
\ParallelRText{%
\begin{chin}[resume*=chinese]
\item\lipsum[10]
\end{chin}
}%
\end{Parallel}
\end{document}


-
Nice, but one inconvenient is that you have to hardcode the numbers... – Jubobs Mar 18 at 2:20
@Jubobs: No more hard coding :-) – Harish Kumar Mar 18 at 7:59
Please note the plain-tex -tag. – morbusg Mar 18 at 8:27
Harish, I have read the codes of this package today and gotten the main idea. Now I have realized a tiny edition for my purpose by using palin tex. You advice is very useful for me. – Timothy Li Mar 18 at 10:12
@morbusg Uh! Didn't see that. Any how I am not good in TeX. Keep it a secret ;-) – Harish Kumar Mar 18 at 11:51

This is why you should switch to LaTeX, my friend :)

EDIT: I only realised mid-coding that the OP required a plain-TeX solution, but I (cheekily!) decided to post my LaTeX solution anyway. There may be more elegant solutions than mine but who knows? My solution might be useful to some...

\documentclass{article}

\usepackage[showframe]{geometry}
\usepackage{etoolbox}
\usepackage{enumitem}

\newtoggle{morethanoneparagraph}
\togglefalse{morethanoneparagraph}

\newcommand{\mycolumnwidth}{0.45\textwidth}

\newenvironment{engchin}{%
\newcommand\nextpart{%
\end{enumerate}
\end{minipage}
\begin{minipage}[t]{\mycolumnwidth}
\iftoggle{morethanoneparagraph}{%
\begin{enumerate}[label=\roman*,resume*=chin]
\item
}{%
\global\toggletrue{morethanoneparagraph}
\begin{enumerate}[label=\roman*,series=chin]
\item
}
}
\begin{minipage}[t]{\mycolumnwidth}
\iftoggle{morethanoneparagraph}{
\begin{enumerate}[resume*=eng]
\item
}{
\begin{enumerate}[series=eng]
\item
}
}{
\end{enumerate}
\end{minipage}
\vspace{\baselineskip}
}

\begin{document}

\begin{engchin}
hello a a a a a a a a a a a a
hello a a a a a a a a a a a a
hello a a a a a a a a a a a a
hello a a a a a a a a a a a a
\nextpart
world
\end{engchin}

\begin{engchin}
hello
\nextpart
world is flat
a a a a a a a a a a a a
a a a a a a a a a a a a
a a a a a a a a a a a a
a a a a a a a a a a a a
\end{engchin}

\end{document}


-
Nice answer, but it’s like if someone asked: “how to do x in scheme” on stackoverflow, and someone provides an answer with python, arguing: “This is why you should switch to python”. Kinda… you know, off the mark. – morbusg Mar 18 at 8:35
Jubobs, mybe you are an expert in LaTeX, but I don't intend to switch to LaTeX. – Timothy Li Mar 18 at 10:21
@morbusg Yes, you're right, but my solution might be useful to LaTeX users. – Jubobs Mar 18 at 13:07