From: Sanjoy Mahajan <sanjoy@mrao.cam.ac.uk>
Subject: figure directory is sort of searched
Date: Mon, 14 Aug 2006 23:50:21 -0400 [thread overview]
Message-ID: <E1GCpwb-0006Vv-DO@approximate.corpus.cam.ac.uk> (raw)
[-- Attachment #1: Type: text/plain, Size: 2940 bytes --]
I still can't figure this problem one out, from a few months ago, and it
happens with a recent ConTeXt (2006.08.08 21:51). The figure searching
code gets confused if a file of the same basename (but in a different
directory) has already been loaded. Here is a minimal min.tex to show
what I mean:
\starttext
\setupexternalfigures[directory={1}]
\placefigure[here][ch1fig]{should be 1/fig-1.pdf}{\externalfigure[fig-1.pdf]}
\setupexternalfigures[directory={2}]
\placefigure[here][ch2fig1]{should be 2/fig-1.pdf}{\externalfigure[fig-1.pdf]}
\placefigure[here][ch2fig2]{should be 2/fig-2.pdf}{\externalfigure[fig-2.pdf]}
\stoptext
Probably it's a silly idea to use \setupexternalfigures within the body,
but the same problem happens when using components (where each
component's preamble has a similar line), where it makes more sense.
Here is the directory structure, and all the files are attached as a
small (15KB) .tgz:
min.tex
1/fig-1.pdf
2/fig-1.pdf
2/fig-2.pdf
The final (third) figure is correctly found as 2/fig-2.pdf. But the
second figure is reused from 1/fig-1.pdf because another fig-1.pdf has
already been found: as 1/fig-1.pdf. Here is the relevant bit from the
texexec output:
<./1/fig-1.pdf>
figures : dimensions of 1/fig-1.pdf loaded from figurefile itself
(./min.tuo) (/home/sanjoy/texmf/tex/context/base/pdfr-ec.tex)
floatblocks : 1 placed
figures : figureobject fig-1.pdf is reused
floatblocks : 2 placed
<./2/fig-2.pdf>
figures : dimensions of 2/fig-2.pdf loaded from figurefile itself
floatblocks : 3 placed
One part of ConTeXt does know the right figure path. A
\getfiguredimensions[fig-1.pdf] after the second \placefigure will
trigger a kpathsea search for 2/fig-1.pdf, which it finds. But it still
loads 1/fig-1.pdf, which is why I've said 'sort of searched' in the
subject line.
It seems that the decision about whether a figure is already loaded is
made in core-fig.tex, in
\def\calculateexternalfigure[#1][#2][#3][#4][#5][#6]%
...
\ifcase\figurestatus
\let\@@efframe\v!on
\let\@@efobject\v!no
\showmessage\m!figures1\@@effilename
\or
\showmessage\m!figures2\@@effullname
\or
\showmessage\m!figures3{\@@effullname,\@@eflenttype}%
\or
\showmessage\m!figures4\@@effullname
\or
\showmessage\m!figures5{\@@effullname,\@@efloadname}%
\or % no message
\doifnot\@@efsymbol\v!yes{\showmessage\m!figures8\@@effullname}%
\fi
...
The "no message" comment suggests that when \figurestatus isn't set,
the message shown is figures8, which is
8: figureobject -- is reused
But I couldn't figure out who sets \figurestatus and where the judgement
of 'already loaded' is made. The comment at the beginning of the above
\def ("this whole mess needs a clean up anyway") scared me off :-)
-Sanjoy
`A society of sheep must in time beget a government of wolves.'
- Bertrand de Jouvenal
[-- Attachment #2: example files --]
[-- Type: application/octet-stream, Size: 15220 bytes --]
[-- Attachment #3: Type: text/plain, Size: 139 bytes --]
_______________________________________________
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context
next reply other threads:[~2006-08-15 3:50 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-15 3:50 Sanjoy Mahajan [this message]
2006-08-15 8:20 ` Taco Hoekwater
2006-08-15 17:38 ` Sanjoy Mahajan
2006-08-16 17:02 ` Mojca Miklavec
-- strict thread matches above, loose matches on Subject: below --
2006-05-20 5:07 Sanjoy Mahajan
2006-05-23 17:21 ` Sanjoy Mahajan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E1GCpwb-0006Vv-DO@approximate.corpus.cam.ac.uk \
--to=sanjoy@mrao.cam.ac.uk \
--cc=ntg-context@ntg.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).