“longtable” 和表格宽度的问题

“longtable” 和表格宽度的问题

我正在使用该包longtable在两页中定义一个表格,但当我在一个单元格中写入长文本时,表格宽度太大,单元格会填满页面边框,没有足够的空间容纳所有文本。有没有办法修复或限制表格的宽度,或者让文本填充某些行?

我只是使用双“\”来填充许多行中的长行,但它们之间有很大的空格。这是我使用的代码

\begin{longtable}{lp{5cm}lp{5cm}lp{5cm}}
\hline
Característica & DDS & MQTT \\
\hline
\endfirsthead

\hline
Característica & DDS & MQTT \\
\hline
\\
\endhead

\multicolumn{3}{c}{(Continúa en la página siguiente)} \\
\endfoot

\multicolumn{3}{c}{(Fin del Cuadro)} \\
\endlastfoot

%Aqui añadimos el cuerpo de la tabla
\\
Abstracción & Publicación/Suscripción & Publicación/Suscripción \\
\\
Arquitectura & Descentralizada (\emph{Global Data Space}) & Broker \\
\\
API & Si & No \\
\\
QoS & 22 & 3 \\
\\
Interoperabilidad & Si & Parcial \\
\\
Rendimiento & Más de 1000 mensajes fiables por segundo por suscriptor & Típicamente desde cientos \\
 & & (persistentes) hasta más de \\
 & & 1000 (\emph{best effort}) mensajes \\
 & & por segundo por suscriptor \\
\\
\emph{Real-Time} severo & Si & No \\
\\
Transporte & UDP por defecto (otros transportes como TCP pueden ser también usados) & TCP \\
\\
Control de suscripción & Particiones, tópicos con filtrado de mensajes & Tópicos con coincidencia \\
 & & jerárquica \\
\\
Filtrado & Contenido/Tiempo & No \\
\\
Serialización de datos & CDR & N/A \\
\\
Estándares & RTPS y DDSI de OMG & Propuesto por OASIS el \\
 & & estándar MQTT \\
\\
Codificación & Binaria & Binaria \\
\\
Modelo de licencia & Open Source y Licencia Comercial & Open Source y Licencia \\
 & & Comercial \\
\\
Descubrimiento dinámico & Si & No \\
\\
Dispositivos móviles & Si & Si \\
(Android, iOS) & & \\
\\
Dispositivos 6LoWPAN & Si & Si \\
\\
Transacciones multifase & No & No \\
Seguridad & Específica del vendedor pero típicamente basada en SSL o TLS con control de acceso propietario & Simple Nombre de \\
 & & usuario/Password, \\
 & & Autenticación, SSL para \\
 & & cifrado de datos \\
\\


\hline
\\
\caption{Comparativa de características entre DDS y MQTT.}
\label{ta:comparativa-dds-mqtt}
\end{longtable}

这是部分结果:

图像

答案1

感谢您发布环境代码longtable。看来主要问题是,虽然您打算有三列(每列都允许文本换行),但您目前总共指定了六列,交替lp类型。

除了仅指定三列(并删除硬换行符)之外,我还建议进行以下更改:

  • 由于列宽相当窄(5cm 或更小),最好不要尝试完全对齐内容,因为这样做可能会创建具有非常宽的单词间距的文本行。最好使用包ragged2e并定义一个使用\RaggedRight而不是完全对齐的新列类型。在下面的代码中,我使用\newcolumntype指令(由包提供array)创建一个名为的新列类型P,其行为与类型非常相似p,只是内容将排版为右对齐,同时允许连字符。

  • 不要\hline考虑使用包的规则绘制宏booktabs,例如\toprule\midrule

(第一页)

在此处输入图片描述

(第二页)

在此处输入图片描述

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{lmodern} % use a font family that supports accented characters natively
\usepackage{array,longtable,ragged2e,booktabs}
\newcolumntype{P}[1]{>{\RaggedRight\arraybackslash}p{#1}}

\usepackage[textwidth=13cm]{geometry} % choose text width here
\hyphenation{android} % do not hyphenate the word "Android"
\begin{document}

\begin{longtable}{@{}P{4cm}P{4cm}P{4cm}@{}}
\toprule
Característica & DDS & MQTT \\
\midrule
\endhead


\midrule[\heavyrulewidth]
\multicolumn{3}{r@{}}{(Continúa en la página siguiente)} \\
\endfoot

\midrule[\heavyrulewidth]
\caption{Comparativa de características entre DDS y MQTT.}
\label{ta:comparativa-dds-mqtt}
\endlastfoot

%Aqui añadimos el cuerpo de la tabla
Abstracción & Publicación/Suscripción & Publicación/Suscripción \\[1\baselineskip]
Arquitectura & Descentralizada (\emph{Global Data Space}) & Broker \\[2\baselineskip]
API & Si & No \\[1\baselineskip]
QoS & 22 & 3 \\[1\baselineskip]
Interoperabilidad & Si & Parcial \\[1\baselineskip]
Rendimiento & Más de 1000 mensajes fiables por segundo por suscriptor & Típicamente desde cientos (persistentes) hasta más de 1000 (\emph{best effort}) mensajes por segundo por suscriptor \\[1\baselineskip]
\emph{Real-Time} severo & Si & No \\[1\baselineskip]
Transporte & UDP por defecto (otros transportes como TCP pueden ser también usados) & TCP \\[4\baselineskip]
Control de suscripción & Particiones, tópicos con filtrado de mensajes & Tópicos con coincidencia jerárquica \\[1\baselineskip]
Filtrado & Contenido/Tiempo & No \\[1\baselineskip]
Serialización de datos & CDR & N/A \\[1\baselineskip]
Estándares & RTPS y DDSI de OMG & Propuesto por OASIS el estándar MQTT \\[1\baselineskip]
Codificación & Binaria & Binaria \\[1\baselineskip]
Modelo de licencia & Open Source y Licencia Comercial & Open Source y Licencia Comercial \\[1\baselineskip]
Descubrimiento dinámico & Si & No \\[1\baselineskip]
Dispositivos móviles (Android, iOS)& Si & Si \\[2\baselineskip]
Dispositivos 6LoWPAN & Si & Si \\[1\baselineskip]
Transacciones multifase & No & No \\[1\baselineskip]
Seguridad & Específica del vendedor pero típicamente basada en SSL o TLS con control de acceso propietario & Simple Nombre de usuario\slash Password,  Autenticación, SSL para  cifrado de datos \\
\end{longtable}
\end{document}

答案2

p一些列限制宽度并允许换行:

\documentclass{article}
\usepackage{longtable}
\usepackage{lipsum}

\begin{document}
\begin{longtable}{lp{70mm}}
  First row: & \lipsum[1] \\
  Second row: & \lipsum[2] \\
\end{longtable}
\end{document}

结果

相关内容