From: Sergio <ser...@gm...> - 2016-05-28 18:27:56
|
If I run rst2html test.rst > test.html I obtain a file with the links correctly setted as one can expect. But if I run $ rst2latex test.rst > test.tex $ pdflatex test.tex I obtain a series of warnings: LaTeX Warning: Hyper reference `chunk3' on page 2 undefined on input line 150. and the links there are not into the resultin pdf. I can correct this behaviour adding into "test.tex" a series of macro "\phantomsection\label{chunk1}", but I think this should be done by rst2latex. The file "test.tex" has the corrections into a comment block. ==file test.rst========================= ========= pipe test ========= A little benchmark to study the behavior of noweb. .. contents:: Table of Contents | The name of this program is "pipe" and has two blocks of code. .. _chunk1: :: <pipe>= <Add two terms> <Say hallo> The first block of code takes two parameters and return the sum of them. Think of it as a ``graeting code`` between two column of beer. .. _chunk2: :: <Add two terms>= def add(a, b): result = a + b return result *[defines <add> used in chunk3_]* . then open the list and return the result. .. _chunk3: :: <Add two terms>+= result = result - [] return result The second and last block of code takes one parameter, uses the add function previously defined, and finally say hallo. .. _chunk4: :: <Say hallo>= def sayhallo(s): v = add(s, s+1) print "Hallo %d" % (v) *[defines <sayhallo>]* . So has come the end of the program. List of chunks -------------- | ``<pipe>``, defined at chunk1_ | ``<Add two terms>``, defined at chunk2_, used at chunk1_ | ``<Say hallo>``, defined at chunk3_, used at chunk1_ List of identifiers ------------------- | *add*, defined at chunk2_, used at chunk3_ | *sayhallo*, defined at chunk3_ ==end of file test.rst================== ==file test.tex========================= \documentclass[a4paper]{article} % generated by Docutils <http://docutils.sourceforge.net/> \usepackage{fixltx2e} % LaTeX patches, \textsubscript \usepackage{cmap} % fix search and cut-and-paste in Acrobat \usepackage{ifthen} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \setcounter{secnumdepth}{0} %%% Custom LaTeX preamble % PDF Standard Fonts \usepackage{mathptmx} % Times \usepackage[scaled=.90]{helvet} \usepackage{courier} %%% User specified packages and stylesheets %%% Fallback definitions for Docutils-specific commands % providelength (provide a length variable and set default, if it is new) \providecommand*{\DUprovidelength}[2]{ \ifthenelse{\isundefined{#1}}{\newlength{#1}\setlength{#1}{#2}}{} } % lineblock environment \DUprovidelength{\DUlineblockindent}{2.5em} \ifthenelse{\isundefined{\DUlineblock}}{ \newenvironment{DUlineblock}[1]{% \list{}{\setlength{\partopsep}{\parskip} \addtolength{\partopsep}{\baselineskip} \setlength{\topsep}{0pt} \setlength{\itemsep}{0.15\baselineskip} \setlength{\parsep}{0pt} \setlength{\leftmargin}{#1}} \raggedright } {\endlist} }{} % hyperlinks: \ifthenelse{\isundefined{\hypersetup}}{ \usepackage[colorlinks=true,linkcolor=blue,urlcolor=blue]{hyperref} \urlstyle{same} % normal text font (alternatives: tt, rm, sf) }{} \hypersetup{ pdftitle={pipe test}, } %%% Title Data \title{\phantomsection% pipe test% \label{pipe-test}} \author{} \date{} %%% Body \begin{document} \maketitle A little benchmark to study the behavior of noweb. \phantomsection\label{table-of-contents} \pdfbookmark[1]{Table of Contents}{table-of-contents} \renewcommand{\contentsname}{Table of Contents} \tableofcontents \begin{DUlineblock}{0em} \item[] \end{DUlineblock} The name of this program is \textquotedbl{}pipe\textquotedbl{} and has two blocks of code. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% HERE SHOULD BE THE LINE %% %% \phantomsection\label{chunk1} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{quote}{\ttfamily \raggedright \noindent <pipe>=\\ ~~<Add~two~terms>\\ ~~<Say~hallo> } \end{quote} The first block of code takes two parameters and return the sum of them. Think of it as a \texttt{graeting code} between two column of beer. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% HERE SHOULD BE THE LINE %% %% \phantomsection\label{chunk2} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{quote}{\ttfamily \raggedright \noindent <Add~two~terms>=\\ ~~def~add(a,~b):\\ ~~~~~~result~=~a~+~b\\ ~~~~~~return~result } \end{quote} \emph{{[}defines <add> used in chunk3\_{]}} . then open the list and return the result. % \begin{quote}{\ttfamily \raggedright \noindent <Add~two~terms>+=\\ ~~~~~~result~=~result~-~{[}{]}\\ ~~~~~~return~result } \end{quote} The second and last block of code takes one parameter, uses the add function previously defined, and finally say hallo. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% HERE SHOULD BE THE LINE %% %% \phantomsection\label{chunk3} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{quote}{\ttfamily \raggedright \noindent <Say~hallo>=\\ ~~def~sayhallo(s):\\ ~~~~~~v~=~add(s,~s+1)\\ ~~~~~~print~\textquotedbl{}Hallo~\%d\textquotedbl{}~\%~(v) } \end{quote} \emph{{[}defines <sayhallo>{]}} . So has come the end of the program. \section{List of chunks% \label{list-of-chunks}% } \begin{DUlineblock}{0em} \item[] \texttt{<pipe>}, defined at \hyperref[chunk1]{chunk1} \item[] \texttt{<Add two terms>}, defined at \hyperref[chunk2]{chunk2}, used at \hyperref[chunk1]{chunk1} \item[] \texttt{<Say hallo>}, defined at \hyperref[chunk3]{chunk3}, used at \hyperref[chunk1]{chunk1} \end{DUlineblock} \section{List of identifiers% \label{list-of-identifiers}% } \begin{DUlineblock}{0em} \item[] \emph{add}, defined at \hyperref[chunk2]{chunk2}, used at \hyperref[chunk3]{chunk3} \item[] \emph{sayhallo}, defined at \hyperref[chunk3]{chunk3} \end{DUlineblock} \end{document} ==end of file test.tex================== |