[LaTeX]表組みのセルの中に複数行書くとき、行間をいい感じに詰めたい
LaTeXで表組みを使ってるとき、セルの中に複数行書きたいときがある。
こういう時は、セルの幅を指定してやると、勝手に改行を入れてくれるらしい。
1 2 3 4 5 6 7 8 9 10 11 12 | \documentclass[]{jreport} \begin{document} \begin{table}[] \begin{tabular}{|p{1.8cm}|p{1.8cm}|} \hline あいうえおかきくけこ & さしすせそ \\ \hline たちつてと & なにぬねの \\ \hline \end{tabular} \end{table} \end{document} |
ん〜、でも行間が気にくわない。
もうちょっと詰めたい。
\arraystretchを使うと行間が変えられるっていう記事もあったけど、変わらない。
まぁこれはそもそもそういう用途のコマンドじゃないっぽいわ。
1 2 3 4 5 6 7 8 9 10 11 12 13 | \documentclass[]{jreport} \begin{document} \renewcommand{\arraystretch}{0.5} \begin{table}[] \begin{tabular}{|p{1.8cm}|p{1.8cm}|} \hline あいうえおかきくけこ & さしすせそ \\ \hline たちつてと & なにぬねの \\ \hline \end{tabular} \end{table} \end{document} |
\shortstackにそういうオプションはないかと探したけど、左右寄せができるだけだった。
フォーラムを探したら、いいのが出てきた。
\shortstackをうまいことアレンジして\bettershortstackというコマンドを作ってやるといいっぽい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | \documentclass[]{jreport} \newcommand{\bettershortstack}[4][c]{% \renewcommand{\arraystretch}{#2} \begin{tabular}[b]{@{}#1@{}} #4 \end{tabular}% \renewcommand{\arraystretch}{#3} } \begin{document} \begin{table}[] \begin{tabular}{|p{1.8cm}|p{1.8cm}|} \hline \bettershortstack[l]{0.4}{1.0}{あいうえお \\ かきくけこ} & さしすせそ \\ \hline たちつてと & なにぬねの \\ \hline \end{tabular} \end{table} \end{document} |
\bettershortstack[左右寄せ]{行間の指定}{下の行間}{セル内の文章※}
※(改行位置は「\\」で指定してやる必要がある)
って感じに使う。
@{}ってのは、セル両脇のスペースの文字をどうするか指定するやつ。デフォルトではスペースが入るが、@{}なのでなにも出力されない設定になってる。
@{hello}とかすると、セルの両脇にhelloと出てくる。
ちなみにshortstackで出力された文章は大きな文字と同じような扱いになるので、隣のセルの文章は複数行の最下行と同じ行に出力される。
上に揃えたい場合は、\raisebox{◯em}{文章}とする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | \documentclass[]{jreport} \newcommand{\bettershortstack}[4][c]{% \renewcommand{\arraystretch}{#2} \begin{tabular}[b]{@{}#1@{}} #4 \end{tabular}% \renewcommand{\arraystretch}{#3} } \begin{document} \begin{table}[] \begin{tabular}{|p{1.8cm}|p{1.8cm}|} \hline \bettershortstack[l]{0.4}{1.0}{あいうえお \\ かきくけこ} & \raisebox{0.95em}{さしすせそ} \\ \hline たちつてと & なにぬねの \\ \hline \end{tabular} \end{table} \end{document} |
ただ、表のセルの高さが小さいせいで文字が上の枠線にくっついてしまう現象はうまく調整することができなかった。
bettershortstackをraiseboxで囲むとうまく調整できるかなと思ったけど、ダメだった。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | \documentclass[]{jreport} \newcommand{\bettershortstack}[4][c]{% \renewcommand{\arraystretch}{#2} \begin{tabular}[b]{@{}#1@{}} #4 \end{tabular}% \renewcommand{\arraystretch}{#3} } \begin{document} \begin{table}[] \begin{tabular}{|p{1.8cm}|p{1.8cm}|} \hline \raisebox{-1em}{\bettershortstack[l]{0.4}{1.0}{あいうえお \\ かきくけこ}} & さしすせそ \\ \hline たちつてと & なにぬねの \\ \hline \end{tabular} \end{table} \end{document} |
逆に下にくっついちゃう。
うまくやりたいならそもそも変に詰めようとするなってこったな。
この記事へのコメントはこちら