LINUX.ORG.RU

[LaTeX]Ссылка на \bibliography в hyperref


0

1
\documentclass[russian,utf8,emptystyle,pointsection]{eskdtext}
%% Тут описаны графы для титульного листа
.....
%%%%%%%%%%

\usepackage{eskdplain}

\usepackage{longtable}
\usepackage{array}
\usepackage{multirow}
\usepackage{lscape}

%%%%%%%%%%%
\usepackage[pdftex,unicode]{hyperref}
\hypersetup{
  pdftitle={Курсовая работа},
  pdfkeywords={Курсовая работа и удивительные приключения}
}
%%%%%%%%%%%

\bibliographystyle{gost780s}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\maketitle
\tableofcontents

\newpage
\ESKDstyle{plain}

\phantomsection\addcontentsline{toc}{section}{Введение}
\section*{Введение}

\newpage
\section{История вопроса и его современное состояние}

\newpage
\section{Условия и методы проведения экспериментов}
авпвапва\cite{test2} авпвап\cite{test}

\newpage
\section{Описание результата}
hjghjgh hgj ghjgh ghjg 
\subsection{324234234}
fdsgdfgdg fghg fjhhg fghd dfghf fgh

\newpage
\phantomsection\addcontentsline{toc}{section}{Заключение}
\section*{Заключение}

\newpage
\bibliography{biblio} %файл bibtex

\ESKDappendix{справочное}{Листинг}

\end{document}

\tableofcontents генерирует правильное содержание на листе, но ссылка на список литературы работает некорректно (скриншот).

Если по аналогии с \section* сделать

\phantomsection\addcontentsline{toc}{section}{\refname}
\bibliography{biblio}
появляется правильная ссылка на библиографию, но неправильная не исчезает (скриншот).

В документации и гугле ничего не нашлось. Как исправить с минимумом хаков?

Deleted

В файле eskdbiblist.sty окружение \thebibliography определенно следующим образом

\def\thebibliography#1{%
     \section*{\refname}\addcontentsline{toc}{section}{\refname}%
      \list{\@biblabel{\@arabic\c@enumiv}}%
           {\settowidth\labelwidth{\@biblabel{#1}}%
            \leftmargin\labelwidth
            \advance\leftmargin\labelsep
            \@openbib@code
            \usecounter{enumiv}%
            \let\p@enumiv\@empty
            \renewcommand\theenumiv{\@arabic\c@enumiv}}%
      \sloppy
      \clubpenalty4000
      \@clubpenalty \clubpenalty
      \widowpenalty4000%
      \sfcode`\.\@m}
Собственно тут и не хватает \phantomsection перед \addcontentsline, что и необходимо пофиксить. Вот рабочий вариант:
\documentclass[russian,utf8,emptystyle,pointsection]{eskdtext}
%% Тут описаны графы для титульного листа
%%%%%%%%%%

\usepackage{eskdplain}

\usepackage{longtable}
\usepackage{array}
\usepackage{multirow}
\usepackage{lscape}

%%%%%%%%%%%
\usepackage[pdftex,unicode]{hyperref}
\hypersetup{
  pdftitle={Курсовая работа},
  pdfkeywords={Курсовая работа и удивительные приключения}
}
%%%%%%%%%%%

\bibliographystyle{gost780s}

%%%Fixing \thebibliography from eskdbiblist.sty to work with hyperref%%%
\makeatletter
\def\thebibliography#1{%
     \section*{\refname}\phantomsection\addcontentsline{toc}{section}{\refname}%
      \list{\@biblabel{\@arabic\c@enumiv}}%
           {\settowidth\labelwidth{\@biblabel{#1}}%
            \leftmargin\labelwidth
            \advance\leftmargin\labelsep
            \@openbib@code
            \usecounter{enumiv}%
            \let\p@enumiv\@empty
            \renewcommand\theenumiv{\@arabic\c@enumiv}}%
      \sloppy
      \clubpenalty4000
      \@clubpenalty \clubpenalty
      \widowpenalty4000%
      \sfcode`\.\@m}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\maketitle
\tableofcontents

\newpage
\ESKDstyle{plain}

\phantomsection\addcontentsline{toc}{section}{Введение}
\section*{Введение}

\newpage
\section{История вопроса и его современное состояние}

\newpage
\section{Условия и методы проведения экспериментов}
авпвапва\cite{test2} авпвап\cite{test}

\newpage
\section{Описание результата}
hjghjgh hgj ghjgh ghjg 
\subsection{324234234}
fdsgdfgdg fghg fjhhg fghd dfghf fgh

\newpage
\phantomsection\addcontentsline{toc}{section}{Заключение}
\section*{Заключение}

\newpage
\bibliography{biblio} %файл bibtex

\ESKDappendix{справочное}{Листинг}

\end{document}

aleax ()
Ответ на: комментарий от aleax

Спасибо. Надо еще передвинуть \section* чтобы ссылка вела на заголовок библиографии, а не на первый элемент в списке.

\phantomsection\addcontentsline{toc}{section}{\refname}\section*{\refname}
Deleted ()
Ответ на: комментарий от Deleted

hyperref сделай color, а не рамками - будет смотреться куда красивее, и ещё там косяка не будет в случае ссылок, занимающих 2 строки. Косяк в том, что вместо одной большой рамки, опоясывающей текст в несколько строк, будет одна тоненькая хрен-попадёшь рамочка между строками.

scaldov ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.