我正在为我的学生编写一本手册,并使用社区发布的许多博客作为资源。我知道网站链接过时的速度有多快。每个学期我都想确保文档中的链接是最新的并且有效。有没有办法在 latex 中检查链接是否至少没有返回错误(如 404)。或者我必须编写一个独立的脚本来验证这一点?谢谢!
答案1
在 LuaLaTeX 中,你可以直接检查链接,例如
\documentclass{article}
\usepackage{luacode}
\usepackage{hyperref}
\begin{luacode}
http = require("socket.http")
function check(url)
local _, c = http.request(url)
if c ~= 200 then
tex.sprint(" (INVALID)") -- print to document
texio.write("Warning: " .. url .. " invalid") -- print to TeX log
end
end
\end{luacode}
\newcommand{\checkedlink}[1]{\url{#1}\directlua{check("#1")}}
\begin{document}
\checkedlink{https://google.com/}
\checkedlink{https://iujwhfelfwiejowi.com/}
\end{document}
该命令\checkedlink
使用宏打印链接\url
并调用 Lua 函数check()
。此函数尝试使用 HTTP 请求访问给定的 URL。如果返回代码不是 200,它会附加(无效的)到文档中的链接并将警告写入日志。