newcommand、renewcommand 和 longtable 的作用域问题

newcommand、renewcommand 和 longtable 的作用域问题

我要解决的问题是:我想在我的 longtable(其内容从文档外部生成)中每行设置和重置一个值(如总和值)。

\documentclass[12pt,twoside]{article}
\newcommand{\myvalue}{initialise}
\usepackage{longtable}
\begin{document}
\begin{longtable}{ll}
\myvalue&test\renewcommand{\myvalue}{1}\\
test &test\renewcommand{\myvalue}{2}\\
test &test\renewcommand{\myvalue}{3}\\
test&test\renewcommand{\myvalue}{4}\\\pagebreak
\myvalue&test\renewcommand{\myvalue}{5}\\
test&test\renewcommand{\myvalue}{6}\\\pagebreak
\myvalue&test\renewcommand{\myvalue}{7}\\
test &test\renewcommand{\myvalue}{8}
\end{longtable}
This was my longtable example for \myvalue
\end{document}

我期望的是,在每一页的开头都有一个新的\myvalue(“初始化”,“4”,“6”)和表格“8”之后。

我得到的只是“初始化”,\myvalue从未改变。

https://v1.overleaf.com/17449534ktcscvntyfhy#/66313130/

答案1

试试这个:使用一个自动全局的计数器,它似乎更适合您的目的。

\documentclass[12pt,twoside]{article}
\newcounter{myvalue}
\usepackage{longtable}
\begin{document}
\setcounter{myvalue}{0}
\begin{longtable}{ll}
\themyvalue&test\stepcounter{myvalue}\\
test &test\stepcounter{myvalue}\\
test &test\stepcounter{myvalue}\\
test&test\stepcounter{myvalue}\\\pagebreak
\themyvalue&test\stepcounter{myvalue}\\
test&test\stepcounter{myvalue}\\\pagebreak
\themyvalue&test\stepcounter{myvalue}\\
test &test\stepcounter{myvalue}
\end{longtable}
This was my longtable example for \themyvalue
\end{document}

至于你的评论,你可以

\documentclass[12pt,twoside]{article}
\newcommand{\myvalue}{initialise}
\usepackage{longtable}
\begin{document}
\begin{longtable}{ll}
\myvalue&test\global\def\myvalue{1}\\
test &test\global\def\myvalue{2}\\
test &test\global\def\myvalue{3}\\
test&test\global\def\myvalue{4}\\\pagebreak
\myvalue&test\global\def\myvalue{5}\\
test&test\global\def\myvalue{6}\\\pagebreak
\myvalue&test\global\def\myvalue{7}\\
test &test\global\def\myvalue{8}
\end{longtable}
This was my longtable example for \myvalue
\end{document}

如果你告诉我们你最终追求的是什么,我想会有更优雅的方式来实现你真正想要的。

相关内容