可能重复:
检查数字是否是 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):
笔记:
\IfEq
来自包裹xstring
。
代码:
\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 sep
和row sep
键(如果它们不是空格/空行)。
总的来说,该pgfplotstable
包是一个用于 LaTeXtabular
环境的生成器,其特点包括 - 数字格式, - 列或行的样式, - 后处理(即从现有列中计算派生列), - 高度可配置的界面。
特别是,它支持 longtable(请参阅手册中的关键示例begin table
)。