Seite 1 von 1

Leerzeichenproblem aus einer Vorlage

Verfasst: Fr 20. Sep 2019, 20:57
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.

Verfasst: Fr 20. Sep 2019, 23:25
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}