Дефис в названии автора (используя biblatex и biber с giveninits=true)

Дефис в названии автора (используя biblatex и biber с giveninits=true)

Это продолжениеВопрос Микоо том, как указать автора с помощью giveninits=true. Было найдено два ответа, которые работают для названий, не содержащих дефис.

Теперь рассмотрим титул "Dr.-Ing.". В обоих ответах я получаю дополнительную точку перед дефисом:

\RequirePackage{filecontents}
\begin{filecontents*}{mybib.bib}
@unpublished{tet-skript-moewe,
    author = {family={Schuhmann}, given={Prof. Dr.-Ing. Rolf}, given-i={Prof. Dr.-Ing. R}},
    title  = {Skriptum zu den {V}orlesungen 
              {T}heoretische {E}lektrotechnik {I} und {II}},
    date   = {2013-12-17},
    note   = {moewe's answer}
}
@unpublished{tet-skript-mico,
    author = {{{\relax Prof. Dr.-Ing. R}olf} Schuhmann},
    title  = {Skriptum zu den {V}orlesungen 
              {T}heoretische {E}lektrotechnik {I} und {II}},
    date   = {2013-12-17},
    note   = {Mico's answer}
}
\end{filecontents*}


\documentclass{article}

\usepackage[backend=biber, giveninits=true]{biblatex}
\addbibresource{mybib.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

Скриншот

Я знаю об одной работе, которую я опубликую в качестве ответа. Однако она мне не нравится, поскольку она подразумевает определение пользовательских команд и, таким образом, создание зависимости файла bib от файла tex.

Кто-нибудь знает лучшее решение?

решение1

Я не знаю, почему это работает, но вы можете убрать точку в Dr-Ing., а добавленная точка останется на месте, чтобы получить желаемый результат:

\RequirePackage{filecontents}
\begin{filecontents*}{mybib.bib}
@unpublished{tet-skript-moewe,
    author = {family={Schuhmann}, given={Prof. Dr.-Ing. Rolf}, given-i={Prof. Dr-Ing. R}},
    title  = {Skriptum zu den {V}orlesungen 
              {T}heoretische {E}lektrotechnik {I} und {II}},
    date   = {2013-12-17},
    note   = {moewe's answer}
}
@unpublished{tet-skript-mico,
    author = {{{\relax Prof. Dr-Ing. R}olf} Schuhmann},
    title  = {Skriptum zu den {V}orlesungen 
              {T}heoretische {E}lektrotechnik {I} und {II}},
    date   = {2013-12-17},
    note   = {Mico's answer}
}
\end{filecontents*}


\documentclass{article}

\usepackage[backend=biber, giveninits=true]{biblatex}
\addbibresource{mybib.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

Подходит для решений как Mico, так и Moewe.

введите описание изображения здесь

решение2

Использование дефиса в команде позволяет избежать вставки дополнительной точки.

Я предполагаю, что это работает, потому что код дефиса здесь зафиксирован на other и не может быть активирован. Согласно комментарию moewe наответ gusbrsэто работает, потому что «вставка выполняется Бибером, который не расширяет ваши команды TeX».

Я не совсем понимаю, зачем нужны эти фигурные скобки вокруг команд, но без них я получаю ошибку.

Положение этих скобок основано наответ Мико.

\RequirePackage{filecontents}
\begin{filecontents*}{mybib.bib}
@unpublished{tet-skript,
    author = {{\Prof{} \DrIng{} R}olf Schuhmann},
    title  = {Skriptum zu den {V}orlesungen 
              {T}heoretische {E}lektrotechnik {I} und {II}},
    date   = {2013-12-17},
}
\end{filecontents*}


\documentclass{article}

\usepackage[backend=biber, firstinits=true]{biblatex}
\addbibresource{mybib.bib}

\newcommand{\DrIng}{Dr.-Ing.\@}
\newcommand{\Prof}{Prof.\@}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

введите описание изображения здесь

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