Исходя из labelalpha
стиля, я определил собственную метку BibLaTeX, которая состоит из полного имени первого автора и даты публикации. Однако, если имя автора длинное и цитата находится в конце строк, метка пишется через дефис. MWE выглядит так:
\documentclass[%
12pt,
english
paper = A4
]{scrbook}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{Verylongname_74,
author = {Verylongname, Tom S. and Longname, Bob C.},
year = {1974},
title = {The economics of brushing teeth},
journal = {Journal of Political Economy},
volume = {82},
number = {4},
pages = {887--891},
}
\end{filecontents}
\usepackage[%
citestyle = alphabetic,
labelalpha = true,
defernumbers = true,
backend = biber,
maxalphanames = 1,
firstinits = true
]{biblatex}%
% own BibLaTeX label definition -------------------------------
\renewcommand*{\labelalphaothers}{+}
\DeclareLabelalphaTemplate{
\labelelement{
\field[final]{shorthand}
\field[compound=false]{labelname}
\field{label}
}
\labelelement{
\literal{\addnbthinspace}
}
\labelelement{
\field[strwidth=2,strside=right]{year}
}
}
\DeclareFieldFormat{labelalphawidth}{\mkbibbrackets{#1}}
% avoid hyphenation, not working!
\DeclareFieldFormat{labelalpha}{\nohyphenation #1}
%--------------------------------------------------------------
\addbibresource{\jobname.bib}
\begin{document}
This is a line of text. This is a line of text. An example citation here is
\cite{Verylongname_74}. The BibLaTeX label, which is the
author's name, is hyphenated!
\end{document}
Как мне указать BibLaTeX не переносить метки?
решение1
В \AtEveryCitekey{\hyphenrules{nohyphenation}}
преамбуле можно отключить расстановку переносов для всех ключей BibLaTeX (язык nohyphenation
должен быть определен в babel
).
решение2
Я попробовал решение Robinaut, но оно не заработало на MikTeX 2.9
Windows 10. Я всегда получал следующую ошибку:
Package babel Error: You haven't defined the language nohyphenation yet.
Мне также не удалось отредактироватьlanguages.ini
предложенноездесь.
Однако я нашел работающее решение. Если вы посмотрите в , то languages.ini
там есть некоторые языки без переносов (они используют zerohyph.tex
как загрузчик). Исходя из этого, вы можете использовать один из этих языков (например, арабский):
\AtEveryCitekey{\hyphenrules{arabic}}