我正在使用该包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
。看来主要问题是,虽然您打算有三列(每列都允许文本换行),但您目前总共指定了六列,交替l
和p
类型。
除了仅指定三列(并删除硬换行符)之外,我还建议进行以下更改:
由于列宽相当窄(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}