من علتش رو توضیح میدهم امیدوارم خودت بتونی حلش کنی اما اگر باز هم بعد از فکر کردن نتونستی اطلاع بده. برای اینکه ببینیم چه اتفاقی داره میافته، یک مثال کوچک اما ساده که قابل فهم باشه رو ببینیم.
\documentclass{article}
\begin{document}
\newcounter{Page}
\setcounter{Page}{1}
\setbox0\hbox{\arabic{Page}}
\stepcounter{Page}
\unhbox0
\end{document}
چی کار داریم میکنیم؟ یک شمارنده به نام Page
تعریف کردیم و مقدار اولیش رو یک کردیم بعد کادر افقی با نام ۰ ذخیره کردیم، بعد به شمارنده اضافه کردیم بعد محتوای کادر رو نشون دادیم. چون مقدار شمارنده قبل از ذخیره شدن کادر اضافه نشده، همون مقدار قبلی رو نشون میده و اگر ما میخواهیم مقدار درست رو نشون بده این اضافه کردن شمارنده باید قبل از ذخیره کردن کادر بیاد.
این دقیقاً اتفاقی هست که توی output routine
بسته longtable
میافته.