LaTeX (backref)
У наведеному нижче коді LaTeX використовується цитування, а цитування містить список сторінок, на яких цитується запис. Ось це перша сторінка. Пакет hyperref
також додає PDF-посилання, зворотний бік сторінки - червоний, посилання цитування - зелене.
\documentclass{article}
\usepackage[colorlinks,pagebackref]{hyperref}
\begin{document}
Donald E. Knuth is the inventor of \TeX~\cite{knuth}.
\begin{thebibliography}{9}
\bibitem{knuth}
Donald E. Knuth: \textit{The \TeX book}; Addison Wesley, 1984.
\end{thebibliography}
\end{document}
Але LaTeX не вимагає порожнього рядка, порожній рядок виглядає зайвим, і приклад все одно буде працювати без hyperref
і порожній рядок:
\documentclass{article}
\begin{document}
Donald E. Knuth is the inventor of \TeX~\cite{knuth}.
\begin{thebibliography}{9}
\bibitem{knuth}
Donald E. Knuth: \textit{The \TeX book}; Addison Wesley, 1984.
\end{thebibliography}
\end{document}
Але посилання та зворотна посилання вже відсутні, тому ми їх знову вставляємо:
\documentclass{article}
\usepackage[colorlinks,pagebackref]{hyperref}
\begin{document}
Donald E. Knuth is the inventor of \TeX~\cite{knuth}.
\begin{thebibliography}{9}
\bibitem{knuth}
Donald E. Knuth: \textit{The \TeX book}; Addison Wesley, 1984.
\end{thebibliography}
\end{document}
Але тепер приклад зламаний і більше не збирається :
Runaway argument?
Donald E. Knuth: \textit {The \TeX book}; Addison Wesley, 1984. \end \ETC.
! File ended while scanning use of \BR@@bibitem.
<inserted text>
\par
<*> knuth
?
Що сталося? Пакет hyperref
(або більш точний пакет backref
, який завантажується hyperref
) хоче отримати в кінці бібліографічного запису, щоб додати задній список посилань. Але синтаксис у LaTeX забезпечує лише початок запису \bibitem
, кінець може бути де завгодно. У цей екстрений пакет backref
додано обмеження, яке \bibitem
має закінчувати запис порожнім рядком. Потім пакет може бути переосмислений, \bibitem
щоб помістити посилання назад в кінці запису.
Оскільки порожній рядок відсутній, TeX продовжує шукати його, але замість цього знайшов кінець файлу і видає повідомлення про помилку.