Kurzeinträge im Literaturverzeichnis Thema ist als GELÖST markiert

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


marco_polo
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: So 11. Jul 2021, 18:48

Kurzeinträge im Literaturverzeichnis

Beitrag von marco_polo »

Sehr geehrte Community,

wie kann ich die Shorteinträge wie Shorteditor oder Shortauthor auch im Literaturverzeichnis angeben, damit deutlich ist, dass sich der Shorteintrag auf diese Referenz bezieht. Im Idealfall in der Form: Shorteditor (Editor) ... bzw. Shortauthor (Author) ....

MWE:
\documentclass[a4paper,11pt,ngerman]{scrartcl}
%\listfiles
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
	@BOOK{Institut2022,
		editor = {{Institut mit einem sehr langen Namen}},
		shorteditor = {Institut},
		title = {{Titel}},
		address = {Berlin},
		year = {2022},
		}
	@BOOK{Mustermann2022,
		author = {Mustermann, Max},
		shortauthor = {MM},
		title = {Titel},
		address = {Berlin},
		year = {2022},
	}
\end{filecontents}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel,csquotes}

\usepackage[
style=verbose-trad3,
citepages=separate,
]{biblatex}
\bibliography{\jobname}

\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}} 
\defbibheading{bibliography}{%
	\section*{Literaturverzeichnis}} 

%opening


\begin{document}
Ich zitiere etwas.\autocite[15]{Institut2022}	Hier zitiere ich etwas anderes.\autocite[234]{Mustermann2022}
Hier wuerde ich gerne dass \enquote{Institut 2022} zitiert wird.\autocite[15]{Institut2022} Hier mal wieder etwas mit einem Shortauthor.\autocite[234]{Mustermann2022}
Im Literaturverzeichnis sollte dann \enquote{Shorteditor (editor)} bzw. \enquote{Shortauthor (author)} angegeben werden.
	
	\printbibliography
\end{document}

gast.

Re: Kurzeinträge im Literaturverzeichnis

Beitrag von gast. »

Man kann beispielsweise das biblatex macro zur Ausgabe des Autors entsprechend erweitern:
\renewbibmacro*{author}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\usebibmacro{bbx:dashcheck}
       {\bibnamedash}
       {\printnames{author}%
        \ifboolexpr{test {\ifnameundef{shortauthor}}}{}{\space
        \mkbibparens{\printnames{shortauthor}}}%
        \setunit{\printdelim{authortypedelim}}%
        \usebibmacro{bbx:savehash}}%
     \usebibmacro{authorstrg}}
    {\global\undef\bbx@lasthash}}
Die Originaldefinition habe ich aus authortitle.bbx genommen und dann
        \ifboolexpr{test {\ifnameundef{shortauthor}}}{}{\space
        \mkbibparens{\printnames{shortauthor}}}%
nach der Ausgabe der Autorennamen eingefügt. Man kann an der Stelle natürlich auch zusätzlich irgendwelche Automatismen für den Fall einfügen, dass shortauthor undefiniert ist, beispielsweise dann automatische die Initialien des ersten Autors verwenden o. ä. Näheres zu entsprechenden Namensformaten etc. ist der biblatex-Anleitung zu entnehmen.

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

Re: Kurzeinträge im Literaturverzeichnis

Beitrag von MoeWe »

Wenn man mit field formats bzw. wrapper formats sowie dem punctuation buffer arbeitet, kann man sich in den meisten Fällen \ifnameundef und Co. sparen. Etwas idiomatischer wäre daher
\documentclass[a4paper,11pt,ngerman]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel,csquotes}

\usepackage[
  style=verbose-trad3,
  citepages=separate,
]{biblatex}

\renewcommand*{\mkbibnamefamily}[1]{\textsc{#1}}

\makeatletter
\DeclareNameWrapperFormat{shortauthor}{\mkbibparens{#1}}
\renewbibmacro*{author}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\usebibmacro{bbx:dashcheck}
       {\bibnamedash}
       {\printnames{author}%
        \setunit{\addspace}%
        \printnames{shortauthor}%
        \setunit{\printdelim{authortypedelim}}%
        \usebibmacro{bbx:savehash}}%
     \usebibmacro{authorstrg}}
    {\global\undef\bbx@lasthash}}

\DeclareNameWrapperFormat{shorteditor}{\mkbibparens{#1}}
\renewbibmacro*{bbx:editor}[1]{%
  \ifboolexpr{
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }
    {\usebibmacro{bbx:dashcheck}
       {\bibnamedash}
       {\printnames{editor}%
        \setunit{\addspace}%
        \printnames{shorteditor}%
        \setunit{\printdelim{editortypedelim}}%
        \usebibmacro{bbx:savehash}}%
     \usebibmacro{#1}%
     \clearname{editor}}
    {\global\undef\bbx@lasthash}}
\makeatother

\begin{filecontents}{\jobname.bib}
@book{Institut2022,
  editor      = {{Institut mit einem sehr langen Namen}},
  shorteditor = {Institut},
  title       = {Titel},
  address     = {Berlin},
  year        = {2022},
}
@book{Mustermann2022,
  author      = {Mustermann, Max},
  shortauthor = {MM},
  title       = {Titel},
  address     = {Berlin},
  year        = {2022},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
Ich zitiere etwas.\autocite[15]{Institut2022}
Hier zitiere ich etwas anderes.\autocite[234]{Mustermann2022}
Hier wuerde ich gerne dass \enquote{Institut 2022} zitiert wird.\autocite[15]{Institut2022}
Hier mal wieder etwas mit einem Shortauthor.\autocite[234]{Mustermann2022}
Im Literaturverzeichnis sollte dann \enquote{Shorteditor (editor)}
bzw. \enquote{Shortauthor (author)} angegeben werden.

\printbibliography
\end{document}

marco_polo
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: So 11. Jul 2021, 18:48

Re: Kurzeinträge im Literaturverzeichnis

Beitrag von marco_polo »

Danke, das funktioniert schon mal super. Jetzt musste ich bei der Einarbeitung in mein Dokument feststellen, dass der Code mit dem folgenden Code kollidiert, der hinter dem Herausgeber in Klammern (Hrsg.) ausgeben soll. Wie bekomme ich es verknüpft, dass dahinter immer noch (Hrsg.) steht?
\IGNORE{
	\renewbibmacro*{editor+others}{%
		\ifnameundef{editor}
		{}
		{\ifnamesequal{author}{editor}
			{\bibnamedash}
			{\printnames{editor}}%
			\addspace
			\mkbibparens{\usebibmacro{editorstrg}}%
			\clearname{editor}}
		{}}
}

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

Re: Kurzeinträge im Literaturverzeichnis

Beitrag von MoeWe »

Das bekommst Du hin, indem Du auch für diese Aufgabe die passenden field formats nimmst, anstatt die Zeichensetzung direkt im Bibmakro vorzunehmen.


Im Vergleich zu meinem vorherigen Minimalbeispiel brauchen wir nur vier Zeilen mehr
\documentclass[a4paper,11pt,ngerman]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel,csquotes}

\usepackage[
  style=verbose-trad3,
  citepages=separate,
]{biblatex}

\renewcommand*{\mkbibnamefamily}[1]{\textsc{#1}}

\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimFormat{editortypedelim}{\addspace}

\DeclareFieldAlias{translatortype}{editortype}
\DeclareDelimAlias{translatortypedelim}{editortypedelim}

\makeatletter
\DeclareNameWrapperFormat{shortauthor}{\mkbibparens{#1}}
\renewbibmacro*{author}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\usebibmacro{bbx:dashcheck}
       {\bibnamedash}
       {\printnames{author}%
        \setunit{\addspace}%
        \printnames{shortauthor}%
        \setunit{\printdelim{authortypedelim}}%
        \usebibmacro{bbx:savehash}}%
     \usebibmacro{authorstrg}}
    {\global\undef\bbx@lasthash}}

\DeclareNameWrapperFormat{shorteditor}{\mkbibparens{#1}}
\renewbibmacro*{bbx:editor}[1]{%
  \ifboolexpr{
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }
    {\usebibmacro{bbx:dashcheck}
       {\bibnamedash}
       {\printnames{editor}%
        \setunit{\addspace}%
        \printnames{shorteditor}%
        \setunit{\printdelim{editortypedelim}}%
        \usebibmacro{bbx:savehash}}%
     \usebibmacro{#1}%
     \clearname{editor}}
    {\global\undef\bbx@lasthash}}
\makeatother

\begin{filecontents}{\jobname.bib}
@book{Institut2022,
  editor      = {{Institut mit einem sehr langen Namen}},
  shorteditor = {Institut},
  title       = {Titel},
  address     = {Berlin},
  year        = {2022},
}
@book{Mustermann2022,
  author      = {Mustermann, Max},
  shortauthor = {MM},
  title       = {Titel},
  address     = {Berlin},
  year        = {2022},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
Ich zitiere etwas.\autocite[15]{Institut2022}
Hier zitiere ich etwas anderes.\autocite[234]{Mustermann2022}
Hier wuerde ich gerne dass \enquote{Institut 2022} zitiert wird.\autocite[15]{Institut2022}
Hier mal wieder etwas mit einem Shortauthor.\autocite[234]{Mustermann2022}
Im Literaturverzeichnis sollte dann \enquote{Shorteditor (editor)}
bzw. \enquote{Shortauthor (author)} angegeben werden.

\printbibliography
\end{document}

Antworten