以下是源代码:
\begin{table}[h!]
\caption{Total length obtained from the model for transmission lines at 150, 220 and 440 kV.}
\centering
\begin{tabularx}{0.49\textwidth}{l l L}
\toprule
\textbf{Voltage level(kV)} & \textbf{Reported length(km)}\cite{a7} & \textbf{Inferred length(km)} \\ \midrule
150 & 2501 & 2419\\
220 & 3848 & 3648\\
400 & 3075 & 2862\\
\bottomrule
\end{tabularx}
\label{PortugalTamanho}
\end{table}
输出如下:
基本上我希望长度(km)直接推断出来否则它不适合该列并转到下一个...如果我添加//“长度”,它将转到“电压水平”下的最左边
也在这里:
\begin{table*}[h!]
\caption{Line loading and Transferred Reactive Powers}
\centering
\begin{tabularx}{1\textwidth}{l l l l l l l l l}
\toprule
\textbf{From bus} & \textbf{To bus} & $\mathbf{V_{n}}$\textbf{(kV)} & \multicolumn{2}{c}{\textbf{Emission}} & \multicolumn{2}{c}{\textbf{Reception}} & \textbf{L}$\mathbf{_{CA}}$ (\%) & \textbf{L}$\mathbf{_{CC}}$ (\%) \\
& & & \textbf{Q(MVAR)}$_{CA}$ &\textbf{Q(MVAR)}\cite{a7} & \textbf{Q(MVAR)}$_{CA}$ & \textbf{Q(MVAR)}\cite{a7} \\
\midrule
Fernão Ferro & Trafaria & 150 & 19.38 & 11.1 & 19.57 & 10.9 &61.6 & 57.04 \\
Fernão Ferro & Trafaria & 150 & 19.38 & 11.1 & 19.57 & 10.9 &61.6 &57.04\\
Fernão Ferro & Fogueteiro & 150 & 1.42 & 1.8 & 1.05 & 2.1 & 3.25&3.25\\
Fernão Ferro & Fogueteiro & 150 & 1.42 & & 1.05 &3.25 &3.25 \\
\bottomrule
\end{tabularx}
\label{T4}
\end{table*}
这超出了页边距:
我怎样才能避免这种情况?
答案1
OP 没有提供任何有关正在使用的文档类的信息。但是,根据 OP 发布的屏幕截图判断,似乎IEEEtran
应该使用文档类(或从其派生的类)。
第一个表:由于不知道
L
列类型是如何定义的,我无法复制 OP 的屏幕截图。话虽如此,似乎不需要环境tabularx
。只需使用tabular
环境并努力为标题材料提供更多视觉结构即可。请注意,没有必要诉诸大胆的标题材质。第二张表:同样,不需要设置
tabularx
。只需使用普通tabular
环境,并再次为标题材料提供清晰的视觉结构。哦,我会加载包siunitx
并使用其S
列类型将第 4 列到第 9 列中的数字对齐到各自的小数点标记上。同样,不需要大胆的。
\documentclass{IEEEtran}
\usepackage[T1]{fontenc}
\usepackage{newtxtext,newtxmath} % Times Roman text and math clone fonts
\usepackage{booktabs,siunitx}
% handy shortcut macro for header cells in second table:
\newcommand\mytab[1]{\smash{\begin{tabular}[t]{@{}c@{}} #1 \end{tabular}}}
\usepackage{lipsum} % filler text
\begin{document}
\lipsum[2] % filler text
\begin{table}[h!]
\caption{Total length obtained from the model for transmission lines at 150,~220 and 440 \unit{\kilo\volt}.}
\label{PortugalTamanho}
\centering
\begin{tabular}{@{} ccc @{}}
\toprule
Voltage level & Reported length \cite{a7} & Inferred length \\
(\unit{\kilo\volt}) & (\unit{\kilo\meter}) & (\unit{\kilo\meter}) \\
\midrule
150 & 2501 & 2419 \\
220 & 3848 & 3648 \\
400 & 3075 & 2862 \\
\bottomrule
\end{tabular}
\end{table}
\lipsum[2] % filler text
\addtocounter{table}{2} % just for this example
\begin{table*}[h!]
\caption{Line loading and Transferred Reactive Powers}
\label{T4}
\centering
\begin{tabular}{@{} ll c *{6}{S[table-format=2.2]} @{}}
\toprule
From bus & To bus &
\mytab{${V_{n}}$\\(\unit{\kilo\volt})} &
\multicolumn{2}{c}{Emission} &
\multicolumn{2}{c}{Reception} &
{\mytab{$L_{\mathrm{CA}}$\\(\%)}} &
{\mytab{$L_{\mathrm{CC}}$\\(\%)}} \\
\cmidrule(lr){4-5} \cmidrule(lr){6-7}
& & &
{$Q(\mathrm{MVAR})_{\mathrm{CA}}$} & {$Q(\mathrm{MVAR})$ \cite{a7}} &
{$Q(\mathrm{MVAR})_{\mathrm{CA}}$} & {$Q(\mathrm{MVAR})$ \cite{a7}} \\
\midrule
Fernão Ferro & Trafaria & 150 & 19.38 & 11.1 & 19.57 & 10.9 &61.6 & 57.04 \\
Fernão Ferro & Trafaria & 150 & 19.38 & 11.1 & 19.57 & 10.9 &61.6 &57.04\\
Fernão Ferro & Fogueteiro & 150 & 1.42 & 1.8 & 1.05 & 2.1 & 3.25&3.25\\
Fernão Ferro & Fogueteiro & 150 & 1.42 & & 1.05 &3.25 &3.25 \\
\bottomrule
\end{tabular}
\end{table*}
\lipsum[3-16] % more filler text
\end{document}
答案2
tabularx
仅当您使用至少一列时才有意义。XX
列会包装内容,以使列宽适合可用空间。您使用的 L 列需要包
tabulary
(并且不能在tabularx
环境中使用)或是一个可能已在某处定义的自定义列。在更好的情况下,我猜这实际上是一个左对齐的 X 列,但如果没有这个定义,没有人能确定您在做什么。至少在第二个表中,您只使用
l
标准tabular
(不带“x”)环境的列,其中列的宽度仅由单元格内容决定,而不换行文本,无论您为tabularx
(带有“x”)环境设置的宽度如何。最好不要使用1 列浮点数和2 列浮点数
x.xx\textwidth
来设置表格宽度。在两种情况下都使用 just 绝对不会出错。\textwidth
\linewidth
要查看表格是否仅使用一些 X 列就能很好地适应,或者是否需要其他修复,我们需要了解文档布局(边距、字体大小等)。这可以通过非法侵犯您的隐私来解决,使用神奇的水晶球来查看您在做什么,或者更好的是,如果您提供一个 最小工作示例(MWE),即可“按原样”编译的代码,以 开头
\documentclass{...}
并以 结尾\end{document}
,显示您的文档布局。您应该从 MWE 中删除与问题无关的内容和序言。正如评论中所说,您可以使用lipsum
轻松生成虚拟文本来显示文本,而无需添加任何实际内容。