
Как определить команду, чтобы сохранить только доменное имя ссылки, например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
.