항목 제목에 langid를 사용하여 BibLaTeX에서 현지화된 따옴표, 하이픈 및 구두점을 사용합니다.

항목 제목에 langid를 사용하여 BibLaTeX에서 현지화된 따옴표, 하이픈 및 구두점을 사용합니다.

내가 얻는 것:

A. 저자, « 어떤 기사 제목 ? ». 어떤 저널이든.

B. Buthor, « 기사가 없나요? ». 또 다른 저널.

내가 원하는 것:

A. 저자, “어떤 기사 제목이요?”. 어떤 저널이든.

B. Buthor, « 기사가 없나요? ». 또 다른 저널.

그리고 하이픈 연결은 물론 언어에 따라 달라집니다. ;)

autolang=other영향을 받고 싶지 않은 참고문헌의 다른 부분을 번역하므로 선택 사항이 아닙니다.

나는 우연히 발견했다autolang=hyphen이 포함된 BibLaTeX langid는 csquotes에 현지화된 따옴표를 사용하게 합니다.그리고 이전 동작은 대부분 내가 원하는 것입니다(위의 물음표와 같은 구두점이 어떻게 작동하는지 모르는 사소한 점과 함께).

MNWE:

\documentclass{scrartcl}

\usepackage[british,french]{babel}
\usepackage[autostyle=true]{csquotes}
\usepackage[autolang=hyphen]{biblatex}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@article{eng,
  author = {Author, A.},
  title = {Some article title?},
  journal = {Whatever Journal},
  year = {2019},
  langid = {british},
}
@article{fra,
  author = {Buthor, B.},
  title = {Un article ?},
  journal = {Another Journal},
  year = {2019},
  langid = {french},
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

답변1

다음을 시도해 볼 수 있습니다.

구두점에 대한 참고사항입니다. 귀하의 예에는 두 가지 유형이 있습니다.

  • 필드의 구두점(예: 제목의 물음표: {Some article title?},

  • biblatex의 매크로에 의해 생성된 구두점(예: In:.

첫 번째 유형은 catcode가 이미 고정되어 있으므로 pdflatex를 사용하는 언어에 적응하기가 어렵습니다. lualatex를 사용하면 작동합니다.

\documentclass{scrartcl}
\usepackage{ifluatex}
\ifluatex\else
 \usepackage[T1]{fontenc} %with pdflatex
\fi

\usepackage[british,french]{babel}
\usepackage[autostyle=true]{csquotes}
\usepackage[autolang=hyphen]{biblatex}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@article{eng,
  author = {Author, A.},
  title = {Some article title?},
  journal = {Whatever Journal},
  year = {2019},
  langid = {british},
  editor={D. Editor}
}
@article{fra,
  author = {Buthor, B.},
  title = {Un article?},
  journal = {Another Journal},
  year = {2019},
  langid = {french},
  editor={D. Editor}
}

\end{filecontents*}
\addbibresource{\jobname.bib}

\makeatletter
\def\blx@hook@initlang{%
 \csq@reset=0 \csq@setstyle{\abx@field@langid}%
 %optional for the colon after "In":
 \ifdefstring{\abx@field@langid}{french}{}
  {\def\FDP@colonspace{}%
   \def\FDP@thinspace{}}%
 }
\makeatletter
\begin{document}

\nocite{*}
\printbibliography
\end{document}

lualatex로 출력:

여기에 이미지 설명을 입력하세요

pdflatex로 출력

여기에 이미지 설명을 입력하세요

답변2

글꼴 인코딩을 사용 autolang=other하고 로드하면 T1다음 작업이 수행됩니다.

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage[british,french]{babel}
\usepackage[autostyle=true]{csquotes}
\usepackage[autolang=other]{biblatex}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@article{eng,
  author = {Author, A.},
  title = {Some article title?},
  journal = {Whatever Journal},
  year = {2019},
  langid = {british},
}
@article{fra,
  author = {Buthor, B.},
  title = {Un article ?},
  journal = {Another Journal},
  year = {2019},
  langid = {french},
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\begin{document}

\nocite{*}
\printbibliography

\end{document} 

여기에 이미지 설명을 입력하세요

관련 정보