如何使文字適合該表格的儲存格?

如何使文字適合該表格的儲存格?

我正在嘗試使用乳膠創建一個大表。結果一定是這樣的: 在此輸入影像描述

但我得到的是這樣的: 在此輸入影像描述

\documentclass{article}

\usepackage{tabularx}
\usepackage{adjustbox}
\usepackage{siunitx}
\usepackage{array}
\usepackage{graphicx}

\begin{document}

\begin{center}
    \begin{adjustbox}{width=20cm, center}
    \begin{tabular}{|c|m{0.5cm}|c|c|c|c|c|c|}
        \hline
        \textbf{Barra} & \textbf{Comprimento[$\si{\metre}$]} & \hspace{0pt}\textbf{Área da Seção[$\si{mm^2}$]} & \textbf{Força sobre a barra[$\si{\newton}$]} & \textbf{Tensão Normal[$\si{\mega\pascal}$]} & \hspace{0pt}\textbf{Módulo de Elasticidade[$\si{\mega\pascal}$]} & $\si{\epsilon_{L}}$ & \hspace{0pt}\textbf{Deformação[$\si{\metre}$]}\\
        \hline
        & & & & & & & \\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
    \end{tabular}
    \end{adjustbox}
\end{center}

\end{document}

使用這段程式碼我只能使文字變小。我只是無法將單字(像是“Deformação”和“Comprimento”這樣的大單字)包裝在一個單元格中,我已經嘗試過這個\hspace{0pt}技巧,但它似乎不起作用。在嘗試使用 tabularx 等軟體包的解決方案後,我仍然無法使其正常工作。另外,我只能使用調整框使其保持居中。\centering沒用。有人能幫我嗎?

答案1

這只是使用正確的包的問題。

使用表格自動取得列寬,通天塔語言正確(葡萄牙語是我最好的猜測)並且襤褸2e可以選擇[overload]啟動標題中的連字符。你必須用\-where 來幫助連字符通天塔錯過了。此外,表格太寬,您需要將其縮小fontsizefootnotesize。不過,您要嘛必須使用landscape模式,要嘛減少左右邊距。我用了幾何學減少所有邊距。

表格之前的命令\noindent可以避免表格向左移動並突出到右邊緣。另外,我c在前兩張表格中使用了普通列,因為表格最終第一列太窄(我可以調整tymin)。

您可以考慮使用書本標籤為了獲得更好的間距,但是您必須刪除所有垂直規則。我已經包含了使用的程式碼書本標籤並且還建議您除了刪除所有垂直規則之外,還要減少水平規則的數量。

如果您不願意或不允許按照規則做某事,請使用

\renewcommand{\arraystretch}{1.1}  % or 1.5
\setlength{\extrarowheight}{1pt}   % or 2 in case of 1.5 for arraystretch

以改善間距。

如果您希望所有列具有相同的寬度,請使用表格x和八個類似的列。看來您想要居中的列,因此我透過使用Y以下命令定義新的列類型來將所有列居中:

\newcolumntype{Y}{>{\Centering\arraybackslash}X}

Centering是來自的命令襤褸2e包裹。您可以以相同的方式定義左對齊或右對齊的列:

\newcolumntype{W}{>{\RaggedRight\arraybackslash}X}
\newcolumntype{Z}{>{\RaggedLeft\arraybackslash}X}

由於我使用了該[overload]選項,襤褸2e\centering即使您使用,\raggedright或,也會起作用\raggedleft。正如您在問題中指出的那樣,我還相當大地增加了間距。

如果您要製作用鉛筆手工填寫的記分卡,則第三個表格就可以了。如果您正在為簡報或文件排版表格,您應該(我認為)使用其中之一書本標籤版本。

如果您提供有關表格內容的信息,您可能會得到其他建議。

