Ich möchte Ihnen allen im Voraus für Ihre Hilfe danken.
Darf ich folgende Frage stellen? Ich erstelle ein Übersetzerdokument mit 2 Spalten (wie Sie im Code sehen können).
Ich habe das parallel
Paket verwendet. Nicht weil ich etwas über das beste Paket dafür weiß, sondern einfach weil ich im Internet einen funktionierenden Code gefunden habe. Wenn Sie einen Rat zu einem besseren Paket oder einer besseren Möglichkeit zum Codieren dieser Spalten haben, lassen Sie es mich bitte wissen. Insbesondere, da ich „verschachtelte“ Spalten haben möchte. Siehe Code: (Tabellentest). Ich verwende tabular
jetzt s, um dies zu tun. Kennt jemand eine bessere Möglichkeit, zum Beispiel die Verwendung von Optionen im Parallelpaket? In Zukunft werde ich, wenn möglich, auch eine verschachtelte 3-Spalten-Tabelle benötigen.
Dazu habe ich meine eigentliche Frage, nämlich: Ich hätte gerne eine vertikale Linie zwischen den verschachtelten Spalten. Im Moment habe ich die Linie mit tikz
piciture gezeichnet, auch nur, weil das der einzige Weg ist, den ich kenne, um eine durchgehende vertikale Linie zu erhalten. Aber mein Code liefert nicht das richtige Ergebnis: Die Linie befindet sich innerhalb eines Parallelpaket-„Absatzes“, und daher wird der folgende Absatz vertikal weit nach unten verschoben. Die Verwendung \vspace{-...cm}
ist nicht sehr praktisch, da bei jeder Änderung der Übersetzung Anpassungen vorgenommen werden müssen ... Danke für jede Optimierungshilfe. Ich habe beispielsweise versucht, drei Spalten innerhalb der Tabelle zu verwenden (die mittlere leer), aber dann habe ich keine Ahnung, wie ich eine durchgehende vertikale Linie in die mittlere (2.) leere Spalte zeichnen kann. Nochmals danke für jede Hilfe.
Ich verwende den folgenden Code:
\documentclass{article}
\usepackage{tikz} % to draw a vertical line
\usepackage[margin=0.5in]{geometry}
\usepackage{parallel}
\usepackage{framed}
\setlength{\FrameSep}{0.1cm} % to create parallel translator columns
\usepackage{calc}\setlength\textwidth{8.3in}\setlength\textheight{10.9in}\setlength\oddsidemargin{(\paperwidth-\textwidth)/2 - 1in}\setlength\topmargin{(\paperheight-\textheight-\headheight-\headsep-\footskip)/2 - 1in} % to adjust page boundaries
\newcommand\Par[2]{\begin{Parallel}[v]{10.2cm}{10.2cm}
\ParallelLText{#1}\ParallelRText{#2}\ParallelPar\end{Parallel}}\setlength{\columnseprule}{.4pt} % to create parallel translator columns
\begin{document}
\begin{framed}
\Par % new paragraph
{ % left <<<
\raggedright
\quad \quad Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test.
} % >>> left
{ % right <<<
\raggedright
\quad \quad Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test.
} % >>> right
\Par % new paragraph
{ % left <<<
\raggedright
\quad \quad Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test.
} % >>> left
{ % right <<<
\raggedright
\quad \quad Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test.
} % >>> right
\raggedright
\rule{\textwidth}{0.4pt} % new page
\Par % new paragraph
{ % left <<<
\centering
\scalebox{0.55}[0.55]{page x} % page numbering
} % >>> left
{ % right <<<
\centering
\scalebox{0.55}[0.55]{page x} % page numbering
} % >>> right
\Par % new paragraph
{ % left <<<
\raggedright
\quad \quad Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test.
} % >>> left
{ % right <<<
\raggedright
\quad \quad Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test Test test test.
} % >>> right
\raggedright
\rule{\textwidth}{0.4pt} % new page
\begin{tikzpicture}
\hspace{5cm}
\draw (1,0) -- (1,5);
\end{tikzpicture}
\Par % new paragraph
{ % left <<<
\centering
TABLE TEST \\
\line(1,0){40} \\
} % >>> left
{ % right <<<
\centering
TABLE TEST \\
\line(1,0){40} \\
} % >>> right
\Par % new paragraph
{ % left <<<
\raggedright
\begin{tabular}{p{0.5cm}p{5cm}p{1cm}}
& \scalebox{0.8}[0.8]{{\sc{Element one}}} & \scalebox{0.8}[0.8]{{\sc{Element b-one}}}
\end{tabular} \\
} % >>> left
{ % right <<<
\raggedright
\begin{tabular}{p{0.5cm}p{5cm}p{1cm}}
& \scalebox{0.8}[0.8]{{\sc{Element two}}} & \scalebox{0.8}[0.8]{{\sc{Element b-two}}}
\end{tabular}
} % >>> right
\Par % new paragraph
{ % left <<<
\raggedright
\begin{tabular}{p{0.5cm}p{5cm}p{1cm}}
& \scalebox{0.8}[0.8]{{\sc{Element one}}} & \scalebox{0.8}[0.8]{{\sc{Element b-one}}}
\end{tabular} \\
} % >>> left
{ % right <<<
\raggedright
\begin{tabular}{p{0.5cm}p{5cm}p{1cm}}
& \scalebox{0.8}[0.8]{{\sc{Element two}}} & \scalebox{0.8}[0.8]{{\sc{Element b-two}}}
\end{tabular}
} % >>> right
\Par % new paragraph
{ % left <<<
\raggedright
\begin{tabular}{p{0.5cm}p{5cm}p{1cm}}
& \scalebox{0.8}[0.8]{{\sc{Element three}}} & \scalebox{0.8}[0.8]{{\sc{Element b-three}}}
\end{tabular} \\
} % >>> left
{ % right <<<
\raggedright
\begin{tabular}{p{0.5cm}p{5cm}p{1cm}}
& \scalebox{0.8}[0.8]{{\sc{Element three}}} & \scalebox{0.8}[0.8]{{\sc{Element b-three}}}
\end{tabular}
} % >>> right
\Par % new paragraph
{ % left <<<
\raggedright
\begin{tabular}{p{0.5cm}p{5cm}p{1cm}}
& \scalebox{0.8}[0.8]{{\sc{Element ...}}} & \scalebox{0.8}[0.8]{{\sc{Element b-...}}}
\end{tabular} \\
} % >>> left
{ % right <<<
\raggedright
\begin{tabular}{p{0.5cm}p{5cm}p{1cm}}
& \scalebox{0.8}[0.8]{{\sc{Element ...}}} & \scalebox{0.8}[0.8]{{\sc{Element b-...}}}
\end{tabular}
} % >>> right
\end{framed}
\end{document}
Antwort1
Diese Antwort ist nicht schön, aber sie bringt Sie vielleicht ans Ziel. Es ist eine reine tabular
(und )-Lösung, obwohl ich die Dinge in den Umgebungen und tabular*
zusammenfasse . Die Umgebung legt einige Parameter fest und sollte die gesamte Tabelle abgrenzen. partabular
nextentry
partabular
Die Umgebung nextentry
kann nacheinander aufgerufen werden, um Ihre Tabelle zu erstellen. Da sie aus einem besteht tabular*
, kann ein „Eintrag“ mehrere Zeilen haben (muss es aber nicht); ein Seitenumbruch kann jedoch nur zwischen Aufrufen von erfolgen nextentry
. Fügen Sie kein \hline
zur letzten Zeile eines hinzu nextentry
, da die Umgebung dies automatisch für Sie erledigt.
Ich zeige, wie man innerhalb einer Zelle ein Element erstellen kann tabular
, das diese effektiv vertikal unterteilt. Der Nachteil besteht darin, dass Sie, wenn die geteilte Spalte nicht die längste in ihrer Zeile ist, das Makro verwenden müssen, \filllines{}
um den vertikalen Balken bis zum unteren Rand der gesamten enthaltenen Zelle zu verlängern.
Eine weitere Besonderheit: Die Länge delfix
ist der vertikale Abstand, der normalerweise zwischen benachbarten tabular*
Blöcken erscheint. Durch die Definition \delfix
kann diese Länge abgezogen werden, sodass die obere Linie des zweiten Blocks tabular*
die untere Linie des ersten überlagert. Das Einschalten \raggedbottom
in der Präambel sollte verhindern, dass Klebstoff diese Messung beeinträchtigt.
Das MWE ist für zwei Spalten eingerichtet. Um es auf drei zu erweitern, müssen die Längen \colwidth
und neu definiert werden.\splitcolwidth
\documentclass{article}
\usepackage{lipsum}
\def\lipsA{%
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida
mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna.}
\def\lipsB{%
Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus
et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra
metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus
eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium
quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. }
\def\lipsC{%
Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Cur-
abitur auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue
eu, accumsan eleifend, sagittis quis, diam. Duis eget orci sit amet orci dignissim
rutrum.}
\newlength\svparskip
\newlength\delfix
\delfix1.3pt
\newlength\colwidth
\setlength\colwidth{\dimexpr.5\textwidth-2\tabcolsep}
\newlength\splitcolwidth
\setlength\splitcolwidth{\dimexpr.25\textwidth-2\tabcolsep}
\newenvironment{partabular}
{\par\svparskip=\parskip\relax\vspace{\delfix}}
{\vspace{\delfix}\parskip=\svparskip\relax}
\newenvironment{nextentry}
{\parskip-\delfix\par\noindent\begin{tabular*}{\textwidth}[t]
{|p{\colwidth}|p{\colwidth}|}\hline}{\hline\end{tabular*}\par}
\def\filllines#1{\vspace{\dimexpr#1\ht\strutbox+#1\dp\strutbox}}
\raggedbottom
\begin{document}
\lipsum[1]
\begin{partabular}
\begin{nextentry}
a & b\\\hline
c & d\\\hline
\lipsA & \lipsB\\
\end{nextentry}
\begin{nextentry}
F & G\\\hline
\begin{tabular}[t]{@{}p{\splitcolwidth}|p{\splitcolwidth}@{}}
This is a test of a split column \filllines{6}& X
\end{tabular}
& \lipsC\\
\end{nextentry}
\begin{nextentry}
\lipsA & \lipsC\\
\end{nextentry}
\begin{nextentry}
F & G\\\hline
\lipsB & \lipsC\\\hline
\lipsA & \lipsC\\
\end{nextentry}
\begin{nextentry}
F & G\\\hline
\lipsB & \lipsC\\
\end{nextentry}
\begin{nextentry}
\lipsA & \lipsC\\
\end{nextentry}
\end{partabular}
\end{document}
Wenn Sie mit dem Teil der Lösung unzufrieden sind, in dem durch die Verwendung des \delfix
Parameters zwei horizontale Linien übereinander gelegt werden, dann wäre eine alternative Definition
\newenvironment{nextentry}[1][\relax]
{\parskip-\delfix\par\noindent\begin{tabular*}{\textwidth}[t]
{|p{\colwidth}|p{\colwidth}|}\ifx\relax#1\relax\else\hline\fi}
{\hline\end{tabular*}\par}
Dies druckt ein \hline
am Anfang einer Tabelle nur dann, wenn ein optionales Argument angegeben wird, das nicht leer ist, nextentry
in der Art von
\begin{nextentry}[x]
a & b\\\hline
c & d\\\hline
\lipsA & \lipsB\\
\end{nextentry}
nextentry
Der Nachteil dieses alternativen Ansatzes besteht darin, dass Sie dem ersten Block auf jeder Ausgabeseite manuell ein optionales Argument hinzufügen müssen . Eine unkontrollierte Neupaginierung würde Sie in diesem Fall sehr unglücklich machen.