그래서 나는 방대한 참고문헌 없이도 유로코드의 여러 섹션을 참조하고 싶습니다. 오늘 나는 참고문헌에서 15개의 참조를 생성하는 표준의 모든 섹션에 대해 새로운 @standard를 만들고 있습니다.
예
[1]과 [2]에 설명된 대로 [3]의 매개변수 선택은...
서지
[1] SS-EN 1992-1-1 유로코드 섹션 4.5.6.7
[2] SS-EN 1992-1-1 유로코드 섹션 4.5.6.8
[3] SS-EN 1992-1-1 유로코드 섹션 4.5.6.9
이것이 내가 달성하고 싶은 것입니다:
예
[1a]와 [1b]에 설명된 대로 [1c]에서 매개변수를 선택했습니다...
서지
[1] SS-EN 1992-1-1 유로코드
(a) 섹션 4.5.6.7
(b) 섹션 4.5.6.8
(c) 섹션 4.5.6.9
좋은 방법이 있나요?
답변1
TeX.SE에 오신 것을 환영합니다!
얼마 전에 매우 비슷한 문제에 직면하여 나는 매우 감사한 도움을 받아 @set
처리 방법을 수정했습니다.biblatex
모에웨다음 결과를 얻으려면 :
솔루션을 사용하여 이전 의견에서 언급한 답변을 적용합니다.이 질문그리고 주요 부분은이 답변필요에 따라 다음을 사용할 수 있습니다.
\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}
추가해야 합니다 . 그렇지 않으면 \nocite{}
실패합니다.