On Wed, Jul 22, 2009 at 03:08, Aditya Mahajan wrote:
CCed to ConTeXt mailing list.
(And removed the pgf mailing list? :)
On Tue, 21 Jul 2009, Mojca Miklavec wrote to pgf.user list:
Hello,
I noticed that a large number of \begin{tikzpicture} \draw (0,0) -- (5,1); \end{tikzpicture} breaks at line end while \starttikzpicture \draw (0,0) -- (5,1); \stoptikzpicture just generates an infinitely long line.
Is there any simple way to fix the behaviour in ConTeXt?
Don't know.
I have just noticed that (independent of the second issue) when placing several items of: 1.) \tikz \draw (0,0)--(4,2); works OK in both LaTeX and ConTeXt 2.) \begin{tikzpicture} \draw (0,0)--(4,2); \end{tikzpicture} works OK in LaTeX 3.) \starttikzpicture \draw (0,0)--(4,2); \stoptikzpicture{} works OK in ConTeXt 4.) \starttikzpicture \draw (0,0)--(4,2); \stoptikzpicture creates an infinitely long line in ConTeXt Does that ring a bell to anyone? (It must be something trivial like eating any spaces after \commandsequence, but I don't know what exactly.)
I also don't like the behaviour in \placefigure{title}{\starttikzpicture ... \stoptikzpicture} that has to be surrounded with \hbox{\starttikzpicture ... \stoptikzpicture} else the figure gets placed at the beginning of line instead of being centered.
This is what is happening. The pgf code basically boils down to this.
\starttext \newbox\pgfpic
\setbox\pgfpic\hbox to 10pt\bgroup abc \egroup
\placefigure {testing box placement} {\leavevmode\raise-2pt\box\pgfpic}
\stoptext
Now since \placefigure internally places its contents in a \vbox, this boils down to a differnce beween
\hbox to \textwidth {\hss \vbox{\hbox{abc}} \hss}
\hbox to \textwidth {\hss \vbox{\leavevmode\raise-2pt \hbox{abc}} \hss}
So, the solution is to either patch \placefigure so that
\def\setlocalfloatdimensions#1% {... \global\setbox\floatbox\hbox% was \vbox ....}
or redefine \pgfsys@typesetpicturebox to
\def\pgfsys@typesetpicturebox#1{% .... \hbox{\leavevmode\raise-\pgf@x\box#1}%\hbox added }
The redefinition at ConTeXt will break some existing documents (i.e., the authors will have to manually add a \vbox where there was none earlier). The redefinition at tikz end will make all pgf code run slightly slower (an extra hbox for each typeset pgfpicture)
If neither of these is acceptable, then we can have a simple wrapper around \start-stop tikzpicture:
\def\startTIKZcode{\hbox\bgroup\starttikzpicture} \def\stopTIKZcode {\stoptikzpicture\egroup}
which will only affect ConTeXt code.
Would it affect anyone if TikZ would generate an hbox instead of vbox (at least in ConTeXt)? That means ... instead of \let\starttikzpicture=\tikzpicture \let\stoptikzpicture=\endtikzpicture having \def\starttikzpicture{\hbox\bgroup\tikzpicture} \def\stoptikzpicture{\endtikzpicture\egroup} (I admit that I don't understand all the tiny bits, for example when one would prefer to have vbox, so I might be missing the whole picture.) Mojca