와 연관되다GitHub plk / biblatex 문제 #910.
\documentclass{article}
\usepackage{amsmath}
\usepackage[style=ieee]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Article{A,
title = {A\,b c},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Text~\cite{A}.
\printbibliography
\end{document}
잘못된 출력 외에도 MiKTeX를 사용한 컴파일은 오류로 끝납니다: Missing number, treated as zero. \end
, Illegal unit of measure (pt inserted). \end
.
\,
위의 예와 같은 문서의 서지 제목에 얇은 공백( )을 사용하려면 어떻게 해야 하는지 알려주실 수 있나요 ?
답변1
biblate-ieee
\MakeSentenceCase*
일부(전부는 아님) 항목 유형의 제목에 적용됩니다 . @article
제목 문장을 대소문자로 구분하지만 @book
그렇지 않습니다. 이는 주석의 관찰 내용을 설명합니다.
\MakeSentenceCase
LaTeX에서는 문자열 조작이 다소 까다롭기 때문에 매우 복잡하고 깨지기 쉬운 매크로입니다. 특히 \MakeSentenceCase
상당히 많은 확장을 수행하고 한 번에 한 문자씩 문자열을 반복하려고 시도합니다.
표준 LaTeX는 \,
강력한 매크로로 정의 amsmath
되지만
\renewcommand{\,}{\tmspace+\thinmuskip{.1667em}}
이는 \,
확장될 수 있지만(한 번) 견고하지 않음(확장이 견고함)을 의미합니다. 이 확장으로 인해 기계에 일부 문제가 발생 \MakeSentenceCase
하고 표시되는 오류가 발생합니다.
이 문제를 해결하는 방법에는 여러 가지가 있습니다.
\,
다시 튼튼하게 만드세요 . 문제\renewrobustcmd{\,}{\tmspace+\thinmuskip{.1667em}}
로드한 후
amsmath
. ( MWE에서 에 의해 로드되는\renewrobustcmd
need 가 있으므로 이 줄은 및 를 모두 로드한 후에 와야 합니다 .)etoolbox
biblatex
amsmath
biblatex
\protect
이\,
안에.bib
(에서 제안한대로미코 댓글에서)@article{A, title = {A\protect\,b c}, }
여전히 보호되는 다른 명령을 사용하십시오(에서 제안한 대로).데이비드 퍼튼 댓글에서), 예를 들어
biblatex
와\,
같습니다\addnbthinspace
.@article{A, title = {A\addnbthinspace b c}, }
\MakeSentenceCase
중괄호를 사용하면 언제든지 문자열의 일부를 '숨길' 수 있습니다 .@article{A, title = {A{\,}b c}, }
효과가 있지만 추천할 수 있을지 잘 모르겠습니다.
다음은 biblatex-ieee
.
\documentclass{article}
\usepackage{amsmath}
\usepackage[style=numeric]{biblatex}
\DeclareFieldFormat{titlecase}{\MakeSentenceCase*{#1}}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{A,
title = {A\,b c},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Text~\cite{A}.
\printbibliography
\end{document}