나는 Biblatex를 사용하고 있으며 내 문서 텍스트에 전체 인용을 조판해야 하므로 다음을 사용하고 있습니다.모에의 \longfullcite
명령. 대부분의 경우 올바르게 작동하지만 필드의 마지막 단어가 중괄호로 묶인(대문자 사용을 강제하기 위해) Biber/BibTeX 항목에 문제가 있습니다. 이러한 경우 \longfullcite
다음 단어를 올바르게 대문자로 사용하지 못할 수 있습니다. 다음 예를 들어보세요.
\documentclass{article}
\usepackage{biblatex}
\makeatletter
\newcommand{\tempmaxup}[1]{\def\blx@maxcitenames{\blx@maxbibnames}#1}
\makeatother
\DeclareCiteCommand{\longfullcite}[\tempmaxup]
{\usebibmacro{prenote}}
{\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}}
{\multicitedelim}
{\usebibmacro{postnote}}
\usepackage{filecontents}
\begin{filecontents}{test.bib}
@inproceedings{blow2015,
author = {Blow, Joe},
title = {{GNU} loves me},
year = 2015,
booktitle = {Proceedings of Some Conference},
}
@inproceedings{blow2016,
author = {Blow, Joe},
title = {I love {GNU}},
year = 2016,
booktitle = {Proceedings of Some Conference},
}
\end{filecontents}
\addbibresource{test.bib}
\begin{document}
\nocite{*}
\noindent
\longfullcite{blow2015}\\
\longfullcite{blow2016}
\printbibliography
\end{document}
출력은 다음과 같습니다.
두 명령에서 생성된 단어 "In"의 대문자 사용이 일관되지 않음에 유의하십시오 \longfullcite
. 대조적으로, 에 의해 발행된 인용은 \printbibliography
두 항목 모두에 대해 "In"을 올바르게 대문자로 표시합니다.
\longfullcite
이러한 불일치의 원인은 무엇이며 이 문제를 해결하려면 어떻게 해야 합니까(파일 을 변경하는 것보다 정의를 변경하는 것이 바람직함 .bib
)?
답변1
이는 알려진 문제입니다(https://github.com/plk/biblatex/issues/295) 그리고 텍스트 내 모든 인용에 영향을 주지만 아마도 \fullcite
-like를 통해서만 실제로 볼 수 있습니다. 불행하게도 적절한 해결책이 나올 가능성은 매우 희박합니다. biblatex
의 구두점 추적기는 기존 공간 요소를 크게 수정하지만 인용에서 그렇게 하면 인용 외부의 텍스트에 원치 않는 연쇄 효과가 발생할 수 있습니다.
\@
제목 끝에 대문자를 추가해야 합니다 . 하지만 원하는 경우 해당 형식을 자동으로 수행하도록 할 수 있습니다.
\DeclareFieldFormat{title}{\mkbibemph{#1\@}}
\DeclareFieldFormat
[article,inbook,incollection,inproceedings,patent,thesis,unpublished]
{title}{\mkbibquote{#1\isdot\@}}
\DeclareFieldFormat
[suppbook,suppcollection,suppperiodical]
{title}{#1\@}
답변2
더러운 해킹:
너비 없이 보이지 않는 것을 삽입합니다. 이것이 문제를 일으킬 수 있다고 확신합니다. 어떤 문제가 있는지 아직 모르겠습니다 :)
\documentclass{article}
\usepackage{biblatex}
\makeatletter
\newcommand{\tempmaxup}[1]{\def\blx@maxcitenames{\blx@maxbibnames}#1}
\makeatother
\DeclareCiteCommand{\longfullcite}[\tempmaxup]
{\usebibmacro{prenote}}
{\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}}
{\multicitedelim}
{\usebibmacro{postnote}}
\usepackage{filecontents}
\begin{filecontents}{test.bib}
@inproceedings{blow2015,
author = {Blow, Joe},
title = {{GNU} loves me},
year = 2015,
booktitle = {Proceedings of Some Conference},
}
@inproceedings{blow2016,
author = {Blow, Joe},
title = {I love {GNU}\mbox{}},
year = 2016,
booktitle = {Proceedings of Some Conference},
}
\end{filecontents}
\addbibresource{test.bib}
\begin{document}
\nocite{*}
\noindent
\longfullcite{blow2015}\\
\longfullcite{blow2016}
\printbibliography
\end{document}