Leerzeichenproblem aus einer Vorlage Thema ist als GELÖST markiert

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


Gast

Leerzeichenproblem aus einer Vorlage

Beitrag von Gast »

Ich habe von einem netten Community-Member einen Code erstellt bekommen, mit dem ebd., a.a.O. sowie ders. beim zitieren. Der Code in einem Minimalbeispiel sieht wie folgt aus:
\documentclass{article} 
\usepackage[ngerman]{babel} 

	\usepackage[
style=ext-authortitle-ibid, 
backend=biber, 
ibidtracker=constrict, 
idemtracker=constrict,  
loccittracker=constrict,
]{biblatex} 

\usepackage{filecontents} 
\begin{filecontents*}{\jobname.bib} 
@book{test2019, 
Author    = {Max Mustermann and Maria Musterfrau and Peter Pan}, 
title = {Test}, 
pages ={123-234},
series = {Eine Reihe von Buechern}
}
@book{test2018, 
title = {Test}, 
pages ={123-234},
series = {Eine Reihe von Buechern}
}

\end{filecontents*} 
\addbibresource{\jobname.bib} 

	\makeatletter 
\def\blx@loccit@stricttracker#1{% 
	\global\csundef{blx@lastnote@#1@\abx@field@entrykey}% 
	\blx@ifcitesingle 
	{\blx@imc@iffieldundef{postnote} 
		{\@firstoftwo} 
		{\expandafter\blx@imc@ifpages 
			\expandafter{\abx@field@postnote}} 
		{\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote 
			\xifinlistcs\abx@field@entrykey{blx@trackkeys@#1} 
			{} 
			{\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}} 
		{}} 
	{}} 

\def\blx@loccit@numcheck#1{% 
	\blx@imc@iffieldundef{postnote} 
	{\ifcsundef{blx@lastnote@#1@\abx@field@entrykey}} 
	{\expandafter\blx@imc@ifpages 
		\expandafter{\abx@field@postnote} 
		{\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}} 
		{\@secondoftwo}}} 
\makeatother 

\newtoggle{cbx:droppageprefix} 

\renewbibmacro*{cite:ibid}{% 
	\ifloccit 
	{\printtext[bibhyperref]{\bibstring[\mkibid]{ibidem}}% 
		\global\booltrue{cbx:loccit}} 
	{\printtext[bibhyperref]{\bibstring[\mkibid]{loccit}}% 
		\global\toggletrue{cbx:droppageprefix}}} 

\renewbibmacro*{cite}{% 
	\global\boolfalse{cbx:loccit}% 
	\global\togglefalse{cbx:droppageprefix}%
	\iffieldundef{shorthand}	{\ifthenelse{
			\ifciteibid\AND\NOT\iffirstonpage} 
		{\usebibmacro{cite:ibid}} 
		{\ifthenelse{\ifciteidem\AND\NOT\iffirstonpage} 
			{\bibstring[\mkibid]{idem\thefield{gender}}} 
			{\printnames{labelname}} 
			\setunit*{\printdelim{nametitledelim}}% 
			\usebibmacro{cite:title}}}% 	
	{\ifthenelse{
			\ifciteibid\AND\NOT\iffirstonpage} 
		{\usebibmacro{cite:ibid}} 
		{\ifthenelse{\ifciteidem\AND\NOT\iffirstonpage} 
			{\bibstring[\mkibid]{idem\thefield{gender}}} 
			{\printnames{labelname}} 
			\setunit*{\printdelim{nametitledelim}}% 
			\usebibmacro{cite:shorthand}}}
}% 

\begin{document} 
Test.\footcite[123]{test2019} 

Test.\footcite[123]{test2019}\footcite[125]{test2019}\footcite[123]{test2018} 

Test.\footcite[123]{test2018}
\printbibliography 
\end{document}
Nun ist das Problem, was dabei aufgetaucht ist, dass im Falle von keinem Autor ein Leerzeichen vor dem Titel steht in der Fußnote. Da ich leider nicht so bewandert bin, versteh ich den erstellten Code nicht und kann daher auch nicht nachvollziehen, woher dieses Leerzeichen kommt. Wenn ich den Code lösche, gibt es kein Problem mit dem Leerzeichen, also muss es an irgendeiner Stelle im Code liegen.

Danke schon mal im Voraus.

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

Beitrag von MoeWe »

In der Definition von cite fehlten zwei %s, jeweils nach den Klammern mit dem \printnames{labelname}.

Ich würde übrigens dazu raten, die Einrückung vom Code zu übernehmen oder - wenn Dir die Einrückung nicht gefällt - sie sinnvoll umzuarbeiten. So war der Code extrem schwer zu lesen, da die Einrückung fast völlig gegen die Struktur ging.
\documentclass{article}
\usepackage[ngerman]{babel}

\usepackage[
style=ext-authortitle-ibid,
backend=biber,
ibidtracker=constrict,
idemtracker=constrict,  
loccittracker=constrict,
]{biblatex}

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{test2019,
Author    = {Max Mustermann and Maria Musterfrau and Peter Pan},
title = {Test},
pages ={123-234},
series = {Eine Reihe von Buechern}
}
@book{test2018,
title = {Test},
pages ={123-234},
series = {Eine Reihe von Buechern}
}

\end{filecontents*}
\addbibresource{\jobname.bib}

\makeatletter
\def\blx@loccit@stricttracker#1{%
  \global\csundef{blx@lastnote@#1@\abx@field@entrykey}%
  \blx@ifcitesingle
    {\blx@imc@iffieldundef{postnote}
       {\@firstoftwo}
       {\expandafter\blx@imc@ifpages
        \expandafter{\abx@field@postnote}}
       {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote
        \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1}
          {}
          {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}}
       {}}
    {}}

\def\blx@loccit@numcheck#1{%
  \blx@imc@iffieldundef{postnote}
    {\ifcsundef{blx@lastnote@#1@\abx@field@entrykey}}
    {\expandafter\blx@imc@ifpages
     \expandafter{\abx@field@postnote}
       {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}}
       {\@secondoftwo}}}
\makeatother

\newtoggle{cbx:droppageprefix}

\renewbibmacro*{cite:ibid}{%
  \ifloccit
    {\printtext[bibhyperref]{\bibstring[\mkibid]{ibidem}}%
     \global\booltrue{cbx:loccit}}
    {\printtext[bibhyperref]{\bibstring[\mkibid]{loccit}}%
     \global\toggletrue{cbx:droppageprefix}}}

\renewbibmacro*{cite}{%
  \global\boolfalse{cbx:loccit}%
  \global\togglefalse{cbx:droppageprefix}%
  \iffieldundef{shorthand}
    {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
       {\usebibmacro{cite:ibid}}
       {\ifthenelse{\ifciteidem\AND\NOT\iffirstonpage}
          {\bibstring[\mkibid]{idem\thefield{gender}}}
          {\printnames{labelname}}%
        \setunit*{\printdelim{nametitledelim}}%
        \usebibmacro{cite:title}}}%
    {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
       {\usebibmacro{cite:ibid}}
       {\ifthenelse{\ifciteidem\AND\NOT\iffirstonpage}
          {\bibstring[\mkibid]{idem\thefield{gender}}}
          {\printnames{labelname}}%
        \setunit*{\printdelim{nametitledelim}}%
        \usebibmacro{cite:shorthand}}}}

\begin{document}
Test.\footcite[123]{test2019}

Test.\footcite[123]{test2019}\footcite[125]{test2019}\footcite[123]{test2018}

Test.\footcite[123]{test2018}
\printbibliography
\end{document}

Antworten