Есть ли команда LaTeX, которая печатает дату последнего изменения фактического документа? Поскольку проекты LaTeX состоят из более чем одного файла, эта команда идеально печатает дату фактического файла, а не проект.
Команда LaTeX для последних изменений
Ответ 1
К сожалению, TeX не предоставляет команды для такой информации; единственный способ получить такую информацию -
- запустив не-TeX script для создания файла TeX перед запуском LaTeX и включив этот файл в ваш основной документ LaTeX, или
- запустив внешний script из TeX (который работает только в том случае, если включена так называемая функция write18 или shellescape, вам придется обратиться к руководству по вашей реализации TeX для этого и не иметь упрямого sysadmin).
Возможно, что расширенные TeXs поддерживают файловые инфо-команды (возможно, luaTeX?), но не являются частью TeX.
Ответ 2
pdfTeX предоставляет примитив \pdffilemoddate
для запроса этой информации для файлов. (LuaTeX использует свои собственные функции Lua для одной и той же вещи.) Поскольку pdfTeX используется по умолчанию во всех дистрибутивах LaTeX за последние несколько лет (по крайней мере), нет никакого вреда в использовании новой функциональности, если вы не имеете дело с очень старым производством системы. Вот пример:
\documentclass{article} \begin{document} \def\parsedate #1:20#2#3#4#5#6#7#8\empty{20#2#3/#4#5/#6#7} \def\moddate#1{\expandafter\parsedate\pdffilemoddate{#1}\empty} this is the moddate: \moddate{\jobname.tex} \end{document}
(Предположим, что файл был изменен с 2000 года.)
Ответ 3
Пакет filemod, кажется, делает именно то, что вам нужно. Чтобы получить последнюю измененную дату файла, вы просто включаете пакет обычным способом:
\usepackage{filemod}
и время модификации текущего документа напечатано:
\filemodprintdate{\jobname}
вы также можете распечатать время модификации, и есть много вариантов форматирования вывода.
Ответ 4
Если вы используете автоматическую систему сборки, вы можете попросить ее сгенерировать файл (возможно, с именем today.sty
), который зависит от всех исходных файлов.
В make это может выглядеть так:
today.sty: $LATEX_SRCS
echo "\date{" > [email protected]
date +D >> [email protected]
echo "}" >> [email protected]
и \usepackage{today.sty}
.
Будет использоваться дата первой сборки после изменения файла и не будет обновляться до тех пор, пока вы не удалите today.sty
или не измените другой исходный файл.
Ответ 5
поблагодарить dmckee
LATEX_SRCS = test.tex
define moddate
date +%Y%m%d%H%M%S
endef
today.sty: $(LATEX_SRCS)
@echo "\def\moddate{"$(shell $(moddate))"}"> [email protected]
Ответ 6
Существует пакет getfiledate LaTeX (по умолчанию он был частью моего дистрибутива LaTeX). Кажется, он предназначен для автоматического вывода абзаца следующим образом:
The date of last modification of file misc-test1.tex was 2009-10-11 21:45:50.
с небольшим количеством возможностей для настройки выхода. Вы точно можете получить только дату. Тем не менее, я не мог понять, как избавиться от новой строки в течение даты и как изменить формат даты. Честно говоря, я думаю, что авторы внедрили его именно для единственной цели, в которой они нуждались, и это довольно громоздко для общего использования.