Это фрагмент кода из моей статьи.
\RequirePackage{filecontents}
\begin{filecontents}{bib.bib}
@article{baumert62,
author = {Baumert, Leonard and Golomb, Solomon W. and Hall, Jr, Marshall},
doi = {10.1090/S0002-9904-1962-10761-7},
journal = {Bulletin of the American Mathematical Society},
number = 3,
pages = {237--238},
title = {Discovery of an Hadamard Matrix of Order 92},
volume = 68,
year = 1962
}
\end{filecontents}
\documentclass{article}
% for back reference in bibliography
\usepackage[ocgcolorlinks,pdfusetitle]{hyperref}
% for biblatex with biber
\usepackage[
backend=biber,
style=alphabetic,
citestyle=alphabetic,
backref=true]{biblatex}
% for DOI field
\usepackage{doi}
\addbibresource{bib.bib}
\begin{document}
The first missing order of 92 was resolved in 1962 by Baumert, Golomb,
and Hall Jr. \cite{baumert62} who ran computer experiment on Williamson's method.
%%% bibliography
\printbibliography
\end{document}
Он генерирует библиографический элемент,ДОИполе слишком длинное.
Естественно, я думаю, что все хотят это исправить. Я знаю, что я могу использовать следующее, как описано вэтотнить.
\setcounter{biburlnumpenalty}{100} % allow breaks at numbers
\setcounter{biburlucpenalty}{100} % allow breaks at uppercase letters
\setcounter{biburllcpenalty}{100} % allow breaks at lowercase letters
Вместо того, чтобы разрешать переносы строк на цифрах, строчных и заглавных буквах, я хотел бы разрешить переносы строк на специальных символах, таких как /
, .
и -
. Поскольку я имею дело с полем DOI, я думаю, что это более подходящие места для разрешения переносов строк, а не обычных буквенно-цифровых символов. Как это сделать?
решение1
Эта опция ocgcolorlinks
не допускает переносов строк в ссылках.
Экспериментальная опция «ocgcolorlinks»
Идея заключается в том, чтобы при просмотре ссылки были цветными, а при печати — бесцветными.
...
- Главный недостаток: ссылки нельзя переносить на другие строки.
Другими словами, это почти то же самое, что и вариант colorlinks
, но с двумя отличиями.
colorlinks
допускает переносы строк в ссылках, аocgcolorlinks
не делает;colorlinks
сохраняет цвета при печати документа,ocgcolorlinks
печатая его черным.
Итак, что можно сделать, чтобы обойти это?
Используйте colorlinks
опцию вместо ocgcolorlinks
и при печати документа выберите печать в «черно-белом» варианте.
МВЭ:
\RequirePackage{filecontents}
\begin{filecontents}{bib.bib}
@article{baumert62,
author = {Baumert, Leonard and Golomb, Solomon W. and Hall, Jr, Marshall},
doi = {10.1090/S0002-9904-1962-10761-7},
journal = {Bulletin of the American Mathematical Society},
number = 3,
pages = {237--238},
title = {Discovery of an Hadamard Matrix of Order 92},
volume = 68,
year = 1962
}
\end{filecontents}
\documentclass{article}
% for back reference in bibliography
\usepackage[colorlinks,pdfusetitle]{hyperref}
% for biblatex with biber
\usepackage[
backend=biber,
style=alphabetic,
citestyle=alphabetic,
backref=true]{biblatex}
% for DOI field
\usepackage{doi}
\addbibresource{bib.bib}
\begin{document}
The first missing order of 92 was resolved in 1962 by Baumert, Golomb,
and Hall Jr. \cite{baumert62} who ran computer experiment on Williamson's method.
%%% bibliography
\printbibliography
\end{document}
Выход:
решение2
Просто для полноты картины, чтоocgcolorlinks
(цветные ссылки, печатающиеся черным цветом), которые обтекают разрывы строк (и разрывы страниц, если необходимо), теперь возможны с помощьюocgx2
упаковка:
\usepackage{hyperref} \usepackage[ocgcolorlinks]{ocgx2}
МВЭ:
\RequirePackage{filecontents}
\begin{filecontents}{bib.bib}
@article{baumert62,
author = {Baumert, Leonard and Golomb, Solomon W. and Hall, Jr, Marshall},
doi = {10.1090/S0002-9904-1962-10761-7},
journal = {Bulletin of the American Mathematical Society},
number = 3,
pages = {237--238},
title = {Discovery of an Hadamard Matrix of Order 92},
volume = 68,
year = 1962
}
\end{filecontents}
\documentclass{article}
% for back reference in bibliography
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[pdfusetitle]{hyperref}
\usepackage[ocgcolorlinks]{ocgx2}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% for biblatex with biber
\usepackage[
backend=biber,
style=alphabetic,
citestyle=alphabetic,
backref=true]{biblatex}
% for DOI field
\usepackage{doi}
\addbibresource{bib.bib}
\begin{document}
The first missing order of 92 was resolved in 1962 by Baumert, Golomb,
and Hall Jr. \cite{baumert62} who ran computer experiment on Williamson's method.
%%% bibliography
\printbibliography
\end{document}
решение3
Вы можете использоватьhttp://shortdoi.orgдля создания короткого постоянного псевдонима для DOI, как упомянул @matth. Эти сокращенные DOI имеют несколько преимуществ по сравнению с каноническим DOI:
- Они достаточно короткие, поэтому разрыв строки не требуется.
- Их легко скопировать с бумаги. Длинный DOI почти бесполезен, если у вас есть только бумажная копия статьи (проще просто искать по названию/авторам).
- Они более эстетичны, а значит, вызывают меньшее сопротивление со стороны издателей и соавторов.
Я написал скрипт, который обработает существующий файл BibTeX и заменит все имена DOI на сокращенные DOI: https://github.com/mosco/bibtex-shorten-doi
Предупреждение: к сожалению, короткие DOI не считаются полноценными DOI и не могут использоваться для ручного поиска на любом сайте, кроме doi.org, например, CrossRef, Sci-Hub и т. д. Поэтому на данный момент я не рекомендую автоматическое преобразование всех DOI в вашей библиографии.