Zeichnen einer vertikalen Linie innerhalb einer Tabelle oder innerhalb des parallelen Pakets (und wie man parallel erweitert, um mehr als 2 Spalten zu erhalten)

Zeichnen einer vertikalen Linie innerhalb einer Tabelle oder innerhalb des parallelen Pakets (und wie man parallel erweitert, um mehr als 2 Spalten zu erhalten)

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 parallelPaket 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 tabularjetzt 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 tikzpiciture 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. partabularnextentrypartabular

Die Umgebung nextentrykann 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 \hlinezur 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 delfixist der vertikale Abstand, der normalerweise zwischen benachbarten tabular*Blöcken erscheint. Durch die Definition \delfixkann diese Länge abgezogen werden, sodass die obere Linie des zweiten Blocks tabular*die untere Linie des ersten überlagert. Das Einschalten \raggedbottomin 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 \colwidthund 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}

Bildbeschreibung hier eingeben

Wenn Sie mit dem Teil der Lösung unzufrieden sind, in dem durch die Verwendung des \delfixParameters 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 \hlineam Anfang einer Tabelle nur dann, wenn ein optionales Argument angegeben wird, das nicht leer ist, nextentryin der Art von

\begin{nextentry}[x]
a & b\\\hline
c & d\\\hline
\lipsA & \lipsB\\
\end{nextentry}

nextentryDer 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.

verwandte Informationen