Combinando varias filas y varias columnas

Combinando varias filas y varias columnas

Al combinar multirowy multicolumnen la misma celda de una tabla, obtengo líneas verticales adicionales:

\documentclass[plain]{article}
\usepackage{multirow}
\pagestyle{empty}

\begin{document}

\begin{tabular}{|l|l|l|l|}\hline
  \multirow{10}{*}{numeric literals} & \multirow{5}{*}{integers} & in decimal & \verb|8743| \\ \cline{3-4}
  & & \multirow{2}{*}{in octal} & \verb|0o7464| \\ \cline{4-4}
  & & & \verb|0O103| \\ \cline{3-4}
  & & \multirow{2}{*}{in hexadecimal} & \verb|0x5A0FF| \\ \cline{4-4}
  & & & \verb|0xE0F2| \\ \cline{2-4}
  & \multirow{5}{*}{fractionals} & \multirow{5}{*}{in decimal} & \verb|140.58| \\ \cline{4-4}
  & & & \verb|8.04e7| \\ \cline{4-4}
  & & & \verb|0.347E+12| \\ \cline{4-4}
  & & & \verb|5.47E-12| \\ \cline{4-4}
  & & & \verb|47e22| \\ \cline{1-4}
  \multicolumn{3}{|l|}{\multirow{3}{*}{char literals}} & \verb|'H'| \\ \cline{4-4}
  & & & \verb|'\n'| \\ \cline{4-4}
  & & & \verb|'\x65'| \\ \cline{1-4}
  \multicolumn{3}{|l|}{\multirow{2}{*}{string literals}} & \verb|"bom dia"| \\ \cline{4-4}
  & & & \verb|"ouro preto\nmg"| \\ \cline{1-4}
\end{tabular}

\end{document}

documento compilado

Observe las líneas verticales en las celdas char literalsy string literals(que deben abarcar tres columnas). ¿Cómo pueden evitarse?

Respuesta1

Tienes que usarlo \multicolumn{3}{|l|}{}también en las siguientes filas.

\documentclass[plain]{article}
\usepackage{multirow}
\pagestyle{empty}

\begin{document}

\begin{tabular}{|l|l|l|l|}\hline
  \multirow{10}{*}{numeric literals} & \multirow{5}{*}{integers} & in decimal & \verb|8743| \\ \cline{3-4}
  & & \multirow{2}{*}{in octal} & \verb|0o7464| \\ \cline{4-4}
  & & & \verb|0O103| \\ \cline{3-4}
  & & \multirow{2}{*}{in hexadecimal} & \verb|0x5A0FF| \\ \cline{4-4}
  & & & \verb|0xE0F2| \\ \cline{2-4}
  & \multirow{5}{*}{fractionals} & \multirow{5}{*}{in decimal} & \verb|140.58| \\ \cline{4-4}
  & & & \verb|8.04e7| \\ \cline{4-4}
  & & & \verb|0.347E+12| \\ \cline{4-4}
  & & & \verb|5.47E-12| \\ \cline{4-4}
  & & & \verb|47e22| \\ \cline{1-4}
  \multicolumn{3}{|l|}{\multirow{3}{*}{char literals}} & \verb|'H'| \\ \cline{4-4}
  \multicolumn{3}{|l|}{} & \verb|'\n'| \\ \cline{4-4}          %% here
  \multicolumn{3}{|l|}{} & \verb|'\x65'| \\ \cline{1-4}        %% here
  \multicolumn{3}{|l|}{\multirow{2}{*}{string literals}} & \verb|"bom dia"| \\ \cline{4-4}
  \multicolumn{3}{|l|}{} & \verb|"ouro preto\nmg"| \\ \cline{1-4}          %% here
\end{tabular}

\end{document}

ingrese la descripción de la imagen aquí

Respuesta2

Puedes hacer esa tabla muy fácilmente con el paquete nicematrix.

En el entorno {NiceTabular}, puedes fusionar celdas tanto horizontal como verticalmente con el comando incorporado \Block. Luego, tienes una clave hvlinesque dibujará todas las reglas excepto en los bloques.

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\begin{NiceTabular}{llll}[hvlines]
  \Block{10-1}{numeric literals} & \Block{5-1}{integers} & in decimal & \verb|8743| \\ 
  & & \Block{2-1}{in octal} & \verb|0o7464| \\ 
  & & & \verb|0O103| \\ 
  & & \Block{2-1}{in hexadecimal} & \verb|0x5A0FF| \\ 
  & & & \verb|0xE0F2| \\ 
  & \Block{5-1}{fractionals} & \Block{5-1}{in decimal} & \verb|140.58| \\ 
  & & & \verb|8.04e7| \\ 
  & & & \verb|0.347E+12| \\ 
  & & & \verb|5.47E-12| \\ 
  & & & \verb|47e22| \\ 
  \Block[l]{3-3}{char literals} & & & \verb|'H'| \\ 
  & & & \verb|'\n'| \\ 
  & & & \verb|'\x65'| \\ 
  \Block[l]{2-3}{string literals} & & & \verb|"bom dia"| \\ 
  & & & \verb|"ouro preto\nmg"| \\ 
\end{NiceTabular}

\end{document}

Necesitasvarias recopilacionesporque nicematrixutiliza nodos PGF/Tikz.

Salida del código anterior

información relacionada