如何更改 Pandoc / hyperref 的参考格式?

如何更改 Pandoc / hyperref 的参考格式?

\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: customMarkdown 文档的 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正确处理该案件...

相关内容