odomanov/biblatex-gost

Сокращение инициалов, состоящих из >1 символа

matsievskiysv opened this issue · 5 comments

Некоторые русские имена в английской транскрипции требуется сокращать двумя символами. Например, Юрий->Yuriy->Yu.; Ярослав->Yaroslav->Ya.. biblatex-gost сокращает такие инициалы до одного символа, что неверно.

Пример без biblatex-gost:

\documentclass{article}
\usepackage{biblatex}
\addbibresource{\jobname.bib}
\begin{filecontents}{\jobname.bib}
@article{initialsinbiblio,
  title =        {Design of something something...},
  language =     {english},
  journaltitle = {Fancy journal},
  series =       {Fancy section},
  volume =       63,
  number =       1,
  pages =        {15--31},
  year =         2021,
  issn =         {0168-9002},
  author =       {Smirnov, Ya. Yu. and Ivanov, Ye. V. and Sidorov, Yi. Ya.},
}
\end{filecontents}
\begin{document}
\nocite{*}
\printbibliography
\end{document}

image

Пример c biblatex-gost:

\documentclass{article}
\usepackage{etoolbox}
\usepackage[style=gost-numeric]{biblatex}
\toggletrue{bbx:gostbibliography}
\addbibresource{\jobname.bib}
\begin{filecontents}{\jobname.bib}
@article{initialsinbiblio,
  title =        {Design of something something...},
  language =     {english},
  journaltitle = {Fancy journal},
  series =       {Fancy section},
  volume =       63,
  number =       1,
  pages =        {15--31},
  year =         2021,
  issn =         {0168-9002},
  author =       {Smirnov, Ya. Yu. and Ivanov, Ye. V. and Sidorov, Yi. Ya.},
}
\end{filecontents}
\begin{document}
\nocite{*}
\printbibliography
\end{document}

image


Edit:
Исправил Ivanov Ye. V. на Ivanov, Ye. V.. Рисунки уже заменять не стал, т.к. для примера они сгодятся и в таком виде.

В первом случае имена вообще не сокращаются. Дайте biblatex'у опцию giveninits, и они сократятся до одной буквы.

Инициалы формируются командой \namepartgiveni (i в конце означает "инициалы"). Я её беру из biblatex, и, честно говоря, не знаю, как она там выглядит. Возможно, нужно с ней что-то сделать.

Есть ещё вот это: https://tex.stackexchange.com/questions/297489/how-to-abbreviate-first-names-with-multiple-letters-using-biblatex/.

Есть ещё вот это: https://tex.stackexchange.com/questions/297489/how-to-abbreviate-first-names-with-multiple-letters-using-biblatex/.

К сожалению, этот вариант не работает с новым biber. Единственное на данный момент решение - безумный regexp.

Инициалы формируются командой \namepartgiveni (i в конце означает "инициалы"). Я её беру из biblatex, и, честно говоря, не знаю, как она там выглядит. Возможно, нужно с ней что-то сделать.

Мне кажется логичным не использовать команду сокращения инициалов, если имя/фамилия заканчиваются на ".".

Edit:

В первом случае имена вообще не сокращаются. Дайте biblatex'у опцию giveninits, и они сократятся до одной буквы.

Тогда проблему можно сформулировать так: biblatex-gost игнорирует значение опции giveninits.

Есть ещё вот это: https://tex.stackexchange.com/questions/297489/how-to-abbreviate-first-names-with-multiple-letters-using-biblatex/.

К сожалению, этот вариант не работает с новым biber. Единственное на данный момент решение - безумный regexp.

Можно заменять только фиксированный набор имён (например, только Yuri), тогда будет не так безумно, нет?

Инициалы формируются командой \namepartgiveni (i в конце означает "инициалы"). Я её беру из biblatex, и, честно говоря, не знаю, как она там выглядит. Возможно, нужно с ней что-то сделать.

Мне кажется логичным не использовать команду сокращения инициалов, если имя/фамилия заканчиваются на ".".

Возможно. Но есть освящённые традицией правила обработки .bib файлов. Я не знаю, есть ли там такое правило.

Edit:

В первом случае имена вообще не сокращаются. Дайте biblatex'у опцию giveninits, и они сократятся до одной буквы.

Тогда проблему можно сформулировать так: biblatex-gost игнорирует значение опции giveninits.

Он не игнорирует, он устанавливает giveninits=true. Вы можете установить giveninits=false.

Кстати, вы можете для отдельной записи в .bib задать options = {giveninits=false}.

Он не игнорирует, он устанавливает giveninits=true. Вы можете установить giveninits=false.

Хм, это решение моей проблемы. Возможно стоит отразить это в документации. Спасибо!