Как элегантно разорвать длинное поле дои

Как элегантно разорвать длинное поле дои

Это фрагмент кода из моей статьи.

\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не допускает переносов строк в ссылках.

ОтhyperrefREADME

Экспериментальная опция «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:

  1. Они достаточно короткие, поэтому разрыв строки не требуется.
  2. Их легко скопировать с бумаги. Длинный DOI почти бесполезен, если у вас есть только бумажная копия статьи (проще просто искать по названию/авторам).
  3. Они более эстетичны, а значит, вызывают меньшее сопротивление со стороны издателей и соавторов.

Я написал скрипт, который обработает существующий файл BibTeX и заменит все имена DOI на сокращенные DOI: https://github.com/mosco/bibtex-shorten-doi

Предупреждение: к сожалению, короткие DOI не считаются полноценными DOI и не могут использоваться для ручного поиска на любом сайте, кроме doi.org, например, CrossRef, Sci-Hub и т. д. Поэтому на данный момент я не рекомендую автоматическое преобразование всех DOI в вашей библиографии.

Связанный контент