我只是想问一下是否有人知道Pandoc的简短过滤器会自动为任何链接添加脚注。我只想在我的打印文档中有可读的链接源。 所以要说明,我想从
开始[link](url)
类似
[link](url)[^link: url]
因此,在打印的PDF中,我所指的链接的URL应该在页面底部可见。
答案 0 :(得分:6)
尝试
pandoc -o myfile.pdf -V links-as-notes=true myfile.md
这仅适用于PDF输出,但它很简单,不需要过滤器。 请参阅“LaTeX的变量”下的用户指南/ README。
编辑:使用这种方法,您在主文本中不再有超链接,只是带有URL的注释。所以它并不完全是你所要求的,但也许就足够了。
编辑:这是你如何使用pandoc filter来保留链接(未经测试,但应该关闭):
import Text.Pandoc.JSON
main = toJSONFilter go
where go (Link attr lab (src, tit)) = Span ("",[],[]) [Link attr lab (src, tit), Note [Plain [Str src]]]
go x = x
答案 1 :(得分:2)
使用Pandoc过滤器执行此操作的替代方法(如John MacFarlane answer中所述)将使用LaTeX ,创建*.tex
文件并将其包含在内,例如通过{{ 1}} -H
--include-in-header
的{{1}}选项。
根据TeX& C上的Heiko Oberdiek answer到Auto generate list of \url
usages within document问题,LaTeX代码可能看起来像这样(尚未经过测试) LaTeX StackExchange:
pandoc
我认为Pandoc自动包含\let\saved@hyper@linkurl\hyper@linkurl
\renewcommand*{\hyper@linkurl}[2]{%
\saved@hyper@linkurl{#1}{#2}%
\footnote{\url{#1}}%
}
包;如果没有,您需要在上面代码的顶部添加url
。
请注意,上述解决方案中的脚注中的链接使用\usepackage{url}
而不是裸\url{<link-target>}
作为脚注内容。我认为它看起来更好,并且URL中的<link-target>
肯定没有问题(我不知道Pandoc是否为了LaTeX而逃脱了),并且没有URL友好的换行处理问题对于很长的网址。
John MacFarlane的答案可以很简单地修改来做到这一点:
_
答案 2 :(得分:2)
以下解决方案提供了OP请求(以及我需要的)无过滤器的确切内容。无论您在文档中有链接,它都会保留链接,添加脚注,并在脚注中提供完整的URL。
但是,此解决方案确实需要您修改LaTeX模板。
如果您尚未在某处复制默认模板,请立即使用pandoc -D latex
并将该输出保存到文件中,可能是template.latex
,我将其用作文件其余部分的示例名称。
在模板中找到以下部分(默认模板中为present):
$if(links-as-notes)$
% Make links footnotes instead of hotlinks:
\renewcommand{\href}[2]{#2\footnote{\url{#1}}}
$endif$
并将其替换为
$if(links-as-notes)$
\usepackage{letltxmacro}
% Alias href to originalHref to avoid an infinite loop
\LetLtxMacro{\originalHref}{\href}
% Make links footnotes in addition to hotlinks:
\renewcommand{\href}[2]{\originalHref{#1}{#2}\footnote{\url{#1}}}
$endif$
然后像pandoc -V links-as-notes --template=template.latex document.md -o document.pdf
一样运行pandoc。你完成了!
您可以进行一些调整。如果您厌倦了撰写-V links-as-notes
,您可以:
links-as-notes: true
添加到您的文档YAML metadata或$if(links-as-notes)$
和相应的$endif$
。