我有一张表格,我想让其中一列显示每行的累计总数,即它必须显示到该行为止另一列的值的总数。我考虑将总数累加到一个长度变量中(数字是浮点数),然后使用命令向其中添加值。
因此,当我使用 longtable(而不是 longtabu)作为表时,它看起来很好。以下是正确运行的示例:
\documentclass[11pt,a4paper]{article}
\usepackage{tabu}
\usepackage{longtable}
\newlength\yyy
\setlength{\yyy}{0pt}
\newcommand{\yy}[1]{#1\global\addtolength{\yyy}{#1pt}\relax}
\begin{document}
\the\yyy
\begin{longtable}{l|r|r}
ID & Amount & Total\endhead
a & \yy{100} & \the\yyy\\
b & \yy{100} & \the\yyy\\
c & \yy{100} & \the\yyy
\end{longtable}
\end{document}
及其输出(忽略“pt”,我还没有在这个 MWE 中去掉它): 但是,如果我使用 longtabu(我需要出于其他原因使用),第三列的值从 700 开始。以下是出现错误的示例:
\documentclass[11pt,a4paper]{article}
\usepackage{tabu}
\usepackage{longtable}
\newlength\yyy
\setlength{\yyy}{0pt}
\newcommand{\yy}[1]{#1\global\addtolength{\yyy}{#1pt}\relax}
\begin{document}
\the\yyy
\begin{longtabu} to \textwidth {X[l]X[r]X[r]}
ID & Amount & Total\endhead
a & \yy{100} & \the\yyy\\
b & \yy{100} & \the\yyy\\
c & \yy{100} & \the\yyy
\end{longtabu}
\end{document}
我得到的输出是:
知道为什么会出现这种情况吗?提前致谢。
答案1
解决您的问题的一种不太复杂的方法(比找到一种检查何时longtabu
测量的方法)是简单地添加
\global\yyy0pt\relax
在表格的第一个单元格内。
每次都会重新进行计算,但总是从相同的零初始值开始。
答案2
\global\addtolength
不支持 LaTeX 中的语法(如果加载,它将中断,calc
这是核心 LaTeX 分发的一部分)但这不是问题。\longtabu
(例如tabularx
)多次设置主体以查找列宽,因此如果您进行全局分配,则效果会根据包需要进行多少次试运行才能找到正确的宽度而增加,
tabularx
在试用期间重新定义脚注(否则你会因为同样的原因得到多个脚注),这样tabularx
你就可以测试
\ifx\@footnotetext\TX@trial@ftn
如果这是错误的,那么您正在进行最后的排版运行,因此可以进行全局增量。
longtabu
将有类似的重新定义,但内部名称可能不同。