
방금 내 배포판(2015)의 모든 패키지 업데이트를 수행했는데 이제 +를 패키지 와 texlive
결합하는 데 문제가 있습니다 .biber
biblatex
microtype
해당 오류는 파일에 '특수' 문자를 사용할 때만 발생하고 bib
, 참고문헌 인쇄를 요청하는 경우에만 발생하는 것 같습니다. 다음은 최소한의 예입니다.
\documentclass{article}
\usepackage{filecontents}
\usepackage{microtype}
\usepackage[backend=biber]{biblatex}
\begin{filecontents}{\jobname.bib}
@book{renyi1970,
author = {R\'enyi, Alfr\'ed},
location = {San Francisco},
publisher = {Holden-Day},
title = {Foundations of Probability},
year = {1970},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\cite{renyi1970}
\printbibliography
\end{document}
내가받는 오류 메시지는 다음과 같이 시작됩니다.
! Argument of \MT@res@a has an extra }.
<inserted text>
\par
l.23
I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply proceed now, the `\par' that
I've just inserted will cause me to report a runaway
argument that might be the root of the problem. But if
your `}' was spurious, just type `2' and it will go away.
Runaway argument?
##1,\OT1/cmr/m/n/10 ,##2##3\@nnil {\ifx ##2\@empty \MT@inlist@false \else \ETC.
! Paragraph ended before \MT@res@a was complete.
<to be read again>
\par
l.23
\printbibliography
인용 스타일을 사용하더라도 명령을 제거하면 문제가 사라지므로 authoryear
발음 구별 부호만으로는 문제가 발생하지 않습니다. 즉, 다음은 예상대로 컴파일됩니다.
\documentclass{article}
\usepackage{filecontents}
\usepackage{microtype}
\usepackage[backend=biber, citestyle=authoryear]{biblatex}
\begin{filecontents}{\jobname.bib}
@book{renyi1970,
author = {R\'enyi, Alfr\'ed},
location = {San Francisco},
publisher = {Holden-Day},
title = {Foundations of Probability},
year = {1970},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\cite{renyi1970}
\end{document}
microtype
오류는 및 사이의 상호 작용과 관련이 있는 것 같습니다 biber
. 그 중 하나만 발생하지 않기 때문입니다( 백엔드로 microtype
시도 했는데 잘 작동했습니다. 없이도 시도했지만 잘 작동했습니다).bibtex
biblatex
biber
microtype
수집은 2013년 이후로 업데이트되지 않았으므로 최신 버전 (2.4) 또는 최신 버전 (3.3) microtype
에서 문제가 발생한 것으로 가정합니다 .biber
biblatex
답변1
나는 이것이 다음의 버그라고 말하고 싶습니다 biblatex
.
biblatex_.sty
(와 함께 사용되는 레거시가 아닌 버전 ) 에서는 biber
시작 부분에서 바로 다음을 찾습니다.
% Tests for emptiness, regardless whether the arg is macro or literal
% Expand everything and test as string
\def\ifempty#1{%
\edef\z{#1}%
\expandafter\ifblank\expandafter{\z}}
이제 \edef
사용자 입력은 절대로 해서는 안 되는 일입니다.
OP의 최소 예제는 (라텍스의 "사용자에게 안전한" 버전인 ) \edef
로 대체하면 나에게 효과적 이지만 이것이 어떤 다른 결과를 가져올지는 예측할 수 없습니다.\protected@edef
\edef
답변2
이는 biblatex 변경으로 인한 것입니다. 이름 부분 변경으로부터 사용자를 최대한 보호하려고 노력했지만 이런 종류의 결과 때문에 실제로는 실현 가능하지 않습니다. 언급한 대로, 어쨌든 해야 할 것으로 생각되는 Fontenc를 사용하면 문제가 존재하지 않습니다. 그러나 DEV의 biblatex 3.4에서 문제가 있는 테스트를 변경했으며 더 이상 문제가 발생하지 않습니다.
답변3
그냥 추가하면 오류가 발생하지 않습니다 \usepackage[T1]{fontenc}
. microtype
인코딩이 OT1일 때 어디가 막히는지는 명확하지 않습니다 .
biblatex 2016/03/03 v3.3
그리고biber version: 2.4
\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{renyi1970,
author = {R\'enyi, Alfr\'ed},
location = {San Francisco},
publisher = {Holden-Day},
title = {Foundations of Probability},
year = {1970},
}
\end{filecontents}
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[backend=biber]{biblatex}
\usepackage{microtype}
\addbibresource{\jobname.bib}
\begin{document}
\cite{renyi1970}
\printbibliography
\end{document}
답변4
biber
다음으로 실행
biber --output-safechars <file>
하지만 쓰는 것이 더 의미가 있습니다.
author = {Rényi, Alfréd},
그리고 lualatex
적어도 `
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
~을 위한pdflatex