![Как использовать строку во вспомогательном файле для обновления заголовка?](https://rvso.com/image/281466/%D0%9A%D0%B0%D0%BA%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D1%83%20%D0%B2%D0%BE%20%D0%B2%D1%81%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%BC%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B5%20%D0%B4%D0%BB%D1%8F%20%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B7%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BA%D0%B0%3F.png)
Документ (типичный для многих) имеет заголовок, который отображает временную метку в виде текстовой строки («25 декабря 2013 г.»). Строка временной метки берёт начало в файле, "update"
который загружается с помощью \input
.
Я попытался создать минимальный рабочий пример, но пример (три файла) работает не так, как я ожидал.
% this is a listing of example.cls
\ProvidesPackage{example}
\LoadClassWithOptions{book}
\newcommand{\timestamp}[1]{#1}
\newcommand{\revision}{ \timestamp}
% this is a listing of example.tex
\documentclass[letterpaper]{example}
\begin{document}
This line represents the document header: \revision
\input{update} % update data from external file
Now the header should reflect the update: \revision
\end{document}
% this is a listing of "update"
% the date string should update the document header:
\timestamp{25 December 2013}
This line represents update text, which typically consists of dozens of lines.
После долгих поисков и чтения я все еще не понимаю, какой механизм LaTeX – например, \savebox
или \renewcommand
– подходит для этой задачи. Кроме того, я не уверен, где именно должны располагаться определения \timestamp
и \revision
– должны ли они быть определены в файле класса ( example.cls
), в основном файле документа ( example.tex
) или в файле ( update
), который периодически обновляет основной файл документа? Я склонен определять как можно больше в файле класса, поскольку существует более тысячи файлов документов.
решение1
Я думаю, это то, что вам нужно. Вам не нужен новый .cls
файл.
\documentclass{book}
\newcommand{\revision}{dummy value}
\newcommand{\timestamp}[1]{%
\renewcommand{\revision}{#1}
}
\begin{document}
This line represents the document header: \revision
\input{update} % update data from external file, type .tex
Now the header should reflect the update: \revision
\end{document}
Если строка редакции, которая отображается в заголовке документа перед вводимым текстом, требует нового значения временной метки, вам придется потрудиться немного усерднее — см.как скопировать текст в другую часть документа?