複雑で長い表を含む一連の産業レポートを準備するために、サイトで見つけたコードのサンプルを組み合わせていますが、これは有望に思えます。私の分野では、通常推奨されている方法にもかかわらず、セルを垂直線と水平線で区切る必要があります。MWE(実際の必要性に比べて非常に簡略化されています)では、まだ2つの問題に直面しています。データ行1と2の間に水平線がありません。また、2つの列(および追加される他の列)の間に垂直線を配置できませんでした。コード(列の書式設定をどこで行うのが最適か、各行の間に水平線を定義するなど)や外観を改善するためのヒントも歓迎します。MWEでは、垂直線が連続していません。
\documentclass[a5paper]{article}
\usepackage{pgfplotstable}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{colortbl}
\usepackage{array}
\usepackage[top=8 cm,bottom=8cm]{geometry} %For demo purposes
\usepackage{filecontents}
\begin{filecontents}{data1.csv}
column1,column2
5001,102
5002,75
5003,115
5004,45
5005,97
5036,110
5037,77
5038,147
5039,89
5040,62
5041,160
5042,102
\end{filecontents}%
\begin{document}
%%% Code from Dr. Christian Feuersanger ------ for not using headers.----------------------
\pgfkeysifdefined{/pgfplots/table/output empty row/.@cmd}{
% upcoming releases offer this more convenient option:
\pgfplotstableset{
empty header/.style={
every head row/.style={output empty row},
}
}
}{
% versions up to and including 1.5.1 need this:
\pgfplotstableset{
empty header/.style={
typeset cell/.append code={%
\ifnum\pgfplotstablerow=-1 %
\pgfkeyssetvalue{/pgfplots/table/@cell content}{}%
\fi
}
}
}
}
%%%-----------------------------------------------
\newcommand\MyHead[2]{%
\multicolumn{1}{|> {\centering}m{#1}|}{#2}
}
\pgfplotstabletypeset[
empty header,
outfile = test.dat,
begin table=\begin{longtable},
every first column/.style ={%
column type/.add={|}{}
},
every last column/.style ={%
column type/.add={}{|}
},
every head row/.style={output empty row},
every nth row={1}{after row=\midrule},
every first row/.append style={before row={%
\caption{This is a long table spreading over several pages.}%
\label{tab:DataTable}\\\toprule
\MyHead{4cm} {column with long header} & \MyHead{4cm} {Other column with very long header} \\
\hline
\endfirsthead
%
\multicolumn{2}{c}%
{{\bfseries Table \thetable\ Continued from previous page}} \\
\toprule
%
\MyHead{4cm} {column with long header} & \MyHead{4cm} {Other column with very long header} \\
\hline
\endhead
%
\midrule \multicolumn{2}{r}{{Continued on next page}} \\ \bottomrule
\endfoot
%
\midrule
\multicolumn{2}{r}{{End of table}} \\ \bottomrule
\endlastfoot
}},%
%
end table=\end{longtable},
col sep=comma,
string type,
]{data1.csv}
\end{document}
答え1
質問の簡単なところから始めましょう:
- 縦線を使いたい場合、 のルールは使用しないでください
\booktabs
。代わりに、\hline
垂直線の場合は次のようにすることをお勧めします。
every odd column/.style ={% column type/.add={|}{} }, every even column/.style ={% column type/.add={|}{} }, every last column/.style ={% column type/.add={}{|} },
私の好みとしては、 と言った方が良いでしょう
every nth row={1}{before row=\hline}
。この表の下のテキスト(次のページに続く)には、その下に線がありません。
完全なコード:
\documentclass[a5paper]{article}
\usepackage{pgfplotstable}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{colortbl}
\usepackage{array}
\usepackage[top=8 cm,bottom=8cm]{geometry} %For demo purposes
\usepackage{filecontents}
\begin{filecontents}{data1.csv}
column1,column2
5001,102
5002,75
5003,115
5004,45
5005,97
5036,110
5037,77
5038,147
5039,89
5040,62
5041,160
5042,102
\end{filecontents}%
\begin{document}
%%% Code from Dr. Christian Feuersanger ------ for not using headers.----------------------
\pgfkeysifdefined{/pgfplots/table/output empty row/.@cmd}{
% upcoming releases offer this more convenient option:
\pgfplotstableset{
empty header/.style={
every head row/.style={output empty row},
}
}
}{
% versions up to and including 1.5.1 need this:
\pgfplotstableset{
empty header/.style={
typeset cell/.append code={%
\ifnum\pgfplotstablerow=-1 %
\pgfkeyssetvalue{/pgfplots/table/@cell content}{}%
\fi
}
}
}
}
%%%-----------------------------------------------
\newcommand\MyHead[2]{%
\multicolumn{1}{|> {\centering}m{#1}|}{#2}
}
\pgfplotstabletypeset[
empty header,
outfile = test.dat,
begin table=\begin{longtable},
every odd column/.style ={%
column type/.add={|}{}
},
every even column/.style ={%
column type/.add={|}{}
},
every last column/.style ={%
column type/.add={}{|}
},
every head row/.style={output empty row},
every nth row={1}{before row=\hline},
every first row/.append style={before row={%
\caption{This is a long table spreading over several pages.}%
\label{tab:DataTable}\\\hline
\MyHead{4cm} {column with long header} & \MyHead{4cm} {Other column with very long header} \\
\hline
\endfirsthead
%
\multicolumn{2}{c}%
{Table \thetable\ Continued from previous page} \\
\hline
%
\MyHead{4cm} {column with long header} & \MyHead{4cm} {Other column with very long header} \\
\endhead
%
\multicolumn{2}{r}{{Continued on next page}} \\
\endfoot
%
\hline
\multicolumn{2}{r}{{End of table}} \\
\endlastfoot
}},%
%
end table=\end{longtable},
col sep=comma,
string type,
]{data1.csv}
\end{document}