-------------------------------------------------------------
BUGS
-------------------------------------------------------------

- the interrupt bounding box feature should still update the data bounding box.
  Otherwise, transformations may fail.

- to check: it *could* be possible that errorbars + stacked plots are
  incompatible.

+ the 'alias' and 'create on use' features may lead to errors. Check it!

+ variables which are used both globally and locally seem to fill TeX's save
  stack to due retained restores

+ I have introduced incompatiblities with the 'log identify minor ticks' option.
  Check how to solve that. Side conditions:
  	- compatibility with the modified log tick labels for small range
	- compatibility with extra ticks
	- compatibility with the manual

+ check whether 'clip limits' works properly if only one data point falls into
  the final region

+ add '-halt-on-error' to externalize command

+ handle rare case that auto limit computation leads to min > max (only possible
  for clip limits=false)

+ evaluate 'every axis plot' inside of \addplot command, even if that means a
  small inefficiency because it is evaluated in the \draw command as well.
  -> allows to get id, prefix, samples and other behaviorual options.
  -> attention: then, every axis plot would contain BOTH display and behavioral
  options; take care with key paths

+ \addplot plot[#1] does not use /pgfplots as search path
+ 'every axis plot' does not use /pgfplots as search path


+ implement partial limit specification, for example 'xmin=5' -> only compute
  'xmax'

+ check gnuplot on windows - there appear to be semicolon problems!?

+ again, the disabledatascaletrafo key does not seem to work correctly. Check it!

X active semicolons may be a problem

+ [ CF: for tikzlibraryexternal : use double quotes instead of single quotes in
  system calls -> win32 doesn't support single quotes ]

+ problem with context: even simple images do not work correctly. Why does the example work!?

+ table package: 'array' required for some examples -> document

+ handle 'nan' and +-inf in plots

- 'every axis plot post' is not reflected in legend (at least not properly)

+ plot function: incompatibility with 'german' package and "  catcodes

+ improve error recovery

+ grid lines and tick lines can obscure the axis lines, especially when used
  with different colors.
  -> draw axis lines on top of tick/grid lines!?
  Or more generally: change drawing sequence to
  	1. grid lines
	2. tick lines
	3. axis lines
	4. tick labels?

- extra ticks can be disabled by the tick special cases for axis lines (when two
  axis lines cross each other)

+ eliminate any public reference to the '\\'-lists. They are inconsistent with PGF.

+ use '{}' for sci  'e' style - looks better

+ the tick scale labels are inadequate.
   1. Formatting
   2. maybe they should be disabled at all!?

+ specifying axis limits for X should also limit those for Y (some sort of
  clipping)

- the text height of every axis x tick should be adjusted to allow tick scale
  labels on the same vertical alignment
  -> bug in pgf: text height does not properly respect to the current font!?

+ the new \pgfkeys framework:
  	+ I have re-implemented all options with \pgfkeys. 
	  this allows styles and mixing of TikZ/pgfplots options.
	+ BUG: if someone provides FULL keynames, the method WILL FAIL.
	+ the style= option fails.
	+ the 'x=' and 'y=' options fail.
	+ every option which exists in both, pgf and tikz, will fail!
	+ 'legend style' fails
	+ the 'legend style, grid style, x label style etc. options' test fails

+ axis limits of zero width are not fixed causing division by zero

+ ytick=\empty is broken again :-(

+ if a logplot has very small axis ranges, only ONE tick label will be placed.
  Thats not enough.
  In such a case, tick labels should be placed at MINOR TICKS [2-9]*10^i.
  BTW:
    if someone places tick marks at [1-9]*10^i, the minor ticks should NOT be
	disabled. 
	Instead, tick positions should be RECOGNISED AS MINOR TICKS (which is not
	that simple).

+ die legend[font=] variable ist doch dasselbe wie in dem tikzstyle zu legenden,
  oder? warum funktioniert es dann anders?

+ implementiere enlargelimits fuer log-achsen

+ markers werden rausgeclipped, wenn die achsen TIGHT sind.

+ man kann keine leeren listen an tick labels uebergeben!

+ width/height produziert NICHT die gewuenschte breite.
  Man sollte ne zusatzoption haben, die die labels grundsaetzlich NICHT
  beruecksichtigt.

X Fix the scaling estimations.
  Problem: I don't know sizes of labels, legends, titles and tick labels.
  Idea: 
  	-Create a temporary picture
		\hbox{%
			\begin{tikzpicture}[xshift=...,yshift=...] % skaliere auf (0,0)--(1,1)
			\draw (0,0) rectangle (1,1)
			plaziere labels + legende + vllt. ein tick auf jede achse (?)
			\end{tikzpicture}
		}%
	- measure and remember its size
	- throw it away
	-> 9.2.2008:
	 ATTEMPT FAILED.
	 Reasons:
	 	1. it is not possible to place a tikzpicture into a tikzpicture.
		   And it can't be because Tikz updates bounding box parameters GLOBALLY.
		2. I could use a combination of 
			- scope,
			- the 'current bounding box' node,
			- \pgfpointanchor{current bounding box}{ anchor name },
			- drawing commands for labels,legend etc.
		   Effect: bounding box is determined correctly. BUT:
		   	- bounding box of real picture may be affected,
			- every output is drawn because nodes can't be 'thrown away'.
			  At least I do not know how.


+ enlargelimits muss RELATIV nicht ABSOLUT gemacht werden.

+ es gibt einen fehler in der achsen skalierung, wenn 
  man sehr grosse limits hat (normale achsen)

+ default ticks muessen besser an achsenlimits angepasst werden
   -> bei sehr grossen oder sehr kleinen limits schlaegt die derzeitige
   einschraenkung der step sizes fehl

+ addplot plot coordinates { (235 , 43252) }
  								 ^
  funzt nicht wegen dem leerzeichen vor dem komma

X verschiebung des ylabels ist komisch, wegen der rotate option


-------------------------------------------------------------
FEATURES
-------------------------------------------------------------

- it would be interesting to get an high-level coordinate mapping
  	X : K -> \R
  X(k) \in \R is the x-coordinate.
  Idea: K can be any type of input, for example
  	- time,
	- date,
	- strings,
	- ...
  and K maps this transparently to numbers. Then: *all* input is given in K, and
  all output (tick labels) are given in K as well (requires X^{-1}).
  -> that's not difficult.


+ styles are named very unintuitively. I should add something more convenient
  (for example like the 'legend style={}' command). Idea: use the *same* name
  as the options which are affected,
  'xlabel style'  'title style' etc. My current naming scheme used the name of
  the 'every style' which suffer from backwards compatibility with xkeyval...
  :-(   

- maybe it is possible to eliminate a lot of key macros to save string space?
  Those family macros can be optimized (sure ?).

- provide access to axis limits and data bounding box.

- It would be useful to get access to axis coordinates, for example in 'circle (XXX)'

- axis equal option

- consider 'plot image[xmin=,xmax=,ymin=,ymax=] {<graphics>};
  -> load external plot image!? Only useful for matlab, if matlab would allow 100% 
  control over bounding box. Unfortunately, it doesn't.

- allow extended <col name> arguments inside of create column

+ is it possible to create a *real* linked list? It should have the following
  features:
  1. O(1) push/pop operations
  2. O(N) copy()
  3. O(N) convert to macro list
  4. O(N) traversal/loop

+ introduce \label and \ref for legend entries?

+ optimize tikz-interface

+ optimize macro-append issue from O(N^2) time to O(N)

+ create a \pgfmathfloattosci method and use that for the numerics in table package

X re-implement 'dec sep align' of table package natively, not as high-level
  style.
+ It is not (easily) possible to replace single entries of tables with '-'.
  (for example: gradient columns)

+ create a \pgfmathfloattosci method and use that for the numerics in table package

- check whether the new floating point routines can be used to 
  REALLY setup a linear map DATA RANGE -> DISPLAY RANGE
  Technical thing: map the CLIPPED data range or the TOTAL data range? 
  What advantages/disadvantes appear?

- [Tikz] document how to use internal registers can be used in libraries.

+ [Tikz] add an 'every plot mark' option and adjust 'mark options' accordingly

+ document the 'external' library of tikz (CVS only).

+ group 'All supported styles' section by content


+ allow arrow heads or other axis line styles
	+ styles for axis lines are missing
	+ for outer axis lines: introduce option 'separate axis line paths'
	   if one wants to use arrow heads

+ set default styles for non-boxed axis labels
	+ label positions for centered axis lines
	+ tick scale labels
	+ tick align versus label positions
	+ think about axis label placement. Possibilities:
	  	- on the same side as tick labels.
		  -> should be move away in normal direction
		  -> should avoid problems with tick scale labels
		- opposite of tick labels
- perhaps math style {grid=major, axis x line=middle, axis y line=center, tick
  align=outside}


+ the table package could use some sort of multicolumn feature which
  allows something like 'columns={A,B,A,B,A,B}' and distributes entries of input
  columns A and B equally to output columns.

+ TDS directory structure is not completely correct. Should be everything under
  directory 'pgfplots':
	$package = "pgfplots";
	&SYSTEM ("$MV README ext_scripts test doc/generic/$package/");
	&SYSTEM ("$MV generic tex/generic/$package/");
	&SYSTEM ("$MV context latex plain tex/");
  and context files should be in
  	tex/context/third/pgfplots/...
	doc/context/third/pgfplots/...
  (reference: mail conversation with Karl Berry)


+ automatic disabling of enlargelimits when axis lines are not drawn as a box

+ copy my personal' homepages short images to pgfplots website

- interrupt single plots at discontinuities (for example tan(x))
  -> don't draw from +infty to -infty

- optimize plot expression

+ optimize tick generation code for speed

+ alias 'axis x line=middle' and 'axis x line=center'

+ an option which contains legend ENTRIES?

+ the non-boxed axis lines are placed at 'ZERO'. Maybe this zero level should
  get an anchor!? -> allows to place axis labels above it

- default style for axis lines to: {thin, black!25} ?


X implement an axis as path-command

+ implement proper anchors 

+ provide simple options for useful bounding box truncations


+ Maybe I could perform a restore of the current bounding box at the END of an
  axis. Restore means: restore to the setting BEFORE the axis.

+ I could create a node which can be referenced and which has the axis' size 
  [ That touches another open problem, see below]

+ I could use the new 'local bounding box' option of PGF to restrict the
  bounding box to the axis' size

+ I also need some sort of number style for log-tick-labels.

+ move math mode shifts into \prettyprintnumber implementation.

+ allow the '-plot' commands.
  It would be a cool feature if '(FIRST_X,0)' could be inserted as move-to
  operation before every plot.
  -> one could make funny features with 'fill' in plot styles.

- make the legend code more general: allow
   \addformattedlegendentry{ \node{hallo} \nextcell \node{foo} \nextcell #1}
   where #1 is the auto-generated small plot-spec image. One could also provide
   '#2' as just the current plot spec OPTIONS.



+ document 'legend plot pos' option

+ there are some clipping paths in the tick-placement loop which can be
  replacement with simple \ifdim's. 
  I guess clipping is not the cheapest operation.


- remember unfiltered (non-logarithmized) input ticks with \listnew and provide
  them like '\tick' during ticklabel typesetting
 

+ improve tick placement (more) systematically

+ provide auto tick labels at 5*i if appropriate

+ implement the legend as tikz-matrix
  -> width computation works correctly (there is a bug with font scaling)

+ provide tick labels as a list like
  	axis[tick labels={A,B,1,4,5,$\frac 12$}]
	-> convert to \listnew, use listpopfront to access elements


+ provide options for log plot tick formatting:
  	10^0.703 vs fixed point format

+ I could provide a global coordinate transformation 

+ I could try to use the plot-stream framework of PGF directly instead of using
  the 'plot coordinates' command of tikz. 
  Advantage: would be faster. And the additional features can't be used anyway
  because of my own number parsing routines...

+ rename manual.pdf to pgfplots.pdf -> allows texdoc pgfplots


+ alignment: vertikal kann ich jetzt mit baseline. Kann ich horizontales
  alignment an (0,0) hinbekommen?

+ axis hide option ? macht das sinn?

+ legende anders formatierbar?
  	- ausserhalb des (und isoliert von dem) plots?
	+ horizontal?

+ grid lines
  	+ minor
	+ major
  -> einfach als verlaengerung der kleinen tick lines
 
- es gibt scheinbar in PDF viewern die moeglichkeit, fuer den Druck ein anderes
  dokument/dokumentteile zu verwenden als fuers Bildschirmbetrachten
  (draft-package bspw?).
  Kann man das nutzen, um sowohl farbige als auch S/W-plots zu generieren?
  -> pruefe draftcopy paket


+ koennte man den kram auch aus (grossen) tabellen rauslesen? Also sowas wie
  "plot X versus Y aus file Z"?
-> DEBUG!
  Ideen:
  	+ abstrakte datenstruktur als liste von spalten, eine spalte ist ne liste
	  von nummern
	+ einlesen: 
	  	+ zeilenweise, haengt an die jeweiligen spalten mit \listpushback
		  coordinaten dran
		+ read first line as header (optionally my $flags line for column
		  formatting advice)
		+ read just strings, no parsing
		- optimal: '\t' as separator. How can I teach TeX to use '\t' as
		  separator!?
	- would allow
	+  	\addplot plot table[x=X,y=Z] {\table}
	  and
	-  	\typesettable[columns=...,format=sci,...,formatting options=...] {\table}
	+ implementation: simple run through column lists
	-> CONSISTENT data representation, powerful display options



+ man sollte \addplot mit '+[OPTIONEN]' starten koennen.

+ ich sollte das enlargelimits deaktivierbar machen! vllt. auch ne option 'tight'

+ automatisches tick-platzieren koennte verbessert werden
  	-> insbesondere fuer normale plots

+ fehlerbars waeren nett


+ baseline option, die die linke unter ecke als '(0,0)' koordinate annimmt.
  Wuerde generell sinn machen, oder?

+ ich haette sehr gerne ein Skript, dass zu jeder figure ein eps und/oder pdf
  macht, dass dann bitte schoen ordentlich includiert wird.
  -> see tikzexternal june 2008


+ passe bounding box und x/y-skalierung "sinnvoll" an.
  +	mache ne option "width=" die die GESAMTbreite angibt.
  + mache "height" option
  + belege width und height defaultmaessig sinnvoll
  + ueberlege ein sinnvolles gesamt-skalierungs-konzept.
	Das, was ich jetzt gebaut habe, mit 'x=SCALE' und/oder 'y=SCALE'
	ist nicht ausgereift und eher verwirrend. sowas macht man wohl besser mit
	pgf-skalierungen!
	+ 	Die 'x=' und 'y=' optionen sollten direkt in setxvec reingeschrieben werden,
		ohne schwachfug mit skalierung!
	+ 	wenn ich 'width=BLA' angebe, wird automatisch 'y=1cm' angenommen. Das
		ist unintuitiv; man erwartet eher, dass defaultheight im aspect ratio
		mitskaliert wird.
	+	Nur mit der 'x=' bzw. 'y=' option sollte es NACH AUSSEN moeglich sein,
		direkt einfluss auf die koordinaten zu nehmen.

+ entscheide automatisch, ob der abstand zwischen ticks an die skalierung
  angepasst werden sollte.

+ [xy]min = auto
  -> berechne die werte numerisch
  Ideen:
  + verzoegere das malen der Achse bis \end{axis}
  + in jedem \addplot:
    ich koennte irgendwie pruefen, ob ich 'plot coordinates' habe.
	Sobald ich diesen modus erkannt hab, kann ich koordinate fuer koordinate
	parsen und jeweils min/max bilden.
  + ich muesste dann noch den befehl in einem makro konserieren, sodass er
	 spaeter, nach dem verzoegerten achsen malen kommt.

  OFFEN: was passiert, wenn NICHT plot coordinates benutzt wird? Vllt. die
  'domain' variable abfragen?
  -> jedenfalls koennte ich mir da durchaus was ueberlegen!

+ [xy]tick = auto
  in abhaengigkeit von [xy]mode: zeige ticks von floor(xmin)...ceil(xmax)

+ mache styles:
  + every plot
  + every axis (?)

+ gebe eine liste von verfuegbaren linestyles an, durch die mit jedem
  plot-befehl durchgecykled werden kann

+ option, minor ticks ein/auszuschalten

+ option, die X/Y-Achsen anders zu formatieren. Moeglichkeiten:
  + Kasten drumrum
  + je eine Linie mit Pfeil am Ende
  + Achse nach rechts oder so

+ aendere die das \addplot makro derart, dass beliebige plot-moeglichkeiten
  folgen koennen
  \addplot[OPTIONS] plot coordinates {...};
  -> das \addplot ersetzt gewissermaßen das \draw

