참고문헌 항목 끝에 키워드 추가

참고문헌 항목 끝에 키워드 추가

이 질문은 실제로 제 또 다른 질문에 대한 후속 질문입니다.문서와 로그 모두에 내용을 표시하기 위한 \printbibliography 패치. 코드는 훌륭하게 작동하며 모든 항목의 텍스트 형식을 분석할 수 있습니다. 까다로운 부분은 항목이 끝나는 위치와 다른 항목이 시작되는 위치를 분리하는 방법입니다.

...

...\T1/cmr/m/n/10 2
...\T1/cmr/m/n/10 0
...\T1/cmr/m/n/10 1
...\T1/cmr/m/n/10 2
...\T1/cmr/m/n/10 .
...\penalty 10000
...\glue(\parfillskip) 0.0 plus 1.0fil
...\glue(\rightskip) 0.0
..\penalty -51
..\glue 4.0 plus 2.0 minus 1.0
..\glue(\parskip) 0.0
..\glue(\baselineskip) 4.50183
..\hbox(7.49817+2.49939)x324.44702, glue set 0.4662, shifted 20.55298
...\hbox(7.49817+2.49939)x0.0
....\glue 0.0
....\glue -10.55298
....\glue -10.0
....\hbox(7.49817+2.49939)x10.55298
.....\glue 0.0 plus 1.0fil minus 1.0fil
.....\T1/cmr/m/n/10 [
.....\T1/cmr/m/n/10 2
.....\T1/cmr/m/n/10 ]
....\glue 10.0
...\penalty 0
...\T1/cmr/m/n/10 A
...\T1/cmr/m/n/10 u
...\T1/cmr/m/n/10 t

...

[1]내 참고 문헌 스타일이 [2]등 을 사용한다는 것을 미리 알고 있으므로 새 항목이 시작되는 위치를 쉽게 찾을 수 있습니다. 하지만 모든 항목에 키워드를 추가하여 닫는 마크업으로 사용할 수 있으면 어떨까 생각하고 있었습니다.

채팅방에서 Marco Daniel은 나에게 다음과 같이 제안했습니다.

\renewbibmacro*{finentry}{\finentry <keyword here>}

<keyword>이는 모든 참고문헌 항목에 추가됩니다 . 지금까지는 흥미로운 접근 방식이었습니다. 하지만 피하고 싶은 것이 있습니다. 키워드도 문서와 .log파일 모두에 인쇄됩니다.

안타깝게도 \wlog상자 내용물은 나중에 사용하기 위해 저장되므로 여기서는 작동하지 않습니다. 매크로는 .aux상자 추적 중이 아니라 항목이 파일에 추가될 때 호출됩니다 .

내 테스트 파일:

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[backend=biber,
            bibstyle=numeric-comp,
            sorting=none]{biblatex}

\addbibresource{biblatex-examples.bib} 

\usepackage{xpatch}

\makeatletter
\def\biblio@inlog#1{%
  \begingroup
  \let\biblio@inlog\@gobble
  \chardef\current@mode\interactionmode
  \showboxdepth=\maxdimen
  \showboxbreadth=\maxdimen
  \sbox\z@{\vbox{\printbibliography[#1]}}
  \batchmode
  \wlog{BEGIN BIBLIOGRAPHY}
  \showbox\z@
  \wlog{END BIBLIOGRAPHY}
  \interactionmode=\current@mode
  \endgroup}
\xapptocmd{\blx@printbibliography}{\biblio@inlog{#1}}{}{}
\makeatother

\begin{document}

\cite{companion} \cite{ctan} 

\printbibliography

\end{document}

.log출력에는 참고문헌 항목의 끝을 나타내는 키워드나 표시를 추가할 수 있지만 문서에는 추가할 수 없는 경우 제안할 사람이 있습니까 ? 나는 이것이 가능하지 않거나 상자 저장 프로세스를 대폭 변경해야 한다고 생각합니다.

답변1

할 일이 많지 않습니다. 처리하는 동안 서로 다른 두 곳에서 \wlog왔으며 다른 메시지로 \showbox출력을 중단할 수 없습니다 .\showbox

끝에 표시를 추가하는 대신 항목 시작 부분에서 표시를 찾을 수 있습니다. 로그에서 레이블이 다음 패턴으로 나타나는 것을 볼 수 있습니다.

.....\T1/cmr/m/n/10 [

복싱의 더 깊은 수준에서 조판되었기 때문입니다. 따라서 한 가지 방법은 상자에 보이지 않는 것을 추가하는 것입니다. 예를 들어 \textcompwordmark다음과 같은 형태의 선을 생성합니다.

.....\T1/cmr/m/n/10 ^^W

보이지 않고 너비가 0인 문자 모양이 글꼴 테이블의 \textcompwordmark슬롯에 있고 이기 때문 입니다 .0x170x57W

\textcompwordmark라벨의 조판에 추가할 방법을 찾으세요 . 다음 예에서 볼 수 있듯이 이는 상자 크기에 추가되지 않습니다.

\documentclass{article}
\usepackage[T1]{fontenc}
\begin{document}
\showboxdepth=\maxdimen
\showboxbreadth=\maxdimen
\sbox0{[1]}
\showbox0
\sbox0{\textcompwordmark[1]}
\showbox0
\stop

.log파일 의 관련 부분과 함께

> \box0=
\hbox(7.49817+2.49939)x10.55298
.\T1/cmr/m/n/10 [
.\T1/cmr/m/n/10 1
.\T1/cmr/m/n/10 ]

! OK.
l.8 \showbox0

?
> \box0=
\hbox(7.49817+2.49939)x10.55298
.\T1/cmr/m/n/10 ^^W
.\T1/cmr/m/n/10 [
.\T1/cmr/m/n/10 1
.\T1/cmr/m/n/10 ]

! OK.
l.10 \showbox0

문서가 로 정의된 표준 참고 문헌 환경을 사용하므로 \defbibenvironment{bibliography}간단한 패치를 사용하면 참고 문헌 레이블 앞에 다음이 붙도록 변경됩니다 \textcompwordmark.

%%% After loading biblatex
\makeatletter
\patchcmd{\blx@env@bibliography}{\hss}{\hss\textcompwordmark}{}{}
\makeatother

로그 파일에서 얻은 내용은 다음과 같습니다(잘림).

[...]
....\hbox(7.49817+2.49939)x10.55298
.....\glue 0.0 plus 1.0fil minus 1.0fil
.....\T1/cmr/m/n/10 ^^W
.....\T1/cmr/m/n/10 [
.....\T1/cmr/m/n/10 1
.....\T1/cmr/m/n/10 ]
[...]

쉬운 정규식 검색을 통해 참고문헌 항목의 시작 부분을 찾을 수 있습니다.

Marco Daniel 덕분에 보이지 않는 문자 모양을 추가하는 더 좋은 방법인 것 같습니다.

\DeclareFieldFormat{labelnumberwidth}{\textcompwordmark\mkbibbrackets{#1}}

관련 정보