
Я хотел бы создать комментарий в моем файле Latex (.tex) следующим образом:
% My pgf version is: 3.1.9a
за исключением того, что номер версии («3.1.9a» в примере выше) берется из \pgfversion
команды.
Есть ли способ сделать это?
Примечание: По моему мнению, версию PGF лучше спрятать в файле .tex в качестве комментария, а не печатать в документе, который я создаю. Моя проблема в том, что весь текст после инициатора строки комментария '%' воспринимается буквально как текст комментария. Я использую MiKTeX в Windows и TeX Live в Ubuntu. Ответ должен быть совместим с обоими.
решение1
если вы сохраните скрипт Lua ниже какpgfv.lua
и иметь файл myfile.tex
, который имеет комментарий
% My pgf version is: anything
затем бег
texlua pgfv.lua myfile.tex
обновлю myfile.tex
так, чтобы комментарий содержал вашу текущую версию pgf
% My pgf version is: 3.1.9a
ПРИМЕЧАНИЕэтот скрипт перезаписывает файл с минимальной проверкой ошибок, сделайте резервную копию перед запуском.
Скрипт Lua;
-- get pgf version file
kpse.set_program_name("kpsewhich")
local pgfr=kpse.lookup("pgf.revision.tex")
local f = assert(io.open(pgfr, "r"))
local content = f:read("*all")
f:close()
-- extract version string
local v,v2,pgfversion = string.find(content,"pgfversion{([^}]*)")
local myfile = io.open(arg[1], "r")
local content = myfile:read("*all")
myfile:close()
print ("% My pgf version is: " .. pgfversion)
-- edit comment
content = string.gsub(content,
"%% My pgf version is: %S*",
"%% My pgf version is: " .. pgfversion)
-- update file BEWARE WRITES FILE
local myfile = io.open(arg[1], "w")
myfile:write(content)
myfile:close()