![如何将外部存储的链接文本添加到超链接中?](https://linux22.com/image/407745/%E5%A6%82%E4%BD%95%E5%B0%86%E5%A4%96%E9%83%A8%E5%AD%98%E5%82%A8%E7%9A%84%E9%93%BE%E6%8E%A5%E6%96%87%E6%9C%AC%E6%B7%BB%E5%8A%A0%E5%88%B0%E8%B6%85%E9%93%BE%E6%8E%A5%E4%B8%AD%EF%BC%9F.png)
我有一堆链接,它们分别存储在文本文件中。我想创建一个 LaTeX 文档,其中使用相对路径访问这些文件,并将链接包含在最终 PDF 中。原因是以后我可能想要更改文件中的链接,生成的 PDF 应该会相应更新。
这是我尝试过的:
\usepackage{verbatim}
\href{\verbatiminput{./links/1.txt}}
但我收到了错误:
TeX 容量超出,抱歉 [输入堆栈大小=5000]。
这是一个最小工作示例:
创建文件:1.txt
1.1. 输入https://www.youtube.com/
1.2. 关闭文件
无需从文本文件中提取 Latex 代码
% !TeX program = lualatex
\documentclass{article}%
\usepackage{graphicx}
\usepackage{hyperref}% for the links
\usepackage{verbatim}% for the input
\begin{document}%
\href{https://www.youtube.com}{\includegraphics[width=\linewidth]{example-image}}
\end{document}%
效果很好!
现在从文本文件中提取
% !TeX program = lualatex
\documentclass{article}%
\usepackage{graphicx}
\usepackage{hyperref}% for the links
\usepackage{verbatim}% for the input
\begin{document}%
\href{\include{1.txt}}{\includegraphics[width=\linewidth]{example-image}}
\end{document}%
我收到错误:
第 10 行:@include 的参数有一个额外的}。\href{\include{1.txt}}
第 10 行:段落在 @include 完成之前结束。
\href{\include{1.txt}} 第 10 行:段落在 \href@ 之前结束
完成。 \href{\include{1.txt}} 第 10 行:额外 },或者忘记了
\endgroup. \href{\include{1.txt}} 第 10 行:\hbox 过满(15.0pt 太
宽)在段落中
编辑:
基于@Ulrike Fischer,我尝试过
% !TeX program = lualatex
\documentclass{article}%
\usepackage{graphicx}
\usepackage{hyperref,catchfile}% for the links
\usepackage{verbatim}% for the input
\begin{document}%
\CatchFileDef\myurl{1.txt}{}
\href{\myurl}{\includegraphics[width=\linewidth]{example-image}}
\end{document}%
但我得到了:
软件包 catchfile 错误:未找到文件“1.txt”。 \CatchFileDef\myurl{1.txt}{} 抑制目标为空的链接 段落中的 \hbox 过满(太宽 15.0pt)
编辑2:
还尝试创建一个新命令,但没有作用: http://www.emerson.emory.edu/services/latex/latex_19.html
\newcommand\urlFromFile[1]{\CatchFileDef{#1}{}}
编辑3:
% !TeX program = lualatex
\documentclass{article}%
\usepackage{graphicx}
\usepackage{hyperref,catchfile}% for the links
\usepackage{verbatim}% for the input
\usepackage{hyperref,catchfile}
\newcommand\urlFromFile[1]{%
\CatchFileDef\myurl{#1}{\catcode`\#=12\catcode`\%=12}%
\expandafter\url\expandafter{\myurl}}
\begin{document}
\href{\urlFromFile{1.txt}}{\includegraphics[width=\linewidth]{example-image}}
\end{document}
%
我得到:
第 16 行:超出 TeX 容量,抱歉 [参数堆栈大小=10000]。 \href{\urlFromFile{1.txt}}
答案1
您可以使用 catchfile 来加载 url:
\begin{filecontents*}{1.txt}
https://www.youtube.com/
\end{filecontents*}
\documentclass{report}
\usepackage{hyperref,catchfile}
\CatchFileDef\myurl{1.txt}{}
\begin{document}
\expandafter\url\expandafter{\myurl}
\end{document}
如果 url 包含特殊字符,如 % 或 _ 或 #,您可以使用命令的最后一个参数来设置 catcodes。
包含一些特殊字符和命令的扩展示例:
\begin{filecontents*}{1.txt}
https://www.youtube_blub#%.com/
\end{filecontents*}
\documentclass{report}
\usepackage{hyperref,catchfile}
\newcommand\urlFromFile[1]{%
\CatchFileDef\myurl{#1}{\catcode`\#=12\catcode`\%=12}%
\expandafter\url\expandafter{\myurl}}
\begin{document}
\urlFromFile{1.txt}
\end{document}