Biber 2.4, 마이크로타이프 및 특수 문자

Biber 2.4, 마이크로타이프 및 특수 문자

방금 내 배포판(2015)의 모든 패키지 업데이트를 수행했는데 이제 +를 패키지 와 texlive결합하는 데 문제가 있습니다 .biberbiblatexmicrotype

해당 오류는 파일에 '특수' 문자를 사용할 때만 발생하고 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시도 했는데 잘 작동했습니다. 없이도 시도했지만 잘 작동했습니다).bibtexbiblatexbibermicrotype

수집은 2013년 이후로 업데이트되지 않았으므로 최신 버전 (2.4) 또는 최신 버전 (3.3) microtype에서 문제가 발생한 것으로 가정합니다 .biberbiblatex

답변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

관련 정보