CSVTools 和每五行一行

CSVTools 和每五行一行

可能重复:
检查数字是否是 4 的倍数

首先,请允许我为一个可能很愚蠢的问题道歉。我想制作一个表格,但我想使用 CSVTools,因为,主要是因为它有大量数据,而且就我个人而言,我觉得把所有这些东西混在一起有点难看。我需要创建一个长表,其中每五行都有一条水平线。

我正在查看本文档中的示例 7 和 8:

http://mirror.hmc.edu/ctan/macros/latex/contrib/csvtools/doc/csvtools.pdf

我知道这个问题的关键是以某种方式修改示例 8 中的这一行:

\ifthenelse{\isodd{\value{csvrownumber}}}{%
\\\rowcolor{green}}{\\\rowcolor{blue}}
}

但我需要的(而不是奇数)是一个余数项(即if(remainder(csvrownumber/5)==0){ line }).

是否存在这样的事情,有没有更好的方法?

谢谢!

答案1

这是每 5 行进行一次 ifthen 测试。

在此处输入图片描述

\documentclass{article}

\usepackage{ifthen}

\newcounter{tst}



\begin{document}

\setcounter{tst}{3}

\stepcounter{tst} \thetst: \ifthenelse{\numexpr 5*(\value{tst} / 5) \relax = \value{tst}}{yes}{no}

\stepcounter{tst} \thetst: \ifthenelse{\numexpr 5*(\value{tst} / 5) \relax = \value{tst}}{yes}{no}

\stepcounter{tst} \thetst: \ifthenelse{\numexpr 5*(\value{tst} / 5) \relax = \value{tst}}{yes}{no}

\stepcounter{tst} \thetst: \ifthenelse{\numexpr 5*(\value{tst} / 5) \relax = \value{tst}}{yes}{no}

\stepcounter{tst} \thetst: \ifthenelse{\numexpr 5*(\value{tst} / 5) \relax = \value{tst}}{yes}{no}

\stepcounter{tst} \thetst: \ifthenelse{\numexpr 5*(\value{tst} / 5) \relax = \value{tst}}{yes}{no}

\stepcounter{tst} \thetst: \ifthenelse{\numexpr 5*(\value{tst} / 5) \relax = \value{tst}}{yes}{no}

\stepcounter{tst} \thetst: \ifthenelse{\numexpr 5*(\value{tst} / 5) \relax = \value{tst}}{yes}{no}

\stepcounter{tst} \thetst: \ifthenelse{\numexpr 5*(\value{tst} / 5) \relax = \value{tst}}{yes}{no}



\end{document}

答案2

pgf这是一个使用数学函数提供的版本\IfMultipleOf,可用于测试数字是否是指定数字的倍数(默认为 5):

在此处输入图片描述

笔记:

代码:

\documentclass{article}
\usepackage{tikz}% easy way to get pgfmath and \foreach
\usepackage{xstring}

\newcommand{\IfMultipleOf}[4][5]{%
    % #1 = optional number to determine multiplicity of (defaults to 5)
    % #2 = number to test
    % #3 = code to execute if multiple of #1
    % #4 = code to execute if not multiple of #1
    %
    \pgfmathsetmacro{\TempRemainder}{mod(#2,#1)}%
    \IfEq{\TempRemainder}{0}{#3}{#4}%
}%

\begin{document}

\begin{minipage}{0.45\linewidth}%
\foreach \x in {0,...,10} {%
    \x\ \IfMultipleOf{\x}{is}{is not} a multiple of 5\par
}%
\end{minipage}%
\begin{minipage}{0.45\linewidth}%
\foreach \x in {0,...,10} {%
    \x\ \IfMultipleOf[3]{\x}{is}{is not} a multiple of 3\par
}%
\end{minipage}%
\end{document}

答案3

pgfplotstable免责声明:这是基于以下内容的答案:两者都不csv工具也不 datatool. 我是 的作者pgfplotstable

由于问题被标记为“tables longtable tools”,我希望您发现使用替代方法pgfplotstable很有用:

\documentclass{standalone}

\usepackage{pgfplotstable}
\usepackage{booktabs}

\begin{document}
\pgfplotstabletypeset[
    every nth row={3}{before row=\midrule},
    every head row/.style={
    before row=\toprule,after row=\midrule},
    every last row/.style={
    after row=\bottomrule},
]{
    a b
    0 0
    1 1
    2 2
    3 3
    4 4
    5 5
    6 6
    7 7
    8 8
}

\end{document}

在此处输入图片描述

这是手册的摘录,网址为http://pgfplots.sourceforge.net/pgfplotstable.pdf。它用于booktabs生成页眉/页脚行。除了内联表(即在花括号内提供表格数据),您还可以使用文件名,即

\pgfplotstabletypeset[...]{file.csv}

并且您可以配置col seprow sep键(如果它们不是空格/空行)。

总的来说,该pgfplotstable包是一个用于 LaTeXtabular环境的生成器,其特点包括 - 数字格式, - 列或行的样式, - 后处理(即从现有列中计算派生列), - 高度可配置的界面。

特别是,它支持 longtable(请参阅手册中的关键示例begin table)。

相关内容