![在此輸入影像描述 在此輸入影像描述

\documentclass{article}
\usepackage[portuguese]{babel}
\usepackage[margin=1.5cm]{geometry}
\usepackage{tabularx,tabulary, booktabs}
\usepackage{siunitx}
\usepackage[overload]{ragged2e}

\setlength{\tabcolsep}{2pt}
\renewcommand{\arraystretch}{1.1}
\setlength{\extrarowheight}{1pt}

\begin{document}

\section*{tabulary}


\footnotesize
{
\noindent\begin{tabulary}{\linewidth}{|c|C|C|C|C|C|C|C|}
\hline
        \textbf{Barra} & \textbf{Compri\-mento[$\si{\metre}$]} & \hspace{0pt}\textbf{Área da Seção[$\si{mm^2}$]} & \textbf{Força sobre a barra[$\si{\newton}$]} & \textbf{Tensão Normal[$\si{\mega\pascal}$]} & \hspace{0pt}\textbf{Módulo de Elasticidade[$\si{\mega\pascal}$]} & $\si{\epsilon_{L}}$ & \hspace{0pt}\textbf{Defor\-mação[$\si{\metre}$]}\\
        \hline
        & & & & & & & \\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
    \end{tabulary}%
}

\vspace{2cm}
{
\noindent\begin{tabulary}{\linewidth}{@{}c*{7}{C}@{}}
\toprule
        \textbf{Barra} & \textbf{Compri\-mento[$\si{\metre}$]} & \hspace{0pt}\textbf{Área da Seção[$\si{mm^2}$]} & \textbf{Força sobre a barra[$\si{\newton}$]} & \textbf{Tensão Normal[$\si{\mega\pascal}$]} & \hspace{0pt}\textbf{Módulo de Elasticidade[$\si{\mega\pascal}$]} & $\si{\epsilon_{L}}$ & \textbf{Defor\-mação[$\si{\metre}$]}\\
\midrule
        1 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        2 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        3 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        4 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        5 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\midrule
        6 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        7 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        8 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        9 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        10 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
    \bottomrule
    \end{tabulary}
\pagebreak
\section*{tabularx}
}
{
\renewcommand{\arraystretch}{1.5}
\setlength{\extrarowheight}{2pt}
\setlength{\arrayrulewidth}{0.2pt}
\newcolumntype{Y}{>{\Centering\arraybackslash}X}

\noindent\begin{tabularx}{\linewidth}{*{8}{|Y}|}
\hline
        \textbf{Barra} & \textbf{Compri\-mento[$\si{\metre}$]} & \hspace{0pt}\textbf{Área da Seção[$\si{mm^2}$]} & \textbf{Força sobre a barra[$\si{\newton}$]} & \textbf{Tensão Normal[$\si{\mega\pascal}$]} & \hspace{0pt}\textbf{Módulo de Elasti\-cidade[$\si{\mega\pascal}$]} & $\si{\epsilon_{L}}$ & \textbf{Defor\-mação[$\si{\metre}$]}\\
\hline
        1 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        2 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        3 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        4 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        5 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        6 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        7 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        8 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        9 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        10 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
    \hline
    \end{tabularx}%
}

\vspace{2cm}

{
\newcolumntype{Y}{>{\Centering\arraybackslash}X}

\noindent\begin{tabularx}{\linewidth}{*{8}{Y}}
\toprule
        \textbf{Barra} &
        \textbf{Compri\-mento[$\si{\metre}$]}l &
        \hspace{0pt}\textbf{Área da Seção[$\si{mm^2}$]} &
        \textbf{Força sobre a barra[$\si{\newton}$]} &
        \textbf{Tensão Normal[$\si{\mega\pascal}$]} &
        \textbf{Módulo de Elasti\-cidade[$\si{\mega\pascal}$]} &
        $\si{\epsilon_{L}}$ &
        \textbf{Defor\-mação[$\si{\metre}$]}\\
\midrule
        100 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        200 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        300 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        400 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        500 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\\addlinespace[6pt]
        600 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        700 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        800 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        900 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        1000 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
    \hline
    \end{tabularx}%
}
\end{document}

答案2

作為@Sveinung 回答中第二個例子的補充/替代:

  • 我懷疑,列中是數字。不幸的是他們不為人所知。它們都是整數嗎?它們的位數都相同嗎?無論如何,我寧願使用S列類型並考慮下面問題的 @frougon 評論:
\documentclass{article}
%\usepackage[portuguese]{babel}
\usepackage{geometry}
\usepackage{siunitx}
\usepackage{booktabs, makecell}
\renewcommand\theadfont{\footnotesize\bfseries}
\renewcommand\theadgape{}

%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\begin{document}
    \begin{center}
\small
\setlength{\tabcolsep}{4pt}        % Reduce space between columns
\setcellgapes{3pt}
\makegapedcells
\begin{tabular}{*{8}{S}}
    \toprule
{\thead{Barra}}
    &   {\thead{Compri-\\mento [\si{\metre}]}}         
        &   {\thead{Área da\\ Seção [\si{mm^2}]}}
    &   {\thead{Força sobre\\ a barra [\si{\newton}]}}
        & {\thead{Tensão\\ Normal [\si{\mega\pascal}]}}
    &   {\thead{Módulo de\\ Elasticidade [\si{\mega\pascal}]}} 
        &   {\si{\epsilon_{L}}}
    & {\thead{Deformação\\ {[\si{\metre}]}}}  \\
    \midrule
1  & 12.3 & 30 & 40      & 55.7  & 60 & 7 & 8  \\
12 &  4.5 & 33 & 38,2    & 33.44 & 60 & 7 & 6  \\
    \bottomrule
    \end{tabular}
\end{center}
\end{document}
  • 對於S列類型,我沒有確定數字的格式,例如,S[table-format=2,2]因為數字未知,但是使用預設值似乎給出了相當好的結果:

在此輸入影像描述

  • 正如您所看到的,我從列標題中刪除了所有內容\hspace{...}(尚不清楚它們的功能是什麼)並刪除了單位的數學環境,即改為[$\si{metre}$]使用 simple [\si{\metre}]

  • 最後一列單位插入大括號中:\thead{Deformação\\ {[\si{\metre}]}}。這是必要的,因為否則編譯會導致意外錯誤。

相關內容