
Я настроил числовой стиль biblatex, чтобы сократить \newblock
команды для типов записей inproceedings. Следующий шаг — длинные заголовки inproceedings, которые создают вторую строку, должны быть отступлены, так чтобы вторая строка начиналась с начала заголовка в первой строке. Отступ необходим (я думаю) из-за метки "In:" в первой строке.
Итак, с одной стороны, мне нужно знать длину метки «In:», а с другой стороны, я хочу сделать отступ для второй и последующих строк на эту длину.
Вот что у меня есть:
И что я хочу:
Редактировать: Я забыл упомянуть, что есть несколько разных меток, таких как "In:". Например, "doi:" и "URL:". Кроме того, не все блоки, которые имеют вторую строку, должны иметь отступ. Вместо этого только специально выбранные должны. Извините, что я забыл об этом.
решение1
Вы можете изменить определение списка, используемого средой bibliography
bibenvironment, и использовать \widthof
(предоставленноеcalc
пакет) для расчета необходимого отступа.
\documentclass{article}
\usepackage[block=par]{biblatex}
\usepackage{calc}
\newlength{\longblockindent}
\setlength{\longblockindent}{\widthof{In:~}}
\defbibenvironment{bibliography}
{\list
{\printtext[labelnumberwidth]{%
\printfield{prefixnumber}%
\printfield{labelnumber}}}
{\setlength{\labelwidth}{\labelnumberwidth}%
\setlength{\leftmargin}{\labelwidth}%
\setlength{\labelsep}{\biblabelsep}%
\addtolength{\leftmargin}{\labelsep}%
\setlength{\itemsep}{\bibitemsep}%
\addtolength{\leftmargin}{\longblockindent}% NEW
\setlength{\itemindent}{-\longblockindent}% NEW
\setlength{\listparindent}{-\longblockindent}% NEW
\setlength{\parsep}{\bibparsep}}%
\renewcommand*{\makelabel}[1]{\hss##1}}
{\endlist}
{\item}
\newcommand*{\sometext}{Lorem ipsum dolor sit amet, consectetuer
adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,
adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu
libero, nonummy eget, consectetuer id, vulputate a, magna.}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@inproceedings{A01,
author = {Author, A.},
editor = {Buthor, B.},
year = {2001},
title = {Alpha},
booktitle = {\sometext},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\nocite{*}
\begin{document}
\printbibliography
\end{document}