Mehrfache Bezugnahme auf eine Norm (Eurocode) und dennoch unterschiedliche Abschnitte

Mehrfache Bezugnahme auf eine Norm (Eurocode) und dennoch unterschiedliche Abschnitte

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 @setHandhabung von biblatexmit der sehr geschätzten Unterstützung von geändertmöweum das folgende Ergebnis zu erhalten:

Bildbeschreibung hier eingeben

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.

verwandte Informationen