Seite 1 von 1
Kurzeinträge im Literaturverzeichnis
Verfasst: Mo 25. Apr 2022, 11:30
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}
Re: Kurzeinträge im Literaturverzeichnis
Verfasst: Mo 25. Apr 2022, 11:59
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.
Re: Kurzeinträge im Literaturverzeichnis
Verfasst: Mo 25. Apr 2022, 17:38
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}
Re: Kurzeinträge im Literaturverzeichnis
Verfasst: Mo 25. Apr 2022, 20:10
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}}
{}}
}
Re: Kurzeinträge im Literaturverzeichnis
Verfasst: Mo 25. Apr 2022, 21:20
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}
Re: Kurzeinträge im Literaturverzeichnis
Verfasst: Mi 12. Feb 2025, 01:06
von joe360
Hi Leute,
hatte jetzt ähnliches Problem, erstmal Danke an MoeWe.
Ich schreibe in der article class, Latex in overleafe.
Und nutze \usepackage[style=apa,backend=biber,sortcites,url=true,uniquename=false]{biblatex}.
Damit im Text keine eckige Klammer ist und im Lit.Verzeichnis die Klammer beim Shortauthor da ist, habe ich den Code (trial/error) angepasst. (Dash und Formatierung ebenfalls entfernt).
Code:
%% Code1 für LitVerzeichnis
\makeatletter
\DeclareNameWrapperFormat{shortauthor}{%
\ifbibliography % Prüft ob das Literaturverzeichnis kompiliert wird -->
{\mkbibparens{#1}} % --> Falls ja, setze runde Klammern um den shortauthor -->
{#1} % --> Falls nicht (d.h. im Text), setze den shortauthor im Text ohne Klammer, da sonst %%eine Eckige Klammer entsteht, wegen doppelklammer: 1(XY, 2020) / 2((XY),2020) --> %%([XY],2020) wir wollen im Text Nr. 1
}
\renewbibmacro*{author}{%
\ifboolexpr{
test \ifuseauthor
and
not test {\ifnameundef{author}}
}
{\usebibmacro{bbx:dashcheck}
{\printnames{author}%
\setunit{\addspace}%
\printnames{shortauthor}%
\setunit{\printdelim{authortypedelim}}%
\usebibmacro{bbx:savehash}}%
\usebibmacro{authorstrg}}
{\global\undef\bbx@lasthash}}
\makeatother
%% Code2 für in Text
\makeatletter
\def\cbx@apa@ifnamesaved{\@firstoftwo}
\makeatother
Re: Kurzeinträge im Literaturverzeichnis
Verfasst: Di 18. Feb 2025, 00:14
von Gigi99
Klingt nach einer guten Anpassung, um das Zitierformat für APA anzupassen. Es ist immer cool, wenn man das LaTeX so hinbekommt, dass es genau den eigenen Anforderungen entspricht. Besonders die Handhabung von Klammern im Text und Literaturverzeichnis scheint hier gut gelöst zu sein. Wenn es funktioniert, dann hast du wohl die richtige Lösung gefunden