如何定义一个命令来仅保留链接的域名,例如http://www.google.com/search?=bang是否只提供 google.com 并将其显示为 URL 引用的组织字段?
非常感谢
答案1
这确实是一个不简单的请求,我强烈建议手动填写该organization
字段(您最不关心的问题是组织名称的大写:您不希望url = {http://nssdc.gsfc.nasa.gov/planetary/factsheet/moonfact.html}
出现这样的情况organization = {nasa}
,但是organization = {NASA}
)。
一些或多或少有用的解决方案作为概念证明biblatex
。biber
该源图进入序言部分。
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map[overwrite=false]{
\step[fieldsource=url, match=\regexp{^((?:f|ht)tps?://)?(?:www\.)?([^/]+)}, final]
\step[fieldset=organization, fieldvalue={$2}]
}
}
}
它尝试从字段中提取 URL 的域部分url
并将其映射到organization
字段。由于删除子域并非易事,尤其是考虑到有、、等 TLD .co.uk
,.info
因此.de
这些.com
仍包括在内。
\documentclass{article}
\usepackage[style=authoryear, backend=biber]{biblatex}
\usepackage{hyperref}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@ELECTRONIC{MEMSnet,
title = {What is {MEMS}?},
url = {http://www.memsnet.org/mems/what_is.html},
urldate = {2013-12-01},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map[overwrite=false]{
\step[fieldsource=url, match=\regexp{^((?:f|ht)tps?://)?(?:www\.)?([^/]+)}, final]
\step[fieldset=organization, fieldvalue={$2}]
}
}
}
\begin{document}
\nocite{MEMSnet,wilde,markey}
\printbibliography
\end{document}
给出
上面提到的两个问题都可以在这里观察到:人们可能希望看到MEMSnet
而不是memsnet.org
,并且CTAN
而不是tug.ctan.org
。