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[左右寄せ]{行間の指定}{下の行間}{セル内の文章※}
※(改行位置は「\\」で指定してやる必要がある)
って感じに使う。
How can I force \shortstack to preserve an empty line?For example,\shortstack{hoge \\ foo \\ bar}\shortstack{hoge \\ \\ bar}provides . But I would like to keep the empty line in the ... \shortstack with empty line - TeX - LaTeX Stack Exchange |
@{}ってのは、セル両脇のスペースの文字をどうするか指定するやつ。デフォルトではスペースが入るが、@{}なのでなにも出力されない設定になってる。
@{hello}とかすると、セルの両脇にhelloと出てくる。
I saw people use @{} in the array's environment at Align a linear program. I can understand that l means flush the array cell to left, but cannot understand what the purpose of @{} or find it in g... Question about @{} used in array environment - TeX - LaTeX Stack Exchange |
ちなみに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} |
逆に下にくっついちゃう。
うまくやりたいならそもそも変に詰めようとするなってこったな。
TeX Q & A on Moodle テスト中 TeX Forum - |