\frontmatter
正如所述相关问题,pandoc
将 Markdown 链接转换为
[TeX.SE](https://tex.stackexchange.com/)
进入
\href{https://tex.stackexchange.com/}{TeX.SE}
然而,与那里所述相反,当前版本的 pandoc 却变成了
# A section
Linking to [A section]
或者
# A section {#a-section}
Linking to [A section](a-section)
都变成
\hyperdef{}{a-section}{\section{A section}}\label{a-section}
Linking to \hyperref[a-section]{A section}
即它使用\hyperref
而不是\href
。
\mainmatter
我想更改 pandoc 创建的参考格式,最好通过custom.cls
我告诉 pandoc 使用的自定义类(通过documentclass: custom
Markdown 文档的 YAML 标头)。所以我尝试了这个:
\documentclass{scrartcl}
\usepackage{hyperref}
\let\orghyperref\hyperref
\renewcommand*{\hyperref}[2]{\orghyperref[#1]{\texttt{#2}}}
\begin{document}
\hyperdef{}{a-section}{\section{A section}}\label{a-section}
Linking to \hyperref[a-section]{A section}
\end{document}
不幸的是,链接被渲染为
链接到 a-section]A 部分
到底哪里出了问题?
答案1
由于引用的标签是在括号[]
而不是大括号中传递的{}
,因此命令重新定义必须提供某种默认值,即在后面添加另一对括号[2]
:
\documentclass{scrartcl}
\usepackage{hyperref}
\let\orghyperref\hyperref %↓↓
\renewcommand*{\hyperref}[2][]{\orghyperref[#1]{\texttt{#2}}}
% ↑↑ that's all that changed
\begin{document}
\hyperdef{}{a-section}{\section{A section}}\label{a-section}
Linking to \hyperref[a-section]{A section}
\end{document}
不过,我确信如果该命令的第二个版本出现问题,
\hyperref{URL}{category}{name}{text}
从来没有使用过,但我真的没有足够关心\@ifnextchar
正确处理该案件...