更新 longtabu 中的长度变量工作异常

更新 longtabu 中的长度变量工作异常

我有一张表格,我想让其中一列显示每行的累计总数,即它必须显示到该行为止另一列的值的总数。我考虑将总数累加到一个长度变量中(数字是浮点数),然后使用命令向其中添加值。

因此,当我使用 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将有类似的重新定义,但内部名称可能不同。

相关内容