Me gustaría agradecerles a todos por cualquier ayuda de antemano.
¿Puedo hacer la siguiente pregunta? Estoy creando un documento de traducción con 2 columnas (como puedes ver en el código).
Usé el parallel
paquete. No porque sepa algo sobre el mejor paquete para esto, sino simplemente porque encontré un código que funciona en la red. Si tiene algún consejo sobre un paquete mejor para usar o una mejor forma de codificar estas columnas, hágamelo saber. Sobre todo porque quiero tener columnas "anidadas". Ver código: (prueba de tabla). Estoy usando tabular
s ahora para hacer esto. ¿Alguien conoce alguna forma mejor, por ejemplo, usando opciones en el paquete paralelo? En el futuro, si es posible, también necesitaré una tabla anidada de 3 columnas.
Acerca de esto tengo mi pregunta real, a saber: Me gustaría una línea vertical entre la columna anidada. En este momento dibujé la línea con tikz
una imagen, también solo porque esa es la única forma que conozco de obtener una línea vertical continua. Pero mi código no da el resultado correcto: la línea está dentro de un "párrafo" de paquete paralelo y, por lo tanto, el siguiente párrafo se desplaza mucho hacia abajo verticalmente. Su uso \vspace{-...cm}
no es muy práctico, ya que es necesario realizar ajustes cada vez que cambia la traducción... Gracias por cualquier ayuda de optimización. Por ejemplo, intenté usar tres columnas dentro de la tabla (la del medio vacía), pero no tengo ni idea de cómo dibujar una línea vertical continua en la columna vacía del medio (segunda). Gracias por cualquier ayuda nuevamente.
Estoy usando el siguiente código:
\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}
Respuesta1
Esta respuesta no es bonita, pero puede llevarte a donde necesitas estar. Es una solución pura tabular
(y tabular*
), aunque envuelvo las cosas en los entornos partabular
y nextentry
. El entorno partabular
establece algunos parámetros y debe delimitar toda la tabla.
nextentry
Se puede llamar sucesivamente al entorno para construir su tabla. Debido a que se compone de un tabular*
, una "entrada" puede (pero no es necesario) tener varias líneas; sin embargo, los saltos de página sólo pueden ocurrir entre invocaciones de nextentry
. No agregue an \hline
a la última fila de a nextentry
, porque el entorno lo hace automáticamente.
Muestro cómo se puede construir un tabular
dentro de una celda que efectivamente la subdivida verticalmente. La desventaja es que, si la columna dividida no es la más larga de su fila, debe usar la macro \filllines{}
para extender la barra vertical hasta la parte inferior de la celda que contiene general.
Otra peculiaridad: la longitud delfix
es el espacio vertical que normalmente aparecería entre tabular*
bloques contiguos. La definición \delfix
permite restar esa longitud, de modo que la línea superior del segundo tabular*
se superponga a la línea inferior del primero. Activarlo \raggedbottom
en el preámbulo debería evitar que el pegamento interfiera con esta medición.
El MWE está configurado para dos columnas. Para ampliar a 3, las longitudes \colwidth
y \splitcolwidth
necesitarán redefinirse.
\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}
Si no está satisfecho con la parte de la solución en la que se superponen dos líneas horizontales mediante el uso del \delfix
parámetro, entonces una definición alternativa sería
\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}
Esto imprimirá un \hline
al principio de una tabla solo si se proporciona un argumento opcional que no esté en blanco nextentry
de la manera
\begin{nextentry}[x]
a & b\\\hline
c & d\\\hline
\lipsA & \lipsB\\
\end{nextentry}
La desventaja de este enfoque alternativo es que debe agregar manualmente un argumento opcional al primer nextentry
bloque en cada página de salida. En este caso, la repaginación incontrolada le haría muy infeliz.