From: <mi...@us...> - 2009-10-23 19:49:33
|
Author: milde Date: 2009-10-23 21:49:19 +0200 (Fri, 23 Oct 2009) New Revision: 6183 Added: trunk/docutils/test/functional/input/data/urls.txt Modified: trunk/docutils/HISTORY.txt trunk/docutils/RELEASE-NOTES.txt trunk/docutils/docs/dev/todo.txt trunk/docutils/docs/user/latex.txt trunk/docutils/docutils/writers/latex2e/__init__.py trunk/docutils/test/functional/expected/latex_docinfo.tex trunk/docutils/test/functional/expected/standalone_rst_latex.tex trunk/docutils/test/functional/input/standalone_rst_latex.txt Log: Use the ``\\\\url`` command for URLs (breaks long URLs instead of writing into the margin). Modified: trunk/docutils/HISTORY.txt =================================================================== --- trunk/docutils/HISTORY.txt 2009-10-23 18:58:32 UTC (rev 6182) +++ trunk/docutils/HISTORY.txt 2009-10-23 19:49:19 UTC (rev 6183) @@ -19,8 +19,10 @@ * docutils/writers/latex2e/__init__.py - - use `transforms.writer_aux.Admonitions` to "normalize" special + - Use `transforms.writer_aux.Admonitions` to "normalize" special admonitions. + - Use the ``\url`` command for URLs (breaks long URLs instead of + writing into the margin). * docutils/nodes.py Modified: trunk/docutils/RELEASE-NOTES.txt =================================================================== --- trunk/docutils/RELEASE-NOTES.txt 2009-10-23 18:58:32 UTC (rev 6182) +++ trunk/docutils/RELEASE-NOTES.txt 2009-10-23 19:49:19 UTC (rev 6183) @@ -21,7 +21,12 @@ Changes Since 0.6 ================= +* LaTeX2e writer: + - Use the ``\url`` command for URLs (breaks long URLs instead of writing + into the margin). + + Release 0.6 (2009-10-11) ======================== Modified: trunk/docutils/docs/dev/todo.txt =================================================================== --- trunk/docutils/docs/dev/todo.txt 2009-10-23 18:58:32 UTC (rev 6182) +++ trunk/docutils/docs/dev/todo.txt 2009-10-23 19:49:19 UTC (rev 6183) @@ -2029,7 +2029,11 @@ :bigfoot: texlive-latex-extra :footnote: texlive-latex-recommended :perpage: texlive-latex-extra + :ftnxtra: new on CTAN + fixes the issue of footnote inside \caption{}, + tabular environment and \section{} like commands. + .. Footnote FAQs: `Footnotes whose texts are identical @@ -2263,72 +2267,40 @@ -1 prevents passing of options to the "ucs" package. -wrapping URLs -````````````` +problematic URLs +```````````````` -Hyperlinks are not hyphenated; this leads to bad spacing. See -docs/user/rst/demo.txt 2.14 directives. +* ^^ LaTeX's special syntax for characters results in "strange" replacements + (both with \href and \url). -See the thread "LaTeX writer: trouble with URLs" at docutils-devel and -http://www.tex.ac.uk/cgi-bin/texfaq2html?label=breaklinks + `file with ^^ <../strange^^name>`__: + `<../strange^^name>`__ -Use \url to typeset URLs. With hyperref, +* Unbalanced braces, { or }, will fail (both with \href and \url):: -* \nolinkurl is an alias for the url package's \url -* \url is equivalent to \href{URL}{\nolinkurl{URL}}. + `file with { <../strange{name>`__ + `<../strange{name>`__ -I don't think we need special support for the 'deception' case -`NAME <URL1>`_ with NAME != URL1 and NAME a valid URL. +Currently, a warning is written to the error output stream. -Detection -^^^^^^^^^ +For correct printing, we can -* Test <reference> nodes for ``node[refuri] == node.astext()`` +* use the \href command with "normal" escaped name argument, or +* define a url-command in the preamble :: -* Apply also to the content of the "uri-reference" role (once it is - implemented). + \urldef{\fragileURLi}\nolinkurl{myself%no...@ga...} -(Do we need an additional test with Docutils' default detection mechanism -states.Inliner.patterns.uri ?) +but need to find a way to insert it as href argument. +The following fails:: -Layout/Font -^^^^^^^^^^^ + \href{http://www.w3.org/XML/Schema^^dev}{\fragileURLi} -We could ensure the same look as currently (normal text font for URLs) with -``\urlstyle{same}``, but I would stick to the LaTeX default and document the -configuration options. +Use %-replacement like http://nowhere/url_with%28parens%29 ? -Fragility -^^^^^^^^^ +-> does not work for file paths (with pdflatex and xpdf). - The "\url" command is fragile, and its argument is likely to be very - fragile, but a defined-url is robust: -As \url is a very special, ``verb``-like command, escaping does not always -work. - -We need to check the conditions: - - If the argument contains any "%", "#", or "^^", or ends with "\", it - can't be used in the argument to another command. The argument must not - contain unbalanced braces. - -Escaping works for # and %:: - - \footnote{siehe \url{http://www.w3.org/XML/Schema\#dev}} - \footnote{siehe \url{http://example.org/Schema\%dev}} - -For "^^", we can define a url-command in the preamble :: - - \urldef{\fragileURLi}\nolinkurl{myself%no...@ga...} - -but need to find a way to insert it as href argument, as the following fails -:: - - \href{http://www.w3.org/XML/Schema^^dev}{\fragileURLi} - - add-stylesheet option ````````````````````` Modified: trunk/docutils/docs/user/latex.txt =================================================================== --- trunk/docutils/docs/user/latex.txt 2009-10-23 18:58:32 UTC (rev 6182) +++ trunk/docutils/docs/user/latex.txt 2009-10-23 19:49:19 UTC (rev 6183) @@ -53,15 +53,15 @@ LaTeX offers (at least) four ways to generate PDF documents from the LaTeX source: -pdflatex +_`pdflatex` Generates a PDF document directly from the LaTeX file. -latex dvipdfm +_`latex + dvipdfm` Use ``latex`` to generate a DVI file and ``dvipdfm`` to produce a PDF file. If you take this approach, add ``dvipdfm`` to the - ``--documentoptions``. + _documentoptions. -latex dvips ps2pdf +latex + dvips + ps2pdf Produce a DVI file with ``latex``, postscript with ``dvips`` and PDF with ``ps2pdf``. @@ -74,6 +74,7 @@ can be used to automatically run all programs the required number of times and delete "spurious" files. +.. _documentoptions: ../user/config.html#documentoptions .. _Rubber: http://iml.univ-mrs.fr/~beffara/soft/rubber/ @@ -312,7 +313,7 @@ Raw LaTeX --------- -By means of the `raw directive`_ or derived `custom roles`_, one can give +By means of the `raw directive`_ or a derived `custom role`_, one can give commands directly to LaTeX. These can be both, styling as well as printing commands, as LaTeX (unlike @@ -878,16 +879,32 @@ hyperlinks `````````` -Hyperlinks are realized using the hyperref_ package. -To reduce incompatibilities, this package is loaded last, *after* the -style sheets. +Hyperlinks are realized using the hyperref_ package. As it re-defines many +standard LaTeX macros, this package is loaded last, *after* the style +sheets. + However, you can load hyperref with custom options (or before a package that -requires its presence) in a custom `style sheet`_, e.g. :: +requires its presence) in a `style sheet`_, e.g. :: \usepackage[colorlinks=true,linkcolor=green,urlcolor=blue]{hyperref} and it will not be loaded again. +URLs are typeset with the "url" package (loaded implicitely by "hyperref"). +The font of URLs can be defined with the ``\urlstyle`` command. Valid +arguments are + +:same: normal text font, Docutils default, +:tt: teletype (monospaced), LaTeX default, +:rm: roman, +:sf: sans serif + +Example: + use the LaTeX default (monospaced fonts for URLs):: + + \usepackage{url} + \urlstyle{tt} + See also `non-breaking hyperlinks`_. disable hyperlinks @@ -1343,7 +1360,7 @@ .. _minitoc: http://www.ctan.org/tex-archive/help/Catalogue/entries/minitoc.html .. _minitoc documentation: -__ http://ctan.org/get/macros/latex/contrib/minitoc/minitoc.pdf + http://ctan.org/get/macros/latex/contrib/minitoc/minitoc.pdf title reference role @@ -1389,11 +1406,11 @@ :utf8: by the standard `inputenc`_ package with only limited coverage (mainly accented chars, only few non-alphabetic symbols, no Greek or - Cyrillic). + Cyrillic). :utf8x: supported by the `ucs`_ package covers a wider range of Unicode - characters than does "utf8". It is, however, a non-standard - extension and no longer developed. + characters than does "utf8". It is, however, a non-standard + extension and no longer developed. Currently (in version 0.6), "utf8" is used if the output-encoding is any of "utf_8", "U8", "UTF", or "utf8". @@ -1491,19 +1508,18 @@ \usepackage[breaklinks=true]{hyperref} "breaklinks" is an internal option that indicates whether the chosen - driver can handle broken links. + driver can handle split links. (It might work to *disable* link breaking.) Right: Use one of the following: - a) compile with ``pdflatex``, + a) compile with pdflatex_, - b) compile with ``latex`` followed by ``dvipdfm`` and call hyperref with - the option ``driver=dvipdf``, or + b) compile with `latex + dvipdfm`_, - c) use the package breakurl_. + c) use the package breakurl_, - d) (for printout) `disable hyperlinks`_ using the package "nohyperref" + d) (for printout) `disable hyperlinks`_ using the package "nohyperref". See also the `Link text doesn’t break at end line`_ FAQ entry. Modified: trunk/docutils/docutils/writers/latex2e/__init__.py =================================================================== --- trunk/docutils/docutils/writers/latex2e/__init__.py 2009-10-23 18:58:32 UTC (rev 6182) +++ trunk/docutils/docutils/writers/latex2e/__init__.py 2009-10-23 19:49:19 UTC (rev 6183) @@ -493,6 +493,7 @@ %% hyperlinks: \ifthenelse{\isundefined{\hypersetup}}{ \usepackage[colorlinks=%s,linkcolor=%s,urlcolor=%s]{hyperref} + \urlstyle{same} %% normal text font (alternatives: tt, rm, sf) }{}""" PreambleCmds.minitoc = r"""%% local table of contents @@ -1185,6 +1186,10 @@ 0x2665: ur'\ding{170}', # black heartsuit 0x2666: ur'\ding{169}', # black diamondsuit } + # TODO: replacements using textcomp + ## textcomp_chars = { + ## 0x00B5: ur'\textmu{}', # MICRO SIGN + ## } # TODO: greek alphabet ... ? # see also LaTeX codec # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/252124 @@ -2240,14 +2245,37 @@ if node['classes']: self.depart_inline(node) + def has_unbalanced_braces(self, string): + level = 0 + for ch in string: + if ch == '{': + level += 1 + if ch == '}': + level -= 1 + if level < 0: + return True + return level != 0 + def visit_reference(self, node): - # BUG: hash_char '#' is troublesome in LaTeX. - # mbox and other environments do not like the '#'. - hash_char = '\\#' + # We need to escape #, \, and % if we use the URL in a command. + special_chars = {ord('#'): ur'\#', + ord('%'): ur'\%', + ord('\\'): ur'\\', + } + # external reference (URL) if 'refuri' in node: - href = node['refuri'].replace('#', hash_char) - self.out.append('\\href{%s}{' % href.replace('%', '\\%')) + href = unicode(node['refuri']).translate(special_chars) + # problematic chars double caret and unbalanced braces: + if href.find('^^') != -1 or self.has_unbalanced_braces(href): + self.document.reporter.error( + 'External link "%s" not supported by LaTeX.\n' + ' (Must not contain "^^" or unbalanced braces.)' % href) + if node['refuri'] == node.astext(): + self.out.append(r'\url{%s}' % href) + raise nodes.SkipNode + self.out.append(r'\href{%s}{' % href) return + # internal reference if 'refid' in node: href = node['refid'] elif 'refname' in node: @@ -2256,11 +2284,10 @@ raise AssertionError('Unknown reference.') if not self.is_inline(node): self.out.append('\n') - self.out.append('\\hyperref[%s]{' % href) - if self._reference_label and 'refuri' not in node: - self.out.append('\\%s{%s}}' % (self._reference_label, - href.replace(hash_char, ''))) + if self._reference_label: + self.out.append('\\%s{%s}}' % + (self._reference_label, href.replace('#', ''))) raise nodes.SkipNode def depart_reference(self, node): Modified: trunk/docutils/test/functional/expected/latex_docinfo.tex =================================================================== --- trunk/docutils/test/functional/expected/latex_docinfo.tex 2009-10-23 18:58:32 UTC (rev 6182) +++ trunk/docutils/test/functional/expected/latex_docinfo.tex 2009-10-23 19:49:19 UTC (rev 6183) @@ -14,6 +14,7 @@ % hyperlinks: \ifthenelse{\isundefined{\hypersetup}}{ \usepackage[colorlinks=true,linkcolor=blue,urlcolor=blue]{hyperref} + \urlstyle{same} % normal text font (alternatives: tt, rm, sf) }{} \hypersetup{ pdfauthor={Foo Fred;Bar Barney} Modified: trunk/docutils/test/functional/expected/standalone_rst_latex.tex =================================================================== --- trunk/docutils/test/functional/expected/standalone_rst_latex.tex 2009-10-23 18:58:32 UTC (rev 6182) +++ trunk/docutils/test/functional/expected/standalone_rst_latex.tex 2009-10-23 19:49:19 UTC (rev 6183) @@ -164,6 +164,7 @@ % hyperlinks: \ifthenelse{\isundefined{\hypersetup}}{ \usepackage[colorlinks=true,linkcolor=blue,urlcolor=blue]{hyperref} + \urlstyle{same} % normal text font (alternatives: tt, rm, sf) }{} \hypersetup{ pdftitle={reStructuredText Test Document}, @@ -344,16 +345,16 @@ Paragraphs contain text and may contain inline markup: \emph{emphasis}, \textbf{strong emphasis}, \texttt{inline literals}, standalone hyperlinks -(\href{http://www.python.org}{http://www.python.org}), external hyperlinks (\href{http://www.python.org/}{Python}\DUfootnotemark{id27}{id26}{5}), internal +(\url{http://www.python.org}), external hyperlinks (\href{http://www.python.org/}{Python}\DUfootnotemark{id30}{id29}{5}), internal cross-references (\hyperref[example]{example}), external hyperlinks with embedded URIs (\href{http://www.python.org}{Python web site}), \href{http://www.python.org/}{anonymous hyperlink -references}\DUfootnotemark{id30}{id26}{5} (\href{http://docutils.sourceforge.net/}{a second reference}\DUfootnotemark{id32}{id31}{6}), footnote references (manually +references}\DUfootnotemark{id33}{id29}{5} (\href{http://docutils.sourceforge.net/}{a second reference}\DUfootnotemark{id35}{id34}{6}), footnote references (manually numbered\DUfootnotemark{id1}{id8}{1}, anonymous auto-numbered\DUfootnotemark{id2}{id12}{3}, labeled auto-numbered\DUfootnotemark{id3}{label}{2}, or symbolic\DUfootnotemark{id4}{id13}{*}), citation references ([\hyperlink{cit2002}{CIT2002}]), substitution references (\includegraphics{../../../docs/user/rst/images/biohazard.png}), and % \phantomsection\label{inline-hyperlink-targets}inline hyperlink targets (see \hyperref[targets]{Targets} below for a reference back to here). Character-level inline markup is also possible (although exceedingly ugly!) in \emph{re}\texttt{Structured}\emph{Text}. Problems are indicated by % -\raisebox{1em}{\hypertarget{id25}{}}\hyperlink{id24}{\textbf{\color{red}|problematic|}} text +\raisebox{1em}{\hypertarget{id28}{}}\hyperlink{id27}{\textbf{\color{red}|problematic|}} text (generated by processing errors; this one is intentional). Here is a reference to the \hyperref[doctitle]{doctitle} and the \hyperref[subtitle]{subtitle}. @@ -811,8 +812,8 @@ \DUfootnotetext{id16}{id16}{4}{ Here's an unreferenced footnote, with a reference to a nonexistent footnote:% -\raisebox{1em}{\hypertarget{id34}{}}% -\raisebox{1em}{\hypertarget{id17}{}}\hyperlink{id33}{\textbf{\color{red}{[}5{]}\_}}. +\raisebox{1em}{\hypertarget{id41}{}}% +\raisebox{1em}{\hypertarget{id17}{}}\hyperlink{id40}{\textbf{\color{red}{[}5{]}\_}}. } @@ -829,8 +830,8 @@ \end{figure} Here's a reference to the above, [\hyperlink{cit2002}{CIT2002}], and a % -\raisebox{1em}{\hypertarget{id36}{}}% -\raisebox{1em}{\hypertarget{id19}{}}\hyperlink{id35}{\textbf{\color{red}{[}nonexistent{]}\_}} +\raisebox{1em}{\hypertarget{id43}{}}% +\raisebox{1em}{\hypertarget{id19}{}}\hyperlink{id42}{\textbf{\color{red}{[}nonexistent{]}\_}} citation. @@ -852,13 +853,13 @@ \hyperref[targets]{Targets}, which is a subsection of \hyperref[body-elements]{Body Elements}. Explicit external targets are interpolated into references such as -``\href{http://www.python.org/}{Python}\DUfootnotemark{id28}{id26}{5}''. +``\href{http://www.python.org/}{Python}\DUfootnotemark{id31}{id29}{5}''. Targets may be indirect and anonymous. Thus \hyperref[targets]{this phrase} may also refer to the \hyperref[targets]{Targets} section. Here's a % -\raisebox{1em}{\hypertarget{id38}{}}\hyperlink{id37}{\textbf{\color{red}`hyperlink reference without a target`\_}}, which generates an +\raisebox{1em}{\hypertarget{id45}{}}\hyperlink{id44}{\textbf{\color{red}`hyperlink reference without a target`\_}}, which generates an error. @@ -886,7 +887,7 @@ Since there are two ``Duplicate Target Names'' section headers, we cannot uniquely refer to either of them by name. If we try to (like this: % -\raisebox{1em}{\hypertarget{id40}{}}\hyperlink{id39}{\textbf{\color{red}`Duplicate Target Names`\_}}), an error is generated. +\raisebox{1em}{\hypertarget{id47}{}}\hyperlink{id46}{\textbf{\color{red}`Duplicate Target Names`\_}}), an error is generated. %___________________________________________________________________________ @@ -900,7 +901,7 @@ \phantomsection\label{contents} These are just a sample of the many reStructuredText Directives. For others, please see -\href{http://docutils.sourceforge.net/docs/ref/rst/directives.html}{http://docutils.sourceforge.net/docs/ref/rst/directives.html}. +\url{http://docutils.sourceforge.net/docs/ref/rst/directives.html}. %___________________________________________________________________________ @@ -1182,13 +1183,17 @@ \label{target-footnotes}% } % -\DUfootnotetext{id26}{id27}{5}{ -\href{http://www.python.org/}{http://www.python.org/} +\DUfootnotetext{id29}{id30}{5}{ +\url{http://www.python.org/} } % -\DUfootnotetext{id31}{id32}{6}{ -\href{http://docutils.sourceforge.net/}{http://docutils.sourceforge.net/} +\DUfootnotetext{id34}{id35}{6}{ +\url{http://docutils.sourceforge.net/} } +% +\DUfootnotetext{id36}{id37}{7}{ +\url{A:DOS\\path\\} +} %___________________________________________________________________________ @@ -1199,7 +1204,7 @@ \label{replacement-text}% } -I recommend you try \href{http://www.python.org/}{Python, \emph{the} best language around}\DUfootnotemark{id29}{id26}{5}. +I recommend you try \href{http://www.python.org/}{Python, \emph{the} best language around}\DUfootnotemark{id32}{id29}{5}. %___________________________________________________________________________ @@ -1900,6 +1905,95 @@ \hyperref[hypertarget-in-figure-caption]{hypertarget in figure caption}, and \hyperref[hypertarget-in-figure-legend]{hypertarget in figure legend}, + +%___________________________________________________________________________ + +\subsection*{3.7~~~External references% + \phantomsection% + \addcontentsline{toc}{subsection}{3.7~~~External references}% + \label{external-references}% +} + +Long URLs should be wrapped in the PDF. +This can be achieved with the url command which is used by the LaTeX writer +wheneve the content (name) of a reference node equals the link URL. +% +\begin{description} +\item[{Example:}] \leavevmode +a long URL that should wrap in the output +\url{http://docutils.sourceforge.net/docs/user/latex.html\#id79} + +\end{description} + +If the argument contains any ``\%'', ``\#'', or ``\textasciicircum{}\textasciicircum{}'', or ends with \texttt{\textbackslash{}}, it can't +be used in the argument to another command. The argument must not contain +unbalanced braces. + +The characters \textasciicircum{}, \{, \}, and \texttt{\textbackslash{}} are invalid in a ``http:'' or ``ftp:'' URL +and not recognized as part of it: + +\begin{DUlineblock}{0em} +\item[] \url{http://www.example.org}/strange\textasciicircum{}\textasciicircum{}name +\item[] \url{http://www.example.org}\textbackslash{}using\textbackslash{}DOS\textbackslash{}paths\textbackslash{} +\item[] \url{http://www.example.org/XML}/strange\{n\}ame +\end{DUlineblock} + +They can, however be used in paths and/or filenames. + +Handling by the LaTeX writer: +% +\begin{itemize} + +\item \texttt{\#}, \texttt{\textbackslash{}} and \texttt{\%} are escaped: + +\begin{DUlineblock}{0em} +\item[] \href{http://www.w3.org/XML/Schema\#dev}{URL with \#} +\url{http://www.w3.org/XML/Schema\#dev} +\item[] \href{http://www.w3.org/XML/Schema\%dev}{URL with \%} +\url{http://example.org/Schema\%dev} +\item[] \href{A:DOS\\path\\}{file with DOS path}\DUfootnotemark{id37}{id36}{7} \url{A:DOS\\path\\}\DUfootnotemark{id38}{id36}{7} +\end{DUlineblock} + +\DUadmonition[note]{ +\DUtitle[note]{Note} + +These URLs are typeset inside a LaTeX command without error. + +\begin{DUlineblock}{0em} +\item[] \url{http://www.w3.org/XML/Schema\#dev} +\item[] \url{http://example.org/Schema\%dev} +\item[] \url{A:DOS\\path\\}\DUfootnotemark{id39}{id36}{7} +\end{DUlineblock} +} + +\end{itemize} +% +\begin{itemize} + +\item \textasciicircum{}\textasciicircum{} LaTeX's special syntax for characters results in ``strange'' replacements +(both with href and url). A warning is given. + +\href{../strange^^name}{file with \textasciicircum{}\textasciicircum{}}: +\url{../strange^^name} + +\item Unbalanced braces, \{ or \}, will fail (both with href and url): +% +\begin{quote}{\ttfamily \raggedright \noindent +`file~with~\{~<../strange\{name>`\_\_\\ +`<../strange\{name>`\_\_ +} +\end{quote} + +while balanced braces are suported: + +\begin{DUlineblock}{0em} +\item[] \url{../strange{n}ame} +\item[] \url{../st{r}ange{n}ame} +\item[] \url{../{st{r}ange{n}ame}} +\end{DUlineblock} + +\end{itemize} + % unusual combinations (from newlatex, for interactive testing) % .. include:: data/latex.txt @@ -1931,51 +2025,51 @@ \DUadmonition[system-message]{ \DUtitle[system-message]{system-message} -\raisebox{1em}{\hypertarget{id24}{}} +\raisebox{1em}{\hypertarget{id27}{}} {\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~104 -\hyperlink{id25}{ +\hyperlink{id28}{ Undefined substitution referenced: ``problematic''. }} \DUadmonition[system-message]{ \DUtitle[system-message]{system-message} -\raisebox{1em}{\hypertarget{id33}{}} +\raisebox{1em}{\hypertarget{id40}{}} {\color{red}ERROR/3} in \texttt{functional/input/standalone\_rst\_latex.txt}, line~363 -\hyperlink{id34}{ +\hyperlink{id41}{ Unknown target name: ``5''. }} \DUadmonition[system-message]{ \DUtitle[system-message]{system-message} -\raisebox{1em}{\hypertarget{id35}{}} +\raisebox{1em}{\hypertarget{id42}{}} {\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~372 -\hyperlink{id36}{ +\hyperlink{id43}{ Unknown target name: ``nonexistent''. }} \DUadmonition[system-message]{ \DUtitle[system-message]{system-message} -\raisebox{1em}{\hypertarget{id37}{}} +\raisebox{1em}{\hypertarget{id44}{}} {\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~399 -\hyperlink{id38}{ +\hyperlink{id45}{ Unknown target name: ``hyperlink reference without a target''. }} \DUadmonition[system-message]{ \DUtitle[system-message]{system-message} -\raisebox{1em}{\hypertarget{id39}{}} +\raisebox{1em}{\hypertarget{id46}{}} {\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~412 -\hyperlink{id40}{ +\hyperlink{id47}{ Duplicate target name, cannot be used as a unique reference: ``duplicate target names''. }} Added: trunk/docutils/test/functional/input/data/urls.txt =================================================================== --- trunk/docutils/test/functional/input/data/urls.txt 2009-10-23 18:58:32 UTC (rev 6182) +++ trunk/docutils/test/functional/input/data/urls.txt 2009-10-23 19:49:19 UTC (rev 6183) @@ -0,0 +1,62 @@ +External references +------------------- + +Long URLs should be wrapped in the PDF. +This can be achieved with the \url command which is used by the LaTeX writer +wheneve the content (name) of a reference node equals the link URL. + +Example: + a long URL that should wrap in the output + http://docutils.sourceforge.net/docs/user/latex.html#id79 + + +If the argument contains any "%", "#", or "^^", or ends with ``\``, it can't +be used in the argument to another command. The argument must not contain +unbalanced braces. + +The characters ^, {, }, and ``\`` are invalid in a "http:" or "ftp:" URL +and not recognized as part of it: + +| http://www.example.org/strange^^name +| http://www.example.org\\using\\DOS\\paths\\ +| http://www.example.org/XML/strange{n}ame + +They can, however be used in paths and/or filenames. + +Handling by the LaTeX writer: + +* ``#``, ``\`` and ``%`` are escaped: + + | `URL with # <http://www.w3.org/XML/Schema#dev>`__ + http://www.w3.org/XML/Schema#dev + | `URL with % <http://www.w3.org/XML/Schema%dev>`__ + http://example.org/Schema%dev + | `file with DOS path`__ `A:DOS\\path\\`__ + + .. note:: These URLs are typeset inside a LaTeX command without error. + + | http://www.w3.org/XML/Schema#dev + | http://example.org/Schema%dev + | `A:DOS\\path\\`__ + +__ +__ +__ A:DOS\\path\\ + + +* ^^ LaTeX's special syntax for characters results in "strange" replacements + (both with \href and \url). A warning is given. + + `file with ^^ <../strange^^name>`__: + `<../strange^^name>`__ + +* Unbalanced braces, { or }, will fail (both with \href and \url):: + + `file with { <../strange{name>`__ + `<../strange{name>`__ + + while balanced braces are suported: + + | `<../strange{n}ame>`__ + | `<../st{r}ange{n}ame>`__ + | `<../{st{r}ange{n}ame}>`__ Property changes on: trunk/docutils/test/functional/input/data/urls.txt ___________________________________________________________________ Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native Modified: trunk/docutils/test/functional/input/standalone_rst_latex.txt =================================================================== --- trunk/docutils/test/functional/input/standalone_rst_latex.txt 2009-10-23 18:58:32 UTC (rev 6182) +++ trunk/docutils/test/functional/input/standalone_rst_latex.txt 2009-10-23 19:49:19 UTC (rev 6183) @@ -17,6 +17,7 @@ .. include:: data/unicode.txt .. include:: data/latex_encoding.txt .. include:: data/hyperlinking.txt +.. include:: data/urls.txt .. unusual combinations (from newlatex, for interactive testing) .. include:: data/latex.txt |