[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] [BUG?] Strange effect of noweb name collision on LaTeX export
From: |
Ethan Ligon |
Subject: |
Re: [O] [BUG?] Strange effect of noweb name collision on LaTeX export |
Date: |
Fri, 8 Jun 2012 08:54:48 -0700 |
On Fri, Jun 8, 2012 at 8:13 AM, Eric Schulte <address@hidden> wrote:
> Ethan Ligon <address@hidden> writes:
>
>> #+TITLE: Example of name collision bug
>> #+AUTHOR:
>> #+EMAIL:
>> #+DATE: 2012-06-07 Thu
>> #+OPTIONS: H:3 num:t toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
>>
>> * Figure and trivial code reference
>> Here we have a figure.
>> This example works as expected; we get a latex figure on export.
>>
>> [[./foo.png]]
>>
>> * Figure and trivial code reference (with collision)
>> Here we have a figure and a trivial code block with a noweb reference.
>> The difference is that the basename of the figure matches the noweb
>> reference. Instead of a figure on latex export, we get a hyperref!
>>
>> [[./bar.png]]
>>
>> #+BEGIN_SRC sh :exports none
>> #<<bar>>
>> #+END_SRC
>
> Ah, so as it turns out the syntax for the noweb reference happens to be
> the same as the syntax used to specify a latex label. In this case the
> LaTeX exporter first mistakes the <<bar>> as a label anchor, and then
> apparently converts the bar.png link to a real link.
>
> The latex exporter probably shouldn't try to make anchors out of the
> text within code blocks. However, in the mean time you can customize
> the noweb syntax using the `org-babel-noweb-wrap-start' and
> `org-babel-noweb-wrap-end' variables so that they aren't mistaken for
> label anchors.
This diagnosis seems exactly right (and thanks for the work-around).
The problem is even worse than I indicated earlier, though---things
like
./foo-bar.png
or
./foo_bar.png
are incorrectly turned into a link if there's any source block along
the lines of
#+begin_src sh
<<foo>>
#+end_src
or
#+begin_src sh
<<bar>>
#+end_src
Note also that this is not just an ambiguity about whether
./foo-bar.png should be treated as a link or a figure, because if it's
a link it's a /broken/ link (in the example above the resulting LaTeX
is \hyperref[.-foo-bar.png]{./foo-bar.png})
-Ethan
--
Ethan Ligon, Associate Professor
Agricultural & Resource Economics
University of California, Berkeley