我想让所有列都longtable
自动适应其文本宽度。有办法实现吗?目前,只有最后一列可以自动适应。我想我需要更改此行,\begin{longtable}[c]{|p{0.4cm}|p{3cm}|p{2.2cm}|p{1.9cm}|p{3.8cm}|}
但我不知道如何配置它。
这是我的代码:
\documentclass[12pt, a4paper, onecolumn, oneside, final]{report}
\makeatother
\usepackage{array}
\setlength\extrarowheight{4pt}
\usepackage{tabto}
\newenvironment{tabs}[1]
{\TabPositions{#1}}
\usepackage{longtable}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\usepackage[most]{tcolorbox}
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{caption}
\usepackage{colortbl}
\usepackage{enumitem}
\usepackage{etoolbox}
\usepackage{float}
\usepackage{fon tenc}
\usepackage{gensymb}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{multirow}
\usepackage{pdflscape}
\usepackage{pifont}
\usepackage{ragged2e}
\usepackage{rotating}
% Awal bagian penulisan laporan
\begin{document}
\begingroup
\setlength{\LTleft}{-20cm plus -1fill}
\setlength{\LTright}{\LTleft}
\begin{small}
\begin{longtable}[c]{|p{0.4cm}|p{3cm}|p{2.2cm}|p{1.9cm}|p{3.8cm}|}
\caption{Daftar \textit{method} yang digunakan dari pustaka TensorFlow}
\label{lib:tensorflow}\\
\hline
\centering \textbf{No.} &
\centering \textbf{\textit{Method}} &
\centering \textbf{Masukan} &
\centering \textbf{Keluaran} &
\centering \textbf{Keterangan} \tabularnewline \hline
\endfirsthead
\multicolumn{5}{c}{\textbf{\tablename~\thetable} Daftar \textit{method} yang digunakan dari pustaka TensorFlow}\\
\hline
\centering \textbf{No.} &
\centering \textbf{\textit{Method}} &
\centering \textbf{Masukan} &
\centering \textbf{Keluaran} &
\centering \textbf{Keterangan} \tabularnewline \hline
\endhead
1
& tf.test.gpu\_device\_name
& -
& device\_name: string
& Mengembalikan nama perangkat GPU jika tersedia atau string kosong \\
\hline
2
& device
& device\_name: string
& -
& Menentukan perangkat untuk operasi yang dibuat / dijalankan dalam aplikasi \\
\hline
\end{longtable}
\end{small}
\endgroup
\end{document}
答案1
毫不奇怪,LaTeX 没有关于字符串device\_name
尤其是tf.test.gpu\_device\_name
如何换行的信息。我建议您 (a) 加宽第 3 列和第 4 列,以便device\_name:
可以排版字符串而不需要换行;(b) 加载包seqsplit
并使用宏在第 2 列\seqsplit
换行tf.test.gpu\_device\_name
。
我还将通过 (a) 省略所有垂直规则和 (b) 使用更少的水平规则使表格看起来更加开放。
\documentclass[12pt, a4paper, oneside]{report}
%% I've chosen to simplify the preamble of the test document drastically
\usepackage[indonesian]{babel}
\usepackage{array} % for '\newcolumntype' and '\extrarowheight' macros
\setlength\extrarowheight{4pt}
\usepackage{longtable}
\usepackage[T1]{fontenc}
\usepackage{ragged2e} % for '\RaggedRight' macro
%% new instructions:
\newcolumntype{L}[1]{>{\RaggedRight}p{#1}} % allow hyphenation
\newlength\mylen
\settowidth\mylen{device\_name:} % measure required width of rows 3 and 4
\usepackage{seqsplit} % for '\seqsplit' macro
\begin{document}
\begingroup
\setlength{\tabcolsep}{4pt} % default: 6pt
\setlength{\LTcapwidth}{\textwidth}
\small
\begin{longtable}{@{} l L{3cm} L{\mylen} L{\mylen} L{3.9cm} @{}}
%% headers and footers
\caption{Daftar \textit{method} yang digunakan dari pustaka TensorFlow}
\label{lib:tensorflow}\\
\hline
\textbf{No.} &
\textbf{\textit{Method}} &
\textbf{Masukan} &
\textbf{Keluaran} &
\textbf{Keterangan} \tabularnewline \hline
\endfirsthead
\multicolumn{5}{c}{\textbf{\tablename~\thetable} Daftar \textit{method} yang digunakan dari pustaka TensorFlow}\\
\hline
\textbf{No.} &
\textbf{\textit{Method}} &
\textbf{Masukan} &
\textbf{Keluaran} &
\textbf{Keterangan} \tabularnewline \hline
\endhead
\hline
\endlastfoot
%% body of table
1
& \seqsplit{tf.test.gpu\_device\_name}
& --
& device\_name: string
& Mengembalikan nama perangkat GPU jika tersedia atau string kosong \\
%\hline
2
& device
& device\_name: string
& --
& Menentukan perangkat untuk operasi yang dibuat\slash dijalankan dalam aplikasi \\
\end{longtable}
\endgroup
\end{document}
答案2
如果您不想将第 2 列至第 4 列的内容拆分成多行,您可能需要考虑使用横向页面来显示表格。我还使用了booktabs
表格中的水平线,以及而xltabular
不是,longtable
以确保表格的宽度与可用的文本宽度完全相同。
\documentclass[12pt, a4paper, oneside]{report}
\usepackage[indonesian]{babel}
\usepackage{xltabular}
\usepackage{booktabs}
\usepackage{pdflscape}
\begin{document}
\begin{landscape}
\setlength{\LTcapwidth}{\linewidth}
\begin{xltabular}{\linewidth}{@{} l l l l X @{}}
\caption{Daftar \textit{method} yang digunakan dari pustaka TensorFlow}
\label{lib:tensorflow}\\
\toprule
\textbf{No.} &
\textbf{\textit{Method}} &
\textbf{Masukan} &
\textbf{Keluaran} &
\textbf{Keterangan} \\ \midrule
\endfirsthead
\caption[]{Daftar \textit{method} yang digunakan dari pustaka TensorFlow} \\
\toprule
\textbf{No.} &
\textbf{\textit{Method}} &
\textbf{Masukan} &
\textbf{Keluaran} &
\textbf{Keterangan} \\ \midrule
\endhead
\bottomrule
\endlastfoot
1
& tf.test.gpu\_device\_name
& --
& device\_name: string
& Mengembalikan nama perangkat GPU jika tersedia atau string kosong \\ \addlinespace
2
& device
& device\_name: string
& --
& Menentukan perangkat untuk operasi yang dibuat\slash dijalankan dalam aplikasi \\
\end{xltabular}
\end{landscape}
\end{document}