TeX%20%D0%B2%20%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D0%B5%20%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%3F.png)
Я программно верстаю длинный документ из содержимого базы данных. В целях эффективности я хотел бы выводить весь сгенерированный код LaTeX как можно раньше. Я также хотел бы предоставить титульный лист для отчета, на котором указано количество сообщенных записейисделать титульный лист первой страницей сгенерированного pdf. В принципе, то, что я делаю сейчас, выглядит примерно так:
\documentclass[a4paper]{article}
\newcounter{entrycount}
\begin{document}
\stepcounter{entrycount} helo world\par
\stepcounter{entrycount} here are\par
\stepcounter{entrycount} some entries\par
\stepcounter{entrycount} from the database\par
\clearpage\centering
Title
This report lists \theentrycount\ entries.
\end{document}
здесь я имею в виду счетчикпослеостальная часть документа распечатана; очевидно, чтобы сделать так, чтобы титульный лист был первым, мне придется (1) использовать команду, которая вставляет титульный лист в начало других страниц (не уверен, возможно ли это) или (2) каким-то образом сослаться на конечное значение счетчикадоэто возможно (конечно, возможно, по крайней мере, при многократном запуске LaTeX?).
Я знаю, что есть и другие решения, включая перемещение заголовка в печатном стеке вручную наверх и подсчет записей в БД перед выводом любого кода LaTeX; однако такая простая вещь должна быть возможна в LaTeX, не так ли? Я пробовал ссылки, но пока не нашел работающего решения.
Обновлять
Посмотрев ссылку, предоставленную @Werner, я попробовал
This report lists \ref{ec} entries.
\section{helo world }\label{ec} \par
\section{here are }\label{ec} \par
\section{some entries }\label{ec} \par
\section{from the database }\label{ec} \par
что в некотором роде работает (неважно, что вывод неправильный — принцип, по-видимому, правильный). Но когда я это делаю
\stepcounter{entrycount}\label{ec} helo world\par
\stepcounter{entrycount}\label{ec} here are\par
\stepcounter{entrycount}\label{ec} some entries\par
\stepcounter{entrycount}\label{ec} from the database\par
Я не получаю ничего, кроме пробела на выходе. Я предполагаю, что мне придется продвигать свой счетчик, чтобы он действовал специально, чтобы он был захвачен метками. Но как?
решение1
@egreg направил меня на правильный путь. Полностью рабочий минимальный пример:
\documentclass[a4paper]{article}
\usepackage{totcount}
\newcounter{entrycount}\regtotcounter{entrycount}
\begin{document}
{\centering
Title
This report lists \total{entrycount} entries.
}
\clearpage
\stepcounter{entrycount}helo world\par
\stepcounter{entrycount}here are\par
\stepcounter{entrycount}some entries\par
\stepcounter{entrycount}from the database\par
\end{document}
можно сказать, что даже простые вещи часто сложны в TeX.totcount
руководствоговорит: «Ссылка на общее количество разделов, страниц, цитат, пунктов списка или чего-либо еще в документе может оказаться сложной задачей».