MWEB如下,希望得到的效果是:将参考文献列表中的 url 的字符串文本变成“点此访问”,并且仍可以点击跳转。
% !TeX TXS-program:bibliography = biber
\documentclass{ctexart}
\begin{filecontents*}[overwrite]{ref.bib}
@Online{ctex2022,
% eprint = {点此访问:},
% eprinttype = {github},
title = {CTEX 宏集手册},
author = {CTEX.ORG},
date = {2022-07-14},
url = {https://github.com/CTeX-org/ctex-kit}
}
@Online{xecjk2022,
% eprint = {点此访问:},
% eprinttype = {CTAN},
title = {xeCJK 宏包},
author = {CTEX.ORG},
date = {2022-08-06},
url = {https://ctan.org/pkg/xecjk}
}
@Comment{jabref-meta: databaseType:biblatex;}
\end{filecontents*}
%% ↓参考文献管理↓ %%
\usepackage[style=numeric,backend=biber]{biblatex}
\addbibresource[location=local]{ref.bib}
%\DeclareFieldFormat{eprint:ctan}{eprint}
%\DeclareFieldFormat{eprint:github}{eprint}
\begin{document}
\title{\LaTeX 公园}
\author{佚\quad 名}
\date{\zhtoday}
\maketitle
\begin{abstract}
本手册准备介绍一些适合小说创作者的LaTeX宏包,例如\cite{ctex2022}。
\end{abstract}
\nocite{*}
\printbibliography[title=参考文献,heading=bibintoc]
\end{document}
1.如果对所有url都统一显示“点此访问”:
\usepackage[hidelinks]{hyperref}
\DeclareFieldFormat{url}{\href{#1}{[点此访问]}}2.如果对不同的条目有客户化需求,可以利用现有的暂时没用上的字段来存储需要显示的内容,比如titleaddon:
@Online{ctex2022,
% eprint = {点此访问:},
% eprinttype = {github},
title = {CTEX 宏集手册},
author = {CTEX.ORG},
date = {2022-07-14},
url = {https://github.com/CTeX-org/ctex-kit},
titleaddon = {abc}
}
@Online{xecjk2022,
% eprint = {点此访问:},
% eprinttype = {CTAN},
title = {xeCJK 宏包},
author = {CTEX.ORG},
date = {2022-08-06},
url = {https://ctan.org/pkg/xecjk},
titleaddon = {xyz}
}\DeclareFieldFormat{url}{%
\iffieldundef{titleaddon}
{\href{#1}{[点此访问]}} % 如果 titleaddon 为空,显示默认文字
{\href{#1}{[\strfield{titleaddon}]}} % 如果不为空,显示 titleaddon 的内容
}
\DeclareFieldFormat{titleaddon}{}
请教下 eprint eprinttype eprintclass 这三个键怎么用呢?能为任意资源网站指定特定文本吗?
eprint: 相当于文献在资源库的唯一id,有了它就能在对应的资源库找到它,至于能不能通过这个id跳转,要看资源库有没有暴露相应的接口,比如github仓库,一般就是“用户/仓库名”。eprinttype: 相当于资源库的名字。eprintclass: 文献在资源库中的细分类别理论上是可以用这些为任意资源网站指定特定文本的,但有些失去了他本来的用意。
像
arxiv上文献的地址是这样的https://arxiv.org/abs/2601.00044,所以给出eprint和eprinttype就能很方便地拼出这个访问地址。如果你要显示自定义的文本,你只需要重定义arxiv这个资源库的格式就行了。在我看来,如果所有资源库都像
arxiv这样可以通过一个简单的唯一id来访问资源,那会方便很多,但是有些网站(比如知网)并不对外提供一个统一的类似于明文的简单接口来访问资源,如果硬要把那些看起来像乱码的字段当成id来拼真实的地址,就有点不伦不类,倒不如直接用url,所以手动写url就成了另一种实现路径。github和ctan的访问地址比较简单,用eprint会稍微方便些。