On 31/12/12 14:58, Stuart Rackham wrote:
>
>
> On 10/10/12 11:49, Lex Trotman wrote:
>>
>>
>> On 10 October 2012 04:34, Jens Getreu <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>> I observed the following behavior:
>>
>> 1. Without :data-uri: directive: Paths in subdocuments to images
>> are relative to the location of the main document.
>> 2. With :data-uri: Paths in subdocuments to images are relative to
>> the location of the subdocument.
>>
>> I usually use the 2. because my subdocuments are independent
>> projects with separate resources. Unfortunately not all backends
>> implement the 2. correctly yet.
>> For example the html4 and odt backends do not therefore my projects
>> do not compile with these backends.
>>
>>
>> The ODT backend is a separate project, please file an issue on its site.
>>
>> Data-uri is not supported by HTML, only xhtml and html5.
>>
>> They should all follow type two, but there is a bug(s).
>>
>> @Stuart, documentation says images are relative to the referring
>> document. Data-uri correctly uses {indir}/{imagesdir}/{target} but non
>> data-uri uses {imagesdir}/{target} which makes them relative to the
>> *working* directory (if {imagesdir} is not absolute), not the document
>> directory. It is therefore wrong if for example the document is an
>> included document from another directory, or asciidoc wasn't run in the
>> document directory.
>>
>> Documentation doesn't mention absolute being accepted, but I'll bet
>> there are lots of documents that depend on that :( so it isn't just as
>> simple as sticking an {indir={outdir}} on the front for non-datauri I
>> don't think.
>
> This would probably work:
>
> {eval:os.path.join(r"{indir={outdir}}",r"{imagesdir=}",r"{target}")}
>
> because if {imagesdir=} is absolute os.path.join() will override the
> preceding {indir={outdir}}
>
> But is will break documents out there that rely on this undocumented quirk?
>
> Cheers, Stuart
>
>
My suggestion will not work, you shouldn't use absolute paths in links
-- they won't be served by a Web server.
The problem comes down to the fact that the link is relative to the root
document and not the included file. There's no relative version of
{indir} (relative to {docdir}) so the only way I can see would be to
synthesize a relative path.
Instead of:
{imagesdir=}{imagesdir?/}{target}
use:
{imagesdir=}{imagesdir?/}{eval:os.path.relpath(r"{docdir={outdir}}",r"{indir={outdir}}")}/{target}
But it's not the complete answer because the relative path can only be
calculated if the the two locations lie on a common path.
I think the best solution would be to leave the current (incorrectly
documented and sub-optimal) behavior as it is and change the
documentation to reflect it.
Cheers, Stuart
>>
>> Cheers
>> Lex
>>
>>
>>
>> The :data-uri: directive is meant to embed media HTML5. So the
>> described behavior is just a side effect? Is it possible to control
>> how paths are interpreted by other means then :data-uri: ?
>>
>> If not, there should be a directive doing so.
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "asciidoc" group.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msg/asciidoc/-/uIpKdckPkwYJ.
>> To post to this group, send email to [email protected]
>> <mailto:[email protected]>.
>> To unsubscribe from this group, send email to
>> [email protected]
>> <mailto:asciidoc%[email protected]>.
>> For more options, visit this group at
>> http://groups.google.com/group/asciidoc?hl=en.
>>
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "asciidoc" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/asciidoc?hl=en.
--
You received this message because you are subscribed to the Google Groups
"asciidoc" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/asciidoc?hl=en.