Ich möchte also auf mehrere Abschnitte des Eurocodes verweisen, ohne eine umfangreiche Bibliographie zu erstellen. Heute erstelle ich für jeden Abschnitt einer Norm, auf den ich verweisen muss, einen neuen @Standard, was natürlich 15 Verweise in der Bibliographie generiert.
Beispiel
Wie in [1] und [2] beschrieben, ist die Wahl der Parameter in [3]...
LITERATURVERZEICHNIS
[1] SS-EN 1992-1-1 Eurocode Abschnitt 4.5.6.7
[2] SS-EN 1992-1-1 Eurocode Abschnitt 4.5.6.8
[3] SS-EN 1992-1-1 Eurocode Abschnitt 4.5.6.9
Das möchte ich erreichen:
Beispiel
Wie in [1a] und [1b] beschrieben, erfolgt die Parameterwahl in [1c]...
LITERATURVERZEICHNIS
[1] Eurocode SS-EN 1992-1-1
a) Abschnitt 4.5.6.7
b) Abschnitt 4.5.6.8
c) Abschnitt 4.5.6.9
Gibt es eine nette Möglichkeit?
Antwort1
Willkommen bei TeX.SE!
Vor einiger Zeit hatte ich ein sehr ähnliches Problem und habe die @set
Handhabung von biblatex
mit der sehr geschätzten Unterstützung von geändertmöweum das folgende Ergebnis zu erhalten:
Anpassung der Antwort aus meinem vorherigen Kommentar unter Verwendung der Lösung vondiese Frageund der Hauptteil vondiese AntwortJe nach Bedarf können Sie Folgendes verwenden:
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber,style=numeric-comp,mcite,subentry,sorting=nty,sortsets=true]{biblatex}
\usepackage{enumitem}
\DeclareNameAlias{sortname}{family-given}
\DeclareNameAlias{default}{family-given}
\DeclareFieldFormat{entrysetcount}{\mknumalph{#1}}
\DeclareDelimFormat{editortypedelim}{\addspace}
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\makeatletter
\DeclareEntryOption[string]{multivolumehead}{\def\xs@mv@head{#1}}
\define@key{xs@multivolume}{multivolumehead}{\def\xs@mv@head{#1}}
\DeclareBibliographyDriver{multivolumechild}{%
\ifboolexpr{
test {\ifnamesequal{author}{savedauthor}}
or
test {\ifnameundef{author}}
}
{\nopunct}
{\printnames{author}%
\newunit\newblock}%
\iffieldundef{volume}
{}
{\printfield{volume}%
\printfield{part}%
\newunit\newblock}%
\usebibmacro{title}%
\newunit\newblock
\ifboolexpr{
test {\ifnamesequal{editor}{savededitor}}
or
test {\ifnameundef{editor}}
}{}
{\usebibmacro{byeditor+others}%
\newunit\newblock}%
\ifboolexpr{
test {\iflistsequal{location}{savedlocation}}
or
test {\iflistundef{location}}
}{}
{\printlist{location}}%<- typo
\ifboolexpr{
test {\iflistsequal{publisher}{savedpublisher}}
or
test {\iflistundef{publisher}}
} {\setunit*{\addcomma\space}}%
{\setunit*{\addcolon\space}%
\printlist{publisher}%
\setunit*{\addcomma\space}}%
\newunit\newblock%
\ifboolexpr{
test {\iffieldsequal{year}{savedyear}}
or
test {\iffieldundef{year}}
}{}
{\printdate%
\newunit\newblock}%
\ifboolexpr{
test {\iffieldsequal{isbn}{savedisbn}}
or
not togl {bbx:isbn}
}{}
{\printfield{isbn}}%
\newunit\newblock%
\usebibmacro{chapter+pages}%
}
\DeclareBibliographyDriver{set}{%
\edef\xs@mv@set{\abx@field@entrykey}%
\ifboolexpr{
test {\ifundef{\xs@mv@head}}
or
test {\ifblank{\xs@mv@head}}
}
{\entryset{}{}%
\newunit\newblock
\usebibmacro{setpageref}%
\finentry}
{\entrydata*{\xs@mv@head}{\usedriver{}{\abx@field@entrytype}\finentrypunct%
% reload the set so we can access the header via saved
\entrydata*{\xs@mv@set}{
% don't issue \leavevmode inside here
\let\blx@leavevmode\relax
\setitemize{noitemsep,topsep=0pt,parsep=0pt,partopsep=0pt}%
\begin{itemize}[label={\printfield{entrysetcount})},labelindent=0.5\labelnumberwidth,labelsep=1ex,itemindent=0pt,leftmargin=*]
\entryset{\item \ifcsdef{blx@bbx@multivolume\abx@field@savedentrytype}
{\edef\abx@field@entrytype{multivolume\abx@field@savedentrytype}}
{\message{^^Jxs Warning: BibliographyDriver blx@bbx@multivolume@\abx@field@entrytype\space undefined
^^J** Using fallback driver multivolumechild
^^J** If you get unexpected entries in the bibliography consider to create a new BibliographyDriver multivolume@\abx@field@savedentrytype.}%
\def\abx@field@entrytype{multivolumechild}}}{}%
\finentrypunct\end{itemize}\nopunct}}%
\newunit\newblock
\usebibmacro{setpageref}%
\finentry}}
\newcounter{cbx@tempcntc}% no. of entrysetcounts we skipped
\newcounter{cbx@tempcntd}% 'predicted' entrysetcount
\renewbibmacro*{cite:init}{%
\global\boolfalse{cbx:parens}%
\global\undef\cbx@lasthash
\global\undef\cbx@lastnumber
\global\undef\cbx@lastprefix
\global\undef\cbx@lastcount
\setcounter{cbx@tempcnta}{0}%
\setcounter{cbx@tempcntb}{-2}%
\setcounter{cbx@tempcntc}{0}%
\setcounter{cbx@tempcntd}{-1}}
\newcommand*{\cbx@iflabelnumberequalslast}{%
\iffieldequals{labelnumber}{\cbx@lastnumber}}
\newcommand*{\cbx@iflabelprefixequalslast}{%
\ifundef\cbx@lastprefix
{\iffieldundef{labelprefix}
{\@firstoftwo}
{\@secondoftwo}}
{\iffieldequals{labelprefix}{\cbx@lastprefix}
{\@firstoftwo}
{\@secondoftwo}}}
\newcommand*{\cbx@iflabelequalslast}{%
\iffieldequals{labelnumber}{\cbx@lastnumber}
{\cbx@iflabelprefixequalslast
{\@firstoftwo}
{\@secondoftwo}}
{\@secondoftwo}}
\renewbibmacro*{cite:comp:inset}{%
\stepcounter{cbx@tempcntd}%
\cbx@iflabelequalslast
{}
{\usebibmacro{cite:dump}%
\ifnumgreater{\value{cbx@tempcntb}}{-1}
{\multicitedelim}
{}}%
\printtext[bibhyperref]{%
\cbx@iflabelequalslast
{}
{\setcounter{cbx@tempcntd}{-1}%
\printfield{labelprefix}%
\printfield{labelnumber}%
\savefield{labelprefix}{\cbx@lastprefix}%
\savefield{labelnumber}{\cbx@lastnumber}}%
\ifnumequal{\thefield{entrysetcount}}{\value{cbx@tempcntd}}
{\savefield{entrykey}{\cbx@lastkey}%
\savefield{entrysetcount}{\cbx@lastcount}%
\stepcounter{cbx@tempcntc}}
{\usebibmacro{cite:dump}%
\ifnumgreater{\value{cbx@tempcntd}}{0}
{\multicitedelim}
{}%
\printfield{entrysetcount}}}%
\setcounter{cbx@tempcntd}{\thefield{entrysetcount}}%
\setcounter{cbx@tempcntb}{-1}}
\renewbibmacro*{cite:dump}{%
\ifnumgreater{\value{cbx@tempcntc}}{0}
{\ifnumgreater{\value{cbx@tempcntc}}{1}
{\bibrangedash}
{\multicitedelim}%
\bibhyperref[\cbx@lastkey]{%
\printtext[entrysetcount]{\cbx@lastcount}}}
{}%
\setcounter{cbx@tempcntc}{0}%
\ifnumgreater{\value{cbx@tempcnta}}{0}
{\ifnumgreater{\value{cbx@tempcnta}}{1}
{\bibrangedash}
{\multicitedelim}%
\bibhyperref[\cbx@lastkey]{%
\ifdef\cbx@lastprefix
{\printtext[labelprefix]{\cbx@lastprefix}}
{}%
\printtext[labelnumber]{\cbx@lastnumber}}%
\global\undef\cbx@lastprefix}
{}%
\setcounter{cbx@tempcnta}{0}}
\makeatother
\renewcommand{\entrysetpunct}{\finentrypunct}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Reference{ISO:a,
crossref = {ISO:base},
title = {section 4.5.6.7},
options = {dataonly},
}
@Reference{ISO:b,
crossref = {ISO:base},
title = {section 4.5.6.8},
options = {dataonly},
}
@Reference{ISO:c,
crossref = {ISO:base},
title = {section 4.5.6.9},
options = {dataonly},
}
@Reference{ISO:base,
title = {SS-EN 1992-1-1 eurocode},
options = {dataonly},
}
@Set{ISO,
entryset = {ISO:a,ISO:b,ISO:c},
options = {multivolumehead=ISO:base},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
As described in \cite{ISO:a} and \cite{ISO:b} the chose of parametes in \cite{ISO:c}, all those are part of \cite{ISO}.
Furthermore multiple cites in one \verb+\cite+ command like \verb+\cite{ISO:a,ISO:c,ISO:b}+ are compressed to \cite{ISO:a,ISO:c,ISO:b}.
\printbibliography
\end{document}
\cite{ISO}
Beachten Sie, dass Sie es hinzufügen müssen, wenn Sie es nicht verwenden, \nocite{}
da sonst ein Fehler auftritt.