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}]}}
。これは必須です。そうしないと、コンパイル時に予期しないエラーが発生します。