Tell me more ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

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: enter image description here

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
        \noindent\romannumeral\mycount.\enspace#\global\advance\mycount by1}\cr
        ...}

so ugly it is :-(

Anyone else has a better solution?

share|improve this question
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

2 Answers

up vote 3 down vote accepted

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}

enter image description here

share|improve this answer
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
1  
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}

enter image description here

share|improve this answer
2  
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
1  
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

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.