在表格內或並行包內繪製垂直線(以及如何擴展並行以擁有超過 2 列)

在表格內或並行包內繪製垂直線(以及如何擴展並行以擁有超過 2 列)

我想先感謝大家的幫忙。

我可以問以下問題嗎?我正在建立一個包含 2 列的翻譯器文件(如您在程式碼中看到的)。

我用的是這個parallel包。不是因為我知道任何關於這個的最佳軟體包,而是因為我在網路上找到了一個工作代碼。如果您對更好的套件使用有任何建議,或者對這些列進行更好的編碼方式,請告訴我。特別是因為我想要“嵌套”列。請參閱程式碼:(表測試)。我現在正在使用tabulars 來執行此操作。有誰知道更好的方法,例如使用並行包中的選項?如果可能的話,將來我還需要一個嵌套的三個清單。

關於這一點,我有我的實際問題,即:我想要在嵌套列之間有一條垂直線。現在我用tikz圖片畫了這條線,也只是因為這是我知道獲得連續垂直線的唯一方法。但我的程式碼沒有給出正確的結果:該行位於並行包“段落”內,因此以下段落垂直向下移動很​​多。使用\vspace{-...cm}不太實用,因為每次翻譯更改時都需要進行調整...感謝您的任何優化幫助。例如,我嘗試在表格內使用三列(中間一列為空),但隨後我不知道如何在中間(第二)空列中繪製連續的垂直線。再次感謝您的幫忙。

我正在使用以下程式碼:

\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}

答案1

這個答案並不漂亮,但可能會讓你到達你需要的地方。這是一個純粹的tabular(和tabular*)解決方案,儘管我將事情包裝在環境partabular和中nextentry。環境partabular設定一些參數並應界定整個表。

nextentry可以連續調用該環境來建立您的表。因為它是由 a 組成tabular*,所以一個「條目」可以(但不需要)有多行;但是分頁只能在呼叫之間發生nextentry。不要將 an 加到\hlinea 的最後一行nextentry,因為環境會自動為您完成此操作。

tabular我展示瞭如何在單元格內建立一個有效地垂直細分單元格。缺點是,如果拆分列不是其行中最長的列,則必須使用巨集\filllines{}將垂直條延伸到整個包含單元格的底部。

另一個怪癖:長度delfix是通常出現在相鄰tabular*方塊之間的垂直空間。定義\delfix允許減去該長度,以便第二條的頂線tabular*覆蓋第一條的底線。在序言中打開\raggedbottom應該可以防止膠水幹擾此測量。

MWE 設定為兩列。要擴展到 3,長度\colwidth\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}

在此輸入影像描述

如果您對解決方案中透過使用參數使兩條水平線重疊的部分不滿意\delfix,則可以使用替代定義

\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}

僅當以以下方式\hline提供非空可選參數時,才會在表的開頭列印 annextentry

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

這種替代方法的缺點是您必須手動將可選參數新增到nextentry每頁輸出的第一個區塊中。在這種情況下,不受控制的重新分頁會讓你非常不高興。

相關內容