pageref Seitenzahlen am Seitenrand mit automatischem Zeilenumbruch

Erstellung eines Literaturverzeichnisses mit BibTeX, Biber, BibLaTeX und Co.


ebcs
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Di 30. Jun 2020, 21:25

pageref Seitenzahlen am Seitenrand mit automatischem Zeilenumbruch

Beitrag von ebcs »

Mithilfe des Codes aus dieser Antwort werden die backref-Seitenzahlen im Literaturverzeichnis am rechten Seitenrand anstatt direkt hinter der Quellenangabe aufgeführt. Bei mehreren Seitenzahlen werden aber die hinteren nicht mehr dargestellt:

pageref_margin_linebreak.png

Wie muss die Definition von pageref verändert werden, damit ein automatischer Zeilenumbruch erfolgt?

Vollständiges Minimalbeispiel:

\documentclass[%
version = last,
fontsize=11pt, 
twoside=off, 
]{scrbook}

\usepackage{fontspec} % Zeichensatzkodierung mit LuaLaTeX
\usepackage[ngerman]{babel}

\usepackage[a4paper,
head=20pt,
top=25.8mm,
bottom=30mm,
inner=40mm,
outer=21mm
]{geometry}

\usepackage[autooneside = false, automark]{scrlayer-scrpage}

\usepackage{xcolor}

\usepackage[%
			backend = biber,
			bibencoding = utf8,
			bibwarn = true,
			style = authoryear-comp,
			sorting = nyvt,
			backref=true,
			backrefstyle = three
			]{biblatex}
\addbibresource{biblatex-examples.bib}

\usepackage[%
			linktocpage = true,
			bookmarksnumbered,
			hyperfootnotes = false,
			]{hyperref}
\usepackage{bookmark} % verbessert hyperref
\hypersetup{colorlinks, citecolor=cyan, linkcolor=blue, urlcolor=black}

% pagebackref reference in the (flush) right margin
\renewbibmacro*{pageref}{% Wie muss diese Definition verändert werden, damit am Seitenrand ein % automatischer Zeilenumbruch erfolgt?
	\iflistundef{pageref}
	{\renewcommand{\finentrypunct}{\addperiod}}
	{\renewcommand{\finentrypunct}{\addspace}%
		\printtext{\addperiod\hfill\rlap{\hskip15pt\colorbox{blue!5}
				{\scriptsize\printlist[pageref][-\value{listtotal}]{pageref}}}}}}

\usepackage{blindtext}

\begin{document}
	
\tableofcontents

\clearpage
\setcounter{page}{10}

\chapter{Einleitung}


\textcite{augustine}
\blindtext

\chapter{Hauptteil}

	\section{Erstes Unterkapitel}
		\textcite{aristotle:anima}
		\blindtext
		\newpage
		\section{Zweites Unterkapitel}
		\textcite{augustine}
		\blindtext
		
		\newpage
		\textcite{aristotle:anima}
		\blindtext
		
		\newpage
		\section{Drittes Unterkapitel}
		\textcite{augustine}
		\blindtext
		
		\newpage
		\textcite{aristotle:anima}
		\blindtext
		
\chapter{Schluss}

\textcite{aristotle:anima}
\blindtext

\newpage
\nocite{*}
\printbibliography[type = book]
\end{document}

MoeWe
Forum-Meister
Forum-Meister
Beiträge: 801
Registriert: Fr 30. Aug 2019, 15:35
Kontaktdaten:

Re: pageref Seitenzahlen am Seitenrand mit automatischem Zeilenumbruch

Beitrag von MoeWe »

Eine \colorbox bricht von sich allein nicht um. Du könntest eine \parbox in die \colorbox stopfen.

Ich würde zusätzliche die Ausgabe der Liste aber auch noch etwas anders angehen. Ich find es praktischer, sie zu Beginn des Eintrags auszugeben und sie damit an der ersten Zeile auszurichten, dann braucht man aber ein klein wenig größere Maschinerie.

\documentclass[%
version = last,
fontsize=11pt, 
twoside=off, 
]{scrbook}

\usepackage[ngerman]{babel}

\usepackage[a4paper,
head=20pt,
top=25.8mm,
bottom=30mm,
inner=40mm,
outer=21mm
]{geometry}

\usepackage[autooneside = false, automark]{scrlayer-scrpage}

\usepackage{xcolor}

\usepackage[%
			backend=biber,
			style=authoryear-comp,
			sorting=nyvt,
			backref=true,
			backrefstyle=three,
			]{biblatex}
\addbibresource{biblatex-examples.bib}

\usepackage[%
			linktocpage = true,
			bookmarksnumbered,
			hyperfootnotes = false,
			]{hyperref}
\usepackage{bookmark} % verbessert hyperref
\hypersetup{colorlinks, citecolor=cyan, linkcolor=blue, urlcolor=black}

\newlength{\marginwritesep}
\setlength{\marginwritesep}{0.5em}
\newlength{\marginwritewidth}
\setlength{\marginwritewidth}{1.5cm}

% based on egreg's (https://tex.stackexchange.com/users/4427/egreg)
% answer to https://tex.stackexchange.com/a/123451/35864
% originally CC BY-SA 3.0, but dual-licensed under LPPL
% see https://tex.meta.stackexchange.com/a/3333/35864
\newcommand{\marginwrite}[1]{%
  \strut\vadjust{%
    \vbox to 0pt{%
      \kern-\the\dimexpr\ht\strutbox+\dp\strutbox\relax
        \hfill\rlap{\kern\marginwritesep
          #1}%
      \vss
    }%
  }%
}

\newcommand*{\simplecolorparbox}[3]{%
  \colorbox{#1}{\parbox{#2}{#3}}}

\makeatletter
\renewbibmacro*{begentry}{%
  \iflistundef{pageref}
    {}
    {\marginwrite{%
       \simplecolorparbox{blue!5}{\marginwritewidth}{%
         \scriptsize\raggedright
         \printlist[pageref][-\value{listtotal}]{pageref}}}%
     \blx@initunit}}
\makeatother

\renewbibmacro*{pageref}{}%


\usepackage{blindtext}

\begin{document}
	
\tableofcontents

\clearpage
\setcounter{page}{10}

\chapter{Einleitung}


\textcite{augustine}
\blindtext

\chapter{Hauptteil}

	\section{Erstes Unterkapitel}
		\textcite{aristotle:anima}
		\blindtext
		\newpage
		\section{Zweites Unterkapitel}
		\textcite{augustine}
		\blindtext
		
		\newpage
		\textcite{aristotle:anima}
		\blindtext
		
		\newpage
		\section{Drittes Unterkapitel}
		\textcite{augustine}
		\blindtext
		
		\newpage
		\textcite{aristotle:anima}
		\blindtext
		
\chapter{Schluss}

\textcite{aristotle:anima}
\blindtext

\newpage
\nocite{*}
\printbibliography[type = book]
\end{document}

ebcs
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Di 30. Jun 2020, 21:25

Re: pageref Seitenzahlen am Seitenrand mit automatischem Zeilenumbruch

Beitrag von ebcs »

So passt es perfekt, vielen Dank für deine Lösung und die schnelle Antwort! :D 👍👍👍


Antworten