この表のセルにテキストを収めるにはどうすればよいでしょうか?

この表のセルにテキストを収めるにはどうすればよいでしょうか?

Latex を使用して大きな表を作成しようとしています。結果は次のようになります。 ここに画像の説明を入力してください

しかし、私が理解したのは次のようなものです: ここに画像の説明を入力してください

\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 などのパッケージでソリューションを試した後も、まだ適切に機能させることができません。また、adjustbox を使用して中央に配置することしかできませんでした。\centeringうまくいきませんでした。誰か助けてくれませんか?

答え1

正しいパッケージを使用するかどうかの問題です。

使用表形式列の幅を自動的に取得するには、バベル正しい言語(ポルトガル語が私の推測です)でぼろぼろ[overload]見出しのハイフネーションを有効にするオプションがあります。ハイフネーションを有効にするに\-は、バベルミス。さらに、表の幅が広すぎるため、 をfontsizeに縮小する必要がありますfootnotesize。それでも、モードを使用するlandscapeか、左右の余白を縮小する必要があります。私は幾何学すべてのマージンを削減します。

表の前のコマンドは\noindent、表が左に移動して右端にはみ出すのを防ぎます。また、c最初の2つの表では通常の列を使用しました。表形式最初の列が狭くなりすぎてしまいました ( を調整できたかもしれませんtymin)。

使用を検討してくださいブックタブ間隔を広くするには、垂直方向の罫線をすべて削除する必要があります。ブックタブまた、垂直方向の罫線をすべて削除するだけでなく、水平方向の罫線の数も減らすことも提案します。

ルールに反する行動をとったり、許可されていない場合は、

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

間隔を広げるため。

すべての列を同じ幅にしたい場合は、タブラックス同様の列が 8 つあります。中央揃えの列が必要なようですので、Y次のコマンドで新しい列タイプを定義して、すべての列を中央揃えにしました。

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

Centeringからの命令ですぼろぼろパッケージ。左揃えまたは右揃えの列を同じ方法で定義できます。

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

私はオプションを使用するので[overload]ぼろぼろ\centering\raggedrightまたはを使用した場合でも、 が有効になります\raggedleft。質問で示されたように、間隔もかなり広げました。

鉛筆で手書きで記入するスコアカードを作成する場合は、3番目の表で問題ありません。プレゼンテーションや文書用に表をタイプセットする場合は、(私の意見では)次のいずれかを使用する必要があります。ブックタブバージョン。

表に何を入れるかに関する情報を提供すると、追加の推奨事項が得られる場合があります。

![ここに画像の説明を入力してください ここに画像の説明を入力してください

\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 の回答の 2 番目の例に対する補足/代替として:

  • 列には数字が入っているのではないかと思います。残念ながら、不明です。すべて整数ですか? 桁数はすべて同じですか? とにかく、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{...}(その機能が明確ではありません)、単位の math 環境を削除して、代わりに[$\si{metre}$]simple を使用しています[\si{\metre}]

  • 最後の列に、中括弧で囲まれた単位が挿入されます: \thead{Deformação\\ {[\si{\metre}]}}。これは必須です。そうしないと、コンパイル時に予期しないエラーが発生します。

関連情報