Rmarkdownで論文や報告書を作成していると、kableで作成したlongtableのヘッダ下に二重線を引きたいという場面があります。しかし、よく知られた設定を使うと、通常の表では問題なく二重線になるのに、longtableでは二重線が重なってしまうという厄介な現象が起こります。
今回はそれを解決できる方法を見つけたので紹介していきます。
参考サイト
https://tex.stackexchange.com/questions/587915/how-to-draw-a-double-horizontal-line-after-head-in-all-longtables
https://tex.stackexchange.com/questions/238065/drawing-double-hline-with-longtabu?rq=1
problem when knit to pdf with longtable, footnote, hline and booktabs = TRUE · Issue #683 · haozhu233/kableExtra
My attempt is to highlight a row with two hlines in a longtable pdf output. It works as long the row to highlight is not...
よくある対処法とその課題
\hline\hlineを使う
\renewcommand{\toprule}{\hline\hline}

多くのサイトで紹介されているのが次の方法です。
しかし、\hline\hline
を指定すると、longtableでは二重線が重なってしまいます。
\hhlineを使う
\usepackage{hhline}
\renewcommand{\toprule}{\hhline{==}}

パッケージを使って二重線を引く方法です。
「=
」の数だけ列に二重線を引きます。

\hhline
パッケージを使えば制御できますが、=
の数を列数に合わせて書く必要があり、列数が異なる複数の表をpreambleで扱う場合に不便です。
対処方法
色々と試した結果、次の1行が最もシンプルかつ安定して動作する方法でした。
\renewcommand{\toprule}{\hline\noalign{\vskip 2pt}\hline}

この方法で、Rmarkdownのlongtableでも二重線が出力できるようになりました。
もし同じ問題で悩んでいる方がいたら、この記事がその一助となれば嬉しいです。
広告

Amazonアフィリエイトでブログ運営しています。
応援いただけると嬉しいです。

ネスカフェ 香味焙煎 ひとときの贅沢 スティック ブラック 20P,箱,レギュラー ソリュブル コーヒー,個包装

AHMAD TEA(アーマッドティー) クラシックセレクション ティーバッグ 20袋