summaryrefslogtreecommitdiff
path: root/Build
diff options
context:
space:
mode:
Diffstat (limited to 'Build')
-rw-r--r--Build/source/utils/README4
-rw-r--r--Build/source/utils/asymptote/doc/FAQ/asy-faq.info1670
2 files changed, 1672 insertions, 2 deletions
diff --git a/Build/source/utils/README b/Build/source/utils/README
index 5576c9d455f..979efb6f700 100644
--- a/Build/source/utils/README
+++ b/Build/source/utils/README
@@ -6,8 +6,8 @@ Extra utilities we (optionally) compile for TeX Live.
See comments in ../texk/README.
asymptote 1.75 - checked 4jun09
- http://superb-east.dl.sourceforge.net/sourceforge/asymptote/asymptote-1.73.src.tgz
- configure --disable-gc # if gc make check fails
+ http://superb-east.dl.sourceforge.net/sourceforge/asymptote/asymptote-1.75.src.tgz
+ configure --enable-tetex-build --disable-gc # if gc make check fails
make CFLAGS="-g -DBROKEN_COMPILER" if redefinition of solvedKnot3.
dialog 1.1-20080819 - checked 20mar09
diff --git a/Build/source/utils/asymptote/doc/FAQ/asy-faq.info b/Build/source/utils/asymptote/doc/FAQ/asy-faq.info
new file mode 100644
index 00000000000..5d56d06d3c5
--- /dev/null
+++ b/Build/source/utils/asymptote/doc/FAQ/asy-faq.info
@@ -0,0 +1,1670 @@
+Info file: asy-faq.info, -*-Text-*-
+produced by bfnnconv.pl from the Bizarre Format With No Name.
+
+START-INFO-DIR-ENTRY
+* asymptote FAQ: (asy-faq). Asymptote Frequently Asked Questions.
+END-INFO-DIR-ENTRY
+
+
+File: $prefix.info, Node: Top, Next: Question 1.1, Up: (dir)
+
+ ASYMPTOTE FREQUENTLY ASKED QUESTIONS
+ 01 Jun 2009
+
+This is the list of Frequently Asked Questions about Asymptote (asy).
+
+Index
+
+* Menu:
+* Section 1:: About Asymptote
+* Section 2:: Questions about installation and setup
+* Section 3:: Questions about paths
+* Section 4:: Questions about labels
+* Section 5:: Questions about arrows
+* Section 6:: Questions about 2D graphs
+* Section 7:: Questions about programming
+* Section 8:: Questions about differences between Asymptote and
+ MetaPost
+* Section 9:: Questions about output
+
+Section 1, About Asymptote
+* Question 1.1:: What is Asymptote?
+* Question 1.2:: How do I obtain Asymptote?
+* Question 1.3:: Where can I ask questions about Asymptote?
+* Question 1.4:: Why was the name Asymptote chosen?
+* Question 1.5:: In the internal Asymptote source code, what does the
+ name camp refer to?
+
+Section 2, Questions about installation and setup
+* Question 2.1:: Is it possible to install Asymptote on Mac OS X?
+* Question 2.2:: Why do I get the error Bad CPU type in executable on
+ installing Asymptote from the MAC OS binary?
+* Question 2.3:: What do I do if I get the error: Error: pdfetex (file
+ pdftex.cfg): cannot open config file...texinfo.tex
+ appears to be broken?
+* Question 2.4:: What do I do if I get the error: ! Undefined control
+ sequence. l.6 @copying?
+* Question 2.5:: Is it possible to integrate Asymptote into LaTeX?
+* Question 2.6:: Is it possible to integrate Asymptote into latex or
+ pdflatex?
+* Question 2.7:: Do I need the tkinter package to install an Asymptote
+ rpm binary?
+* Question 2.8:: What does the path %USERPROFILE%\.asy\config.asy mean?
+* Question 2.9:: Why do I get the error "string not terminated" when I
+ try to set settings.dir="C:\asymptote\";?
+* Question 2.10:: How do I change environment variables in Microsoft
+ Windows, for example, in order to change the default
+ PostScript viewer?
+* Question 2.11:: Under Microsoft Windows XP, why do I get an error like
+ "Invalid Parameter - 432x432"?
+* Question 2.12:: Why does Asymptote freeze upon trying to draw a label
+ with my MikTex installation under Microsoft Windows?
+
+Section 3, Questions about paths
+* Question 3.1:: Why do I get a syntax error message when I specify an
+ integer value for the path tension?
+* Question 3.2:: Shouldn't dots always be the same size?
+
+Section 4, Questions about labels
+* Question 4.1:: How do I get Greek letters like omega to show up in my
+ labels?
+* Question 4.2:: Can Asymptote use matrices as labels?
+* Question 4.3:: How do I tell Asymptote to load a particular LaTeX
+ package, like mathptmx?
+* Question 4.4:: How can I use international fonts in Asymptote labels?
+* Question 4.5:: How can I use Fourier fonts?
+* Question 4.6:: Is there any way to change the default appearance of
+ the decimal separator, using a comma instead of a dot?
+* Question 4.7:: How can I get a rotated label with the filled box
+ rotated as well so that it fits the text?
+* Question 4.8:: How can I rotate labels in a 3D figure?
+* Question 4.9:: How can I draw some squares and circles of a fixed
+ size and put a label in the middle of them?
+* Question 4.10:: The binary operator * can be used to scale the color
+ of a pen by a real number. Does this scaling factor
+ have to be less than 1?
+* Question 4.11:: Why is the space after the comma decimal separator in
+ my locale so large?
+* Question 4.12:: How can I prevent
+ texpreamble("\usepackage[pdftex]{hyperref}") from
+ changing the page size?
+
+Section 5, Questions about arrows
+* Question 5.1:: How do I draw two arrows at arbitrary positions along
+ a path?
+* Question 5.2:: How do I reverse the direction of an arrowhead?
+* Question 5.3:: How do I change the size of all arrows?
+* Question 5.4:: Can I create other arrowhead styles?
+
+Section 6, Questions about 2D graphs
+* Question 6.1:: How can I draw x axis ticks on the right side, with
+ the tick labels on the left side (relative to the axis
+ path)?
+* Question 6.2:: How can I reposition the x axis label to
+ three-quarters along the axis length?
+* Question 6.3:: How can I move the x axis label down 10bp?
+* Question 6.4:: Can I use different pens for the axis, the axis label,
+ and the tick labels?
+* Question 6.5:: How can I change the font type of the axes label?
+* Question 6.6:: How can I change the font type of the tick labels on
+ an axis?
+* Question 6.7:: How can I prevent axes tick labels from rendering on
+ top of each other?
+* Question 6.8:: How do I make the plot region of a graph, ignoring
+ labels and legends, have a fixed size?
+* Question 6.9:: How can I plot a function f(x) within [0,1]x[0,2]
+ without explicitly calculating the x values for which
+ f(x) hits the boundary?
+* Question 6.10:: Is it possible to define customized palettes?
+* Question 6.11:: Is there an easy way to graph factorial functions
+ nicely?
+* Question 6.12:: How do I indicate that a certain length should be
+ exactly the size I prescribe with no rescaling, within
+ a picture which has its own size?
+* Question 6.13:: How can I make the y axis display base-2 logarithmic
+ values?
+* Question 6.14:: How can I align the x axes of two graphs on the same
+ figure?
+* Question 6.15:: How can I change the direction of the y-axis, such
+ that negatives values are on the upper y-axis?
+* Question 6.16:: How can I fill a path with a function that defines the
+ color of each location?
+* Question 6.17:: Is there a way to draw a function that is not
+ explicitly given, such as (y - 2)^2 = x - 1 ?
+* Question 6.18:: Is it possible to reverse or stretch an axis?
+* Question 6.19:: Why can't I use the UnFill option to draw graphs with
+ empty markers?
+* Question 6.20:: How can I force several images to use the same palette
+ range (e.g. the entire 0-255 grayscale range)?
+
+Section 7, Questions about programming
+* Question 7.1:: Is Asymptote an interpreter or a compiler?
+* Question 7.2:: What is the difference between a frame and a picture?
+* Question 7.3:: What is the difference between a path and a guide?
+* Question 7.4:: What is a convenient way to declare and initialize an
+ array of pictures?
+* Question 7.5:: Is there a way to define functions that act on arrays
+ in general (i.e. work for arrays of any type)?
+* Question 7.6:: Is there any way to declare structures ahead of their
+ definition, e.g. where struct A performs some
+ operation on struct B, but B contains an A member?
+* Question 7.7:: Where are static variables in for loops allocated?
+* Question 7.8:: Is there a debugger for asy?
+* Question 7.9:: Do you accept patches for Asymptote?
+
+Section 8, Questions about differences between Asymptote and
+ MetaPost
+* Question 8.1:: What is the equivalent of the MetaPost c[a,b]
+ interpolation operator?
+* Question 8.2:: How does picture scaling differ in Asymptote and
+ MetaPost?
+* Question 8.3:: How can I avoid automatic scaling of a picture?
+* Question 8.4:: What is the equivalent of MetaPost ... command?
+* Question 8.5:: What is the equivalent of the MetaPost pickup command?
+* Question 8.6:: What is the equivalent of the MetaPost whatever
+ command?
+* Question 8.7:: What is the equivalent for the MetaPost command for
+ lray - horiz*v - verti*u = whatever*(LightSource - R),
+ a system of three linear equations for three unknowns:
+ horiz, verti, whatever?
+* Question 8.8:: In MetaPost, it is possible to have a drawing remain
+ the same size in different pictures by defining a unit
+ u and explicitly multiply all the coordinates by u. Is
+ there a better way to do this in Asymptote?
+* Question 8.9:: In MetaPost, one could produce tiling pictures by
+ generating a picture, and then clipping the picture to
+ a rectangle of fixed dimensions around the center of
+ the picture. How is that done in Asymptote?
+
+Section 9, Questions about output
+* Question 9.1:: How can I disable automatic invocation of the PS
+ viewer after an asy file is done processing?
+* Question 9.2:: How do I output jpeg images?
+* Question 9.3:: Can I embed bitmaps (photos) into my drawings and
+ position and scale them?
+* Question 9.4:: Does Asymptote support direct PDF output?
+* Question 9.5:: How to I produce large pictures of high quality in
+ raster format (e.g. png, giff etc).
+* Question 9.6:: Is it possible to produce multi-page documents with
+ asymptote?
+
+
+
+File: asy-faq.info, Node: Section 1, Next: Section 2, Previous: Top, Up: Top
+
+About Asymptote
+
+* Menu:
+* Question 1.1:: What is Asymptote?
+* Question 1.2:: How do I obtain Asymptote?
+* Question 1.3:: Where can I ask questions about Asymptote?
+* Question 1.4:: Why was the name Asymptote chosen?
+* Question 1.5:: In the internal Asymptote source code, what does the
+ name camp refer to?
+
+
+
+File: asy-faq.info, Node: Question 1.1, Next: Question 1.2, Previous: Top, Up: Section 1
+
+Question 1.1. What is Asymptote?
+
+Asymptote is a vector graphics language designed for technical graphics,
+inspired by MetaPost but with IEEE floating-point numerics, native
+three-dimensional graphics, Grayscale/RGB/CMYK colourspaces, and a
+C++-like syntax. Unlike MetaPost, it natively supports multiple-segment
+paths (and hence regions other than simply connected ones), tiling
+patterns, Gouraud shading, tensor patch shading, and PostScript images.
+
+
+File: asy-faq.info, Node: Question 1.2, Next: Question 1.3, Previous: Question 1.1, Up: Section 1
+
+Question 1.2. How do I obtain Asymptote?
+
+Binary releases are available for Linux, MacOS X, and Microsoft Windows
+platforms, in addition to full source code, from the website
+http://asymptote.sourceforge.net/. Many Linux distributions (such as
+RedHat and Debian) now include an Asymptote package (check your
+distribution's documentation for further information about this).
+
+
+File: asy-faq.info, Node: Question 1.3, Next: Question 1.4, Previous: Question 1.2, Up: Section 1
+
+Question 1.3. Where can I ask questions about Asymptote?
+
+If you have a question, please try to find an answer in this FAQ, in the
+extensive Asymptote documentation at
+http://asymptote.sourceforge.net/doc/, or search the forum:
+http://sourceforge.net/forum/forum.php?forum_id=409349.
+
+
+File: asy-faq.info, Node: Question 1.4, Next: Question 1.5, Previous: Question 1.3, Up: Section 1
+
+Question 1.4. Why was the name Asymptote chosen?
+
+Well, it isn't the perfect graphics package, but we do think it is getting
+there asymptotically...
+
+
+File: asy-faq.info, Node: Question 1.5, Next: Question 2.1, Previous: Question 1.4, Up: Section 1
+
+Question 1.5. In the internal Asymptote source code, what does the name camp refer to?
+
+That was our original tentative name for this project, which stood for
+"C's Answer to MetaPost" (the language that inspired Asymptote). However,
+we eventually decided that the name Asymptote better emphasizes the
+mathematical and graphical nature of this language.
+
+
+File: asy-faq.info, Node: Section 2, Next: Section 3, Previous: Section 1, Up: Top
+
+Questions about installation and setup
+
+* Menu:
+* Question 2.1:: Is it possible to install Asymptote on Mac OS X?
+* Question 2.2:: Why do I get the error Bad CPU type in executable on
+ installing Asymptote from the MAC OS binary?
+* Question 2.3:: What do I do if I get the error: Error: pdfetex (file
+ pdftex.cfg): cannot open config file...texinfo.tex
+ appears to be broken?
+* Question 2.4:: What do I do if I get the error: ! Undefined control
+ sequence. l.6 @copying?
+* Question 2.5:: Is it possible to integrate Asymptote into LaTeX?
+* Question 2.6:: Is it possible to integrate Asymptote into latex or
+ pdflatex?
+* Question 2.7:: Do I need the tkinter package to install an Asymptote
+ rpm binary?
+* Question 2.8:: What does the path %USERPROFILE%\.asy\config.asy mean?
+* Question 2.9:: Why do I get the error "string not terminated" when I
+ try to set settings.dir="C:\asymptote\";?
+* Question 2.10:: How do I change environment variables in Microsoft
+ Windows, for example, in order to change the default
+ PostScript viewer?
+* Question 2.11:: Under Microsoft Windows XP, why do I get an error like
+ "Invalid Parameter - 432x432"?
+* Question 2.12:: Why does Asymptote freeze upon trying to draw a label
+ with my MikTex installation under Microsoft Windows?
+
+
+
+File: asy-faq.info, Node: Question 2.1, Next: Question 2.2, Previous: Question 1.5, Up: Section 2
+
+Question 2.1. Is it possible to install Asymptote on Mac OS X?
+
+It is easy to compile Asymptote directly from the source code at
+http://sourceforge.net/project/showfiles.php?group_id=120000 We recommend
+first upgrading to the latest GNU readline library, unless you don't care
+about interactive readline support (in which case configure will
+automatically detect and disable obsolete versions of the readline
+library). Marius Schamschula also maintains a binary package for various
+MacOS X platforms
+http://www.hmug.org/pub/MacOS_X/X/Applications/Publishing/asymptote.
+
+
+File: asy-faq.info, Node: Question 2.2, Next: Question 2.3, Previous: Question 2.1, Up: Section 2
+
+Question 2.2. Why do I get the error Bad CPU type in executable on installing Asymptote from the MAC OS binary?
+
+This means either that you have a binary distribution for another MAC
+architecture, or (according to Marius Schamschula) that you may have a
+missing library. The simplest solution is to compile Asymptote directly
+from the official source:
+http://sourceforge.net/project/showfiles.php?group_id=120000.
+
+
+File: asy-faq.info, Node: Question 2.3, Next: Question 2.4, Previous: Question 2.2, Up: Section 2
+
+Question 2.3. What do I do if I get the error: Error: pdfetex (file pdftex.cfg): cannot open config file...texinfo.tex appears to be broken?
+
+Simply put http://asymptote.sourceforge.net/asymptote.pdf in the directory
+doc and repeat the command make all. Or, if you don't want to build a
+local copy of the documentation, simply proceed with make install-asy.
+
+
+File: asy-faq.info, Node: Question 2.4, Next: Question 2.5, Previous: Question 2.3, Up: Section 2
+
+Question 2.4. What do I do if I get the error: ! Undefined control sequence. l.6 @copying?
+
+Either upgrade your texinfo package or follow one of the easy work arounds
+in *Note Question 2.3:: `What do I do if I get the error: Error: pdfetex
+(file pdftex.cfg): cannot open config file...texinfo.tex appears to be
+broken?'.
+
+
+File: asy-faq.info, Node: Question 2.5, Next: Question 2.6, Previous: Question 2.4, Up: Section 2
+
+Question 2.5. Is it possible to integrate Asymptote into LaTeX?
+
+Yes, see the example latexusage.tex. Dario Teixeira has also written a
+detailed guide on the topic. You can download it from
+http://dario.dse.nl/projects/asylatex/.
+
+Philippe Ivaldi has contributed an Asymptote mode for Emacs users
+http://asymptote.sourceforge.net/doc/Editing-modes.html, which includes a
+lasy-mode that allows one to compile and view the output of one
+\begin{asy}...\end{asy} section at a time.
+
+
+File: asy-faq.info, Node: Question 2.6, Next: Question 2.7, Previous: Question 2.5, Up: Section 2
+
+Question 2.6. Is it possible to integrate Asymptote into latex or pdflatex?
+
+Yes, as of version 1.14, Asymptote supports latex and pdflatex (both in
+EPS/PDF and inline mode), as illustrated by the example latexusage.tex:
+
+pdflatex latexusage
+asy latexusage
+pdflatex latexusage
+
+File: asy-faq.info, Node: Question 2.7, Next: Question 2.8, Previous: Question 2.6, Up: Section 2
+
+Question 2.7. Do I need the tkinter package to install an Asymptote rpm binary?
+
+No, you don't need tkinter unless you want to try out the GUI xasy. Try
+
+rpm -Uvh --nodeps asymptote-x.xx-1.i386.rpm
+where x.xx represents the version number.
+
+
+File: asy-faq.info, Node: Question 2.8, Next: Question 2.9, Previous: Question 2.7, Up: Section 2
+
+Question 2.8. What does the path %USERPROFILE%\.asy\config.asy mean?
+
+That is the way that Microsoft Windows refers to the user profile
+directory. There's nothing really to understand here, just put your
+configuration commands in the file config.asy in a new folder
+%USERPROFILE%\.asy.
+
+
+File: asy-faq.info, Node: Question 2.9, Next: Question 2.10, Previous: Question 2.8, Up: Section 2
+
+Question 2.9. Why do I get the error "string not terminated" when I try to set settings.dir="C:\asymptote\";?
+
+The backslash is an escape character here, so \" is interpreted as a
+verbatim quotation mark, leaving the string without a terminating
+quotation mark. Fortunately, this is the only escaped character in
+double-quoted strings. A final backslash isn't needed here anyway, but
+should you really want one somewhere, you can say:
+settings.dir="C:\asymptote"+'\\';.
+
+
+File: asy-faq.info, Node: Question 2.10, Next: Question 2.11, Previous: Question 2.9, Up: Section 2
+
+Question 2.10. How do I change environment variables in Microsoft Windows, for example, in order to change the default PostScript viewer?
+
+While it is easier to set the corresponding Asymptote configuration
+variable in your config.asy file, here is the procedure for changing
+Microsoft Windows environment variables:
+
+Click on the [Start] button
+
+* RIGHT-click on 'My Computer'
+
+* Choose 'Properties' from the popup menu
+
+* Click the 'Advanced' tab
+
+* Click the 'Environment Variables' button.
+
+
+File: asy-faq.info, Node: Question 2.11, Next: Question 2.12, Previous: Question 2.10, Up: Section 2
+
+Question 2.11. Under Microsoft Windows XP, why do I get an error like "Invalid Parameter - 432x432"?
+
+This means that ImageMagick wasn't properly installed and you are using
+the MSDOS convert program rather than the ImageMagick one. Or you may have
+installed ImageMagick but ran Asymptote from an existing MSDOS window. In
+that case, simply open a new window and try again. If that doesn't work,
+check that
+
+convert --version
+returns something like
+
+Version: ImageMagick 6.2.8 06/27/06 Q16 http://www.imagemagick.org
+
+File: asy-faq.info, Node: Question 2.12, Next: Question 3.1, Previous: Question 2.11, Up: Section 2
+
+Question 2.12. Why does Asymptote freeze upon trying to draw a label with my MikTex installation under Microsoft Windows?
+
+Likely, this means that latex and dvips are not in your default path. Try
+adding the appropriate paths in your config.asy file, for example:
+
+import settings;
+latex="C:\Program Files\MiKTeX 2.7\miktex\bin\latex.exe";
+dvips="C:\Program Files\MiKTeX 2.7\miktex\bin\dvips.exe";
+
+File: asy-faq.info, Node: Section 3, Next: Section 4, Previous: Section 2, Up: Top
+
+Questions about paths
+
+* Menu:
+* Question 3.1:: Why do I get a syntax error message when I specify an
+ integer value for the path tension?
+* Question 3.2:: Shouldn't dots always be the same size?
+
+
+
+File: asy-faq.info, Node: Question 3.1, Next: Question 3.2, Previous: Question 2.12, Up: Section 3
+
+Question 3.1. Why do I get a syntax error message when I specify an integer value for the path tension?
+
+What is happening here is that
+
+draw((0,0)..tension 2..(0,50)..(100,100));
+is read as
+
+draw((0,0)..tension 2. .(0,50)..(100,100));
+So the first . after the two is treated as a decimal point. Just put a
+space after the integer tension value:
+
+draw((0,0)..tension 2 ..(0,50)..(100,100));
+
+File: asy-faq.info, Node: Question 3.2, Next: Question 4.1, Previous: Question 3.1, Up: Section 3
+
+Question 3.2. Shouldn't dots always be the same size?
+
+From the documentation:
+
+"The dot command defined in the module plain draws a dot having a diameter
+equal to an explicit pen linewidth or the default linewidth magnified by
+dotfactor (6 by default)."
+
+Thus, when you use the default pen, the dot will have size 6*linewidth,
+but when you give a pen with an explicit width specified, you will have a
+dot of size linewidth. If you want the first case to behave like the
+second, you may set dotfactor=1.
+
+
+File: asy-faq.info, Node: Section 4, Next: Section 5, Previous: Section 3, Up: Top
+
+Questions about labels
+
+* Menu:
+* Question 4.1:: How do I get Greek letters like omega to show up in my
+ labels?
+* Question 4.2:: Can Asymptote use matrices as labels?
+* Question 4.3:: How do I tell Asymptote to load a particular LaTeX
+ package, like mathptmx?
+* Question 4.4:: How can I use international fonts in Asymptote labels?
+* Question 4.5:: How can I use Fourier fonts?
+* Question 4.6:: Is there any way to change the default appearance of
+ the decimal separator, using a comma instead of a dot?
+* Question 4.7:: How can I get a rotated label with the filled box
+ rotated as well so that it fits the text?
+* Question 4.8:: How can I rotate labels in a 3D figure?
+* Question 4.9:: How can I draw some squares and circles of a fixed
+ size and put a label in the middle of them?
+* Question 4.10:: The binary operator * can be used to scale the color
+ of a pen by a real number. Does this scaling factor
+ have to be less than 1?
+* Question 4.11:: Why is the space after the comma decimal separator in
+ my locale so large?
+* Question 4.12:: How can I prevent
+ texpreamble("\usepackage[pdftex]{hyperref}") from
+ changing the page size?
+
+
+
+File: asy-faq.info, Node: Question 4.1, Next: Question 4.2, Previous: Question 3.2, Up: Section 4
+
+Question 4.1. How do I get Greek letters like omega to show up in my labels?
+
+In (La)TeX, Greek letters can be obtained in math mode by prepending a
+backslash to the letter name. So for a omega symbol, use "$\omega$".
+Everything between the dollar signs is considered to be a math formula.
+Uppercase Greek letters can be used by capitalizing the first letter of
+the name:
+
+label("$\omega$",(0,0));
+label("$\Omega$",(20,0));
+
+File: asy-faq.info, Node: Question 4.2, Next: Question 4.3, Previous: Question 4.1, Up: Section 4
+
+Question 4.2. Can Asymptote use matrices as labels?
+
+Yes:
+usepackage("amsmath");
+label("$\begin{matrix} 1 & 2 \\\ 1 & 1 \end{matrix}$",(0,0));
+
+File: asy-faq.info, Node: Question 4.3, Next: Question 4.4, Previous: Question 4.2, Up: Section 4
+
+Question 4.3. How do I tell Asymptote to load a particular LaTeX package, like mathptmx?
+
+Put
+
+usepackage("mathptmx");
+at the beginning of your file. Note: to enable the Adobe Times Roman font
+for text, you will also need to say:
+defaultpen(TimesRoman());
+
+File: asy-faq.info, Node: Question 4.4, Next: Question 4.5, Previous: Question 4.3, Up: Section 4
+
+Question 4.4. How can I use international fonts in Asymptote labels?
+
+See http://asymptote.sourceforge.net/doc/unicode.html.
+
+
+File: asy-faq.info, Node: Question 4.5, Next: Question 4.6, Previous: Question 4.4, Up: Section 4
+
+Question 4.5. How can I use Fourier fonts?
+
+usepackage("fourier");
+defaultpen(font("T1","fut\textfamilyextension","m","n"));
+
+File: asy-faq.info, Node: Question 4.6, Next: Question 4.7, Previous: Question 4.5, Up: Section 4
+
+Question 4.6. Is there any way to change the default appearance of the decimal separator, using a comma instead of a dot?
+
+Just set your locale appropriately:
+
+locale("it_IT");
+usepackage("icomma");
+label(format(0.5));
+
+File: asy-faq.info, Node: Question 4.7, Next: Question 4.8, Previous: Question 4.6, Up: Section 4
+
+Question 4.7. How can I get a rotated label with the filled box rotated as well so that it fits the text?
+
+frame f;
+label(f,"This is some text",white,Fill(blue));
+add(rotate(65)*f);
+
+File: asy-faq.info, Node: Question 4.8, Next: Question 4.9, Previous: Question 4.7, Up: Section 4
+
+Question 4.8. How can I rotate labels in a 3D figure?
+
+You need to first project the triple to a pair like this:
+
+import three;
+size(100,100);
+
+draw(rotate(90,project(Z))*"A",O--X);
+
+File: asy-faq.info, Node: Question 4.9, Next: Question 4.10, Previous: Question 4.8, Up: Section 4
+
+Question 4.9. How can I draw some squares and circles of a fixed size and put a label in the middle of them?
+
+Fixed-size objects should be drawn on a separate picture and then added to
+currentpicture. Here is one way (see also
+http://asymptote.sourceforge.net/gallery/subpictures.asy and
+http://asymptote.sourceforge.net/gallery/mosquito.asy):
+
+real u=2cm;
+
+picture square;
+draw(square,scale(u)*shift(-0.5,-0.5)*unitsquare);
+
+picture circle;
+draw(circle,scale(0.5u)*unitcircle);
+
+void add(picture pic=currentpicture, Label L, picture object, pair z) {
+add(pic,object,z);
+label(pic,L,z);
+}
+
+add("square",square,(0,0));
+add("circle",circle,(5cm,0));
+
+File: asy-faq.info, Node: Question 4.10, Next: Question 4.11, Previous: Question 4.9, Up: Section 4
+
+Question 4.10. The binary operator * can be used to scale the color of a pen by a real number. Does this scaling factor have to be less than 1?
+
+The scaling factor can be greater than 1. But keep in mind that the rgb
+color components saturate at 1.
+
+Try
+write(cyan); write(0.8*cyan); write(1.5*cyan);
+and you will quickly see what is going on.
+
+To get a lighter cyan you can say white+cyan, which yields rgb(0.5,1,1).
+If you want something even lighter specify the rgb colors directly, for
+example, rgb(0.9,1,1).
+
+Alternatively, work in cmyk colour space, which is nicer in that it
+handles saturation separately from hue:
+
+0.1*Cyan is light and 0.9*Cyan is dark. You can also say 0.1*cmyk(red).
+
+
+File: asy-faq.info, Node: Question 4.11, Next: Question 4.12, Previous: Question 4.10, Up: Section 4
+
+Question 4.11. Why is the space after the comma decimal separator in my locale so large?
+
+LaTeX is treating the comma as punctuation and not as a decimal separator.
+The solution is to load the icomma package near the beginning of your
+file:
+usepackage("icomma");
+
+File: asy-faq.info, Node: Question 4.12, Next: Question 5.1, Previous: Question 4.11, Up: Section 4
+
+Question 4.12. How can I prevent texpreamble("\usepackage[pdftex]{hyperref}") from changing the page size?
+
+texpreamble("\usepackage[pdftex,setpagesize=false]{hyperref}");
+
+File: asy-faq.info, Node: Section 5, Next: Section 6, Previous: Section 4, Up: Top
+
+Questions about arrows
+
+* Menu:
+* Question 5.1:: How do I draw two arrows at arbitrary positions along
+ a path?
+* Question 5.2:: How do I reverse the direction of an arrowhead?
+* Question 5.3:: How do I change the size of all arrows?
+* Question 5.4:: Can I create other arrowhead styles?
+
+
+
+File: asy-faq.info, Node: Question 5.1, Next: Question 5.2, Previous: Question 4.12, Up: Section 5
+
+Question 5.1. How do I draw two arrows at arbitrary positions along a path?
+
+Assuming that at least one of the arrowheads is to be filled, you can do
+this:
+
+size(200);
+path g = (0,0)..(1,3)..(3,0);
+draw(g,Arrow(Relative(0.9)));
+add(arrow(g,invisible,FillDraw(black),Relative(0.5)));
+add(arrow(reverse(g),invisible,FillDraw(white,black),Relative(0.9)));
+If both of the arrowheads are to be drawn with filltype NoFill, one will
+need to create a specialized version of the arrow routine in
+plain_arrows.asy:
+
+void arrow(frame f, arrowhead arrowhead=DefaultHead,
+ path g, pen p=currentpen, real size=0,
+ real angle=arrowangle, filltype filltype=arrowhead.defaultfilltype,
+ position position=EndPoint, bool forwards=true,
+ margin margin=NoMargin, bool center=false);
+
+File: asy-faq.info, Node: Question 5.2, Next: Question 5.3, Previous: Question 5.1, Up: Section 5
+
+Question 5.2. How do I reverse the direction of an arrowhead?
+
+Simply reverse the direction of the path.
+
+path g=((0,0)--(5cm,0));
+draw(reverse(g),Arrow(Relative(0.55)));
+
+File: asy-faq.info, Node: Question 5.3, Next: Question 5.4, Previous: Question 5.2, Up: Section 5
+
+Question 5.3. How do I change the size of all arrows?
+
+To override the arrowsize you can give every Arrow drawing attribute a
+real size argument. If you want to do this globally, you can override the
+pen-dependent arrowsize function like this:
+
+arrowsize=new real(pen p=currentpen) {return 2mm;};
+
+File: asy-faq.info, Node: Question 5.4, Next: Question 6.1, Previous: Question 5.3, Up: Section 5
+
+Question 5.4. Can I create other arrowhead styles?
+
+Yes, you can build custom arrowheads like this (see the predefined
+arrowhead styles in plain_arrows.asy for further examples):
+
+arrowhead DotHead;
+DotHead.head=new path(path g, position position=EndPoint, pen p=currentpen,
+ real size=0, real angle=arrowangle) {
+ if(size == 0) size=DotHead.size(p);
+ bool relative=position.relative;
+ real position=position.position.x;
+ if(relative) position=reltime(g,position);
+ path r=subpath(g,position,0);
+ pair x=point(r,0);
+ real t=arctime(r,size);
+ pair y=point(r,t);
+ return circle(0.5(x+y),0.5size);
+};
+
+size(100);
+draw((0,0)..(1,1)..(2,0),Arrow(DotHead));
+dot((2,0),red);
+If you submit your alternate arrowheads to the Forum or the Patch
+Tracking System, we'll consider including them in a future release.
+
+
+File: asy-faq.info, Node: Section 6, Next: Section 7, Previous: Section 5, Up: Top
+
+Questions about 2D graphs
+
+* Menu:
+* Question 6.1:: How can I draw x axis ticks on the right side, with
+ the tick labels on the left side (relative to the axis
+ path)?
+* Question 6.2:: How can I reposition the x axis label to
+ three-quarters along the axis length?
+* Question 6.3:: How can I move the x axis label down 10bp?
+* Question 6.4:: Can I use different pens for the axis, the axis label,
+ and the tick labels?
+* Question 6.5:: How can I change the font type of the axes label?
+* Question 6.6:: How can I change the font type of the tick labels on
+ an axis?
+* Question 6.7:: How can I prevent axes tick labels from rendering on
+ top of each other?
+* Question 6.8:: How do I make the plot region of a graph, ignoring
+ labels and legends, have a fixed size?
+* Question 6.9:: How can I plot a function f(x) within [0,1]x[0,2]
+ without explicitly calculating the x values for which
+ f(x) hits the boundary?
+* Question 6.10:: Is it possible to define customized palettes?
+* Question 6.11:: Is there an easy way to graph factorial functions
+ nicely?
+* Question 6.12:: How do I indicate that a certain length should be
+ exactly the size I prescribe with no rescaling, within
+ a picture which has its own size?
+* Question 6.13:: How can I make the y axis display base-2 logarithmic
+ values?
+* Question 6.14:: How can I align the x axes of two graphs on the same
+ figure?
+* Question 6.15:: How can I change the direction of the y-axis, such
+ that negatives values are on the upper y-axis?
+* Question 6.16:: How can I fill a path with a function that defines the
+ color of each location?
+* Question 6.17:: Is there a way to draw a function that is not
+ explicitly given, such as (y - 2)^2 = x - 1 ?
+* Question 6.18:: Is it possible to reverse or stretch an axis?
+* Question 6.19:: Why can't I use the UnFill option to draw graphs with
+ empty markers?
+* Question 6.20:: How can I force several images to use the same palette
+ range (e.g. the entire 0-255 grayscale range)?
+
+
+
+File: asy-faq.info, Node: Question 6.1, Next: Question 6.2, Previous: Question 5.4, Up: Section 6
+
+Question 6.1. How can I draw x axis ticks on the right side, with the tick labels on the left side (relative to the axis path)?
+
+import graph;
+
+size(250,200,IgnoreAspect);
+
+draw(graph(exp,-1,1),red);
+
+xaxis("$x$",RightTicks(Label(align=left)));
+yaxis("$y$",RightTicks);
+
+File: asy-faq.info, Node: Question 6.2, Next: Question 6.3, Previous: Question 6.1, Up: Section 6
+
+Question 6.2. How can I reposition the x axis label to three-quarters along the axis length?
+
+import graph;
+
+size(250,200,IgnoreAspect);
+
+draw(graph(exp,-1,1),red);
+
+xaxis(Label("$x$",0.75),LeftTicks);
+yaxis("$y$",RightTicks);
+
+File: asy-faq.info, Node: Question 6.3, Next: Question 6.4, Previous: Question 6.2, Up: Section 6
+
+Question 6.3. How can I move the x axis label down 10bp?
+
+import graph;
+size(250,200,IgnoreAspect);
+
+draw(graph(exp,-1,1),red);
+
+xaxis(shift(0,-10)*"$x$",LeftTicks);
+yaxis("$y$",RightTicks);
+
+File: asy-faq.info, Node: Question 6.4, Next: Question 6.5, Previous: Question 6.3, Up: Section 6
+
+Question 6.4. Can I use different pens for the axis, the axis label, and the tick labels?
+
+Yes:
+
+import graph;
+size(300,200,IgnoreAspect);
+
+xlimits(-50,50);
+ylimits(0,100);
+
+xaxis(Label("$x$",MidPoint,red),Bottom,blue,LeftTicks(green));
+yaxis("$y$",Left,RightTicks);
+
+File: asy-faq.info, Node: Question 6.5, Next: Question 6.6, Previous: Question 6.4, Up: Section 6
+
+Question 6.5. How can I change the font type of the axes label?
+
+import graph;
+size(300,200,IgnoreAspect);
+
+xlimits(-50,50);
+ylimits(0,100);
+
+xaxis("x",Bottom,Courier("m","n"),LeftTicks);
+yaxis("$y$",Left,RightTicks);
+
+File: asy-faq.info, Node: Question 6.6, Next: Question 6.7, Previous: Question 6.5, Up: Section 6
+
+Question 6.6. How can I change the font type of the tick labels on an axis?
+
+Tick labels are by default typeset in (TeX) math mode, so to use other
+fonts you need to override the default tick format:
+
+import graph;
+size(300,200,IgnoreAspect);
+
+xlimits(-50,50);
+ylimits(0,100);
+
+xaxis("$x$",Bottom,LeftTicks("%.4g",Courier("m","n")+fontsize(12)));
+yaxis("$y$",Left,RightTicks);
+
+File: asy-faq.info, Node: Question 6.7, Next: Question 6.8, Previous: Question 6.6, Up: Section 6
+
+Question 6.7. How can I prevent axes tick labels from rendering on top of each other?
+
+Either:
+
+(i) give LeftTicks/RightTicks/Ticks the arguments beginlabel=false and/or
+endlabel=false;
+
+(ii) explicitly remove specific ticks and their labels (drawing them
+manually; see
+http://asymptote.svn.sourceforge.net/viewvc/asymptote/trunk/asymptote/base/graph.asy
+for the definition of NoZero):
+
+import graph;
+
+size(10cm);
+
+real f(real x) {return x^2;}
+
+draw(graph(f,-2,2));
+
+xaxis(Ticks(NoZero));
+yaxis(Ticks(NoZero));
+
+label("$0$",(0,0),SW);
+(iii) explicitly remove specific tick labels and draw them manually (see
+http://asymptote.svn.sourceforge.net/viewvc/asymptote/trunk/asymptote/base/graph.asy
+for the definition of NoZeroFormat):
+
+import graph;
+
+size(10cm);
+
+real f(real x) {return x^2;}
+
+draw(graph(f,-2,2));
+
+xaxis(Ticks(NoZeroFormat));
+yaxis(Ticks(NoZeroFormat));
+
+label("$0$",(0,0),SW);
+(iv) use the xasy GUI to move overlapping labels;
+
+(v) change the Label argument of LeftTicks, RightTicks, or Ticks to:
+
+Label(currentpen+overwrite(Move))
+Solution (v) will move labels that might otherwise overwrite a previous
+label. Other possible overwrite arguments are Allow (allows overlapping
+labels; the default), Suppress (an overlapping label will not be written
+at all), SuppressQuiet, and MoveQuiet. The last two achieve the same
+result as the non-quiet types, but will not notify you which labels are
+overlapping. See: http://asymptote.sourceforge.net/doc/Pens.html.
+
+In the case of a user-specified tick array, you can change which labels
+get suppressed/moved by changing the order of array entries.
+
+
+File: asy-faq.info, Node: Question 6.8, Next: Question 6.9, Previous: Question 6.7, Up: Section 6
+
+Question 6.8. How do I make the plot region of a graph, ignoring labels and legends, have a fixed size?
+
+Either:
+
+i) Specify an explicit unitsize, which overrides any call to size:
+unitsize(x=1cm,y=2cm);
+ii) Explicitly tell Asymptote to map the plot region to a specific size:
+import graph;
+real[] x={0,1,2,3};
+real[] y=x^2;
+draw(graph(x,y),red);
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,RightTicks);
+
+size(5cm,5cm,point(SW),point(NE));
+
+label("$f_\mathrm{T}$",point(N),2N);
+iii) Specify the points in user coordinates that should correspond to a
+given picture size:
+
+import graph;
+
+size(250,200,IgnoreAspect);
+
+draw(graph(exp,-1,1),red);
+
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,RightTicks);
+
+fixedscaling((-1.5,-0.5),(1.5,3.5));
+In this example, the user coordinate (-1.5,-0.5) will end up being the
+lower left corner of the figure and (1.5,3.5) will be the upper right
+corner. You can use this option to ensure multiple figures have the same
+scaling and same resulting figure size (just ensure the two coordinates
+given to fixedscaling() leaves room for any labels).
+
+See also http://asymptote.sourceforge.net/doc/Frames-and-pictures.html.
+
+
+File: asy-faq.info, Node: Question 6.9, Next: Question 6.10, Previous: Question 6.8, Up: Section 6
+
+Question 6.9. How can I plot a function f(x) within [0,1]x[0,2] without explicitly calculating the x values for which f(x) hits the boundary?
+
+Call limits with the Crop option before drawing the graph:
+import graph;
+
+size(250,200,IgnoreAspect);
+
+draw(graph(exp,-1,1),red);
+
+limits((0,0),(1,2),Crop);
+
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,RightTicks);
+See also http://asymptote.sourceforge.net/doc/graph.html.
+
+
+File: asy-faq.info, Node: Question 6.10, Next: Question 6.11, Previous: Question 6.9, Up: Section 6
+
+Question 6.10. Is it possible to define customized palettes?
+
+Yes, you may generate your own pen[] array. For example:
+
+int NColors=32768;
+pen[] MyPalette=new pen[NColors];
+real step=1/(NColors-1.0);
+// Start at black: rgb(0,0,0)
+// End at yellow: rgb(1,1,0)
+for(int i=0; i < NColors; ++i) {
+ real rgval=i*step;
+ MyPalette[i]=rgb(rgval,rgval,0.0);
+}
+
+File: asy-faq.info, Node: Question 6.11, Next: Question 6.12, Previous: Question 6.10, Up: Section 6
+
+Question 6.11. Is there an easy way to graph factorial functions nicely?
+
+The example below shows a continuous function and two methods for placing
+markers at integer values of x:
+
+import graph;
+
+size(200,200,IgnoreAspect);
+
+real factorial(real t) {return gamma(t+1);}
+
+scale(Linear,Log);
+
+// Graph the factorial function.
+draw(graph(factorial,0,10));
+
+// Method 1: Draw nodes, but hide line
+pair F(int t) {return (t,factorial(t));}
+// Graph of factorial function from 0 to 10
+pair[] z=sequence(F,11);
+draw(graph(z),invisible,marker(scale(0.8mm)*unitcircle,blue,Fill));
+
+// Method 2: Nongraphing routines require explicit scaling:
+pair dotloc(int t) {return Scale(F(t));}
+pair[] dotlocs=sequence(dotloc,11);
+dot(dotlocs);
+
+xaxis("$x$",BottomTop,LeftTicks);
+yaxis("$y$",LeftRight,RightTicks);
+
+File: asy-faq.info, Node: Question 6.12, Next: Question 6.13, Previous: Question 6.11, Up: Section 6
+
+Question 6.12. How do I indicate that a certain length should be exactly the size I prescribe with no rescaling, within a picture which has its own size?
+
+Here's an easy way to do this.
+
+size(12cm,0);
+
+void distance(picture pic=currentpicture, pair A, pair B, Label L="", real n=0,
+ pen p=currentpen)
+{
+ real d=3mm;
+ path g=A--B;
+ transform T=shift(-n*d*unit(B-A)*I);
+ pic.add(new void(frame f, transform t) {
+ picture opic;
+ path G=T*t*g;
+ draw(opic,Label(L,Center,UnFill(1)),G,p,Arrows(NoFill),Bars,PenMargins);
+ add(f,opic.fit());
+ });
+ pic.addBox(min(g),max(g),T*min(p),T*max(p));
+}
+
+pair A=(0,0), B=(3,3);
+
+dot(A);
+dot(B);
+
+distance(A,B,"$\ell$",1);
+
+File: asy-faq.info, Node: Question 6.13, Next: Question 6.14, Previous: Question 6.12, Up: Section 6
+
+Question 6.13. How can I make the y axis display base-2 logarithmic values?
+
+See the example http://asymptote.sourceforge.net/gallery/2D
+graphs/log2graph.asy.
+
+
+File: asy-faq.info, Node: Question 6.14, Next: Question 6.15, Previous: Question 6.13, Up: Section 6
+
+Question 6.14. How can I align the x axes of two graphs on the same figure?
+
+An easy way to do this, if the axes to be aligned have the same scaling
+and size, is illustrated in the example
+http://asymptote.sourceforge.net/gallery/2D graphs/alignedaxis.asy.
+
+Here is a more general solution to the problem of aligning two arbitrary
+axes. One fits the second picture to a frame based on the horizontal
+scaling for the first picture:
+
+import graph;
+
+real width=15cm;
+real aspect=0.3;
+
+picture pic1,pic2;
+
+size(pic1,width,aspect*width,IgnoreAspect);
+size(pic2,width,aspect*width,IgnoreAspect);
+
+scale(pic1,false);
+scale(pic2,false);
+
+real xmin1=6;
+real xmax1=9;
+real xmin2=8;
+real xmax2=16;
+
+real a1=1;
+real a2=0.001;
+
+real f1(real x) {return a1*sin(x/2*pi);}
+real f2(real x) {return a2*sin(x/4*pi);}
+
+draw(pic1,graph(pic1,f1,xmin1,xmax1));
+draw(pic2,graph(pic2,f2,xmin2,xmax2));
+
+xaxis(pic1,Bottom,LeftTicks());
+yaxis(pic1,"$f_1(x)$",Left,RightTicks);
+
+xaxis(pic2,"$x$",Bottom,LeftTicks(Step=4));
+yaxis(pic2,"$f_2(x)$",Left,RightTicks);
+
+yequals(pic1,0,Dotted);
+yequals(pic2,0,Dotted);
+
+pair min1=point(pic1,SW);
+pair max1=point(pic1,NE);
+
+pair min2=point(pic2,SW);
+pair max2=point(pic2,NE);
+
+real scale=(max1.x-min1.x)/(max2.x-min2.x);
+real shift=min1.x/scale-min2.x;
+
+transform t1=pic1.calculateTransform();
+transform t2=pic2.calculateTransform();
+transform T=xscale(scale*t1.xx)*yscale(t2.yy);
+
+add(pic1.fit());
+real height=truepoint(N,user=false).y-truepoint(S,user=false).y;
+add(shift(0,-height)*(shift(shift)*pic2).fit(T));
+
+File: asy-faq.info, Node: Question 6.15, Next: Question 6.16, Previous: Question 6.14, Up: Section 6
+
+Question 6.15. How can I change the direction of the y-axis, such that negatives values are on the upper y-axis?
+
+Here is a simple example (see also the example
+http://asymptote.sourceforge.net/gallery/2D graphs/diatom.asy or the
+discussion of Linear(-1) in the documentation):
+
+import graph;
+size(250,200,IgnoreAspect);
+
+scale(Linear,Linear(-1));
+
+draw(graph(log,0.1,10),red);
+
+xaxis("$x$",LeftTicks);
+yaxis("$y$",RightTicks);
+
+File: asy-faq.info, Node: Question 6.16, Next: Question 6.17, Previous: Question 6.15, Up: Section 6
+
+Question 6.16. How can I fill a path with a function that defines the color of each location?
+
+Use functionshade with a PDF tex engine, as illustrated by the example
+{functionshading.asy}.
+
+If you want to produce PostScript output, an approximate solution for now
+would be to superimpose a fine grid and specify colors to latticeshade
+that depend on position as a single pen[][] lattice. Alternatively, it may
+be more efficient to use tensorshade}.
+
+
+File: asy-faq.info, Node: Question 6.17, Next: Question 6.18, Previous: Question 6.16, Up: Section 6
+
+Question 6.17. Is there a way to draw a function that is not explicitly given, such as (y - 2)^2 = x - 1 ?
+
+Yes, use the parametric form
+
+y=t
+x=(t-2)^2+1
+See the example http://asymptote.sourceforge.net/gallery/2D
+graphs/parametricgraph.asy.
+
+
+File: asy-faq.info, Node: Question 6.18, Next: Question 6.19, Previous: Question 6.17, Up: Section 6
+
+Question 6.18. Is it possible to reverse or stretch an axis?
+
+The real scaling argument to Linear is used to stretch (or reverse) the
+axis. To see the effect of axis stretching, be sure not to specify
+IgnoreAspect in the picture size command.
+
+A secondary axis has the same length as the primary axis, so stretching
+cannot have any effect. But one can still reverse the axis, with
+Linear(-1).
+
+
+File: asy-faq.info, Node: Question 6.19, Next: Question 6.20, Previous: Question 6.18, Up: Section 6
+
+Question 6.19. Why can't I use the UnFill option to draw graphs with empty markers?
+
+UnFill won't work here because it only affects the local frame the markers
+are initially drawn on, before being added to currentpicture. Here is a
+way of achieving the desired effect (assuming a white background):
+
+import graph;
+size(10cm,0);
+pair[] z={(0,0),(0.5,0.5),(1,1)};
+path g=graph(z);
+
+draw(shift(0,.5)*g,marker(scale(5)*unitcircle,FillDraw(white)));
+
+xaxis(BottomTop,LeftTicks);
+yaxis(LeftRight,RightTicks);
+
+File: asy-faq.info, Node: Question 6.20, Next: Question 7.1, Previous: Question 6.19, Up: Section 6
+
+Question 6.20. How can I force several images to use the same palette range (e.g. the entire 0-255 grayscale range)?
+
+The palette color space corresponds to a range of values specified by the
+argument range, which can be Full, Automatic or an explicit range
+Range(pair min, pair max). Here Full} specifies a range varying from the
+minimum to maximum values of the function over the sampling interval,
+while Automatic selects "nice" limits.
+
+
+File: asy-faq.info, Node: Section 7, Next: Section 8, Previous: Section 6, Up: Top
+
+Questions about programming
+
+* Menu:
+* Question 7.1:: Is Asymptote an interpreter or a compiler?
+* Question 7.2:: What is the difference between a frame and a picture?
+* Question 7.3:: What is the difference between a path and a guide?
+* Question 7.4:: What is a convenient way to declare and initialize an
+ array of pictures?
+* Question 7.5:: Is there a way to define functions that act on arrays
+ in general (i.e. work for arrays of any type)?
+* Question 7.6:: Is there any way to declare structures ahead of their
+ definition, e.g. where struct A performs some
+ operation on struct B, but B contains an A member?
+* Question 7.7:: Where are static variables in for loops allocated?
+* Question 7.8:: Is there a debugger for asy?
+* Question 7.9:: Do you accept patches for Asymptote?
+
+
+
+File: asy-faq.info, Node: Question 7.1, Next: Question 7.2, Previous: Question 6.20, Up: Section 7
+
+Question 7.1. Is Asymptote an interpreter or a compiler?
+
+Asymptote compiles Asymptote commands into its own virtual machine code.
+It then runs this pseudocode on a virtual machine to produce PostScript
+code.
+
+
+File: asy-faq.info, Node: Question 7.2, Next: Question 7.3, Previous: Question 7.1, Up: Section 7
+
+Question 7.2. What is the difference between a frame and a picture?
+
+Frames are canvases for drawing in PostScript coordinates. While working
+with frames directly is occasionally necessary for constructing deferred
+drawing routines, pictures are usually more convenient to work with. See
+*Note Question 8.8:: `In MetaPost, it is possible to have a drawing remain
+the same size in different pictures by defining a unit u and explicitly
+multiply all the coordinates by u. Is there a better way to do this in
+Asymptote?'.
+
+
+File: asy-faq.info, Node: Question 7.3, Next: Question 7.4, Previous: Question 7.2, Up: Section 7
+
+Question 7.3. What is the difference between a path and a guide?
+
+A path is a cubic spline with fixed endpoint conditions.
+
+A guide is an unresolved cubic spline (list of cubic-spline nodes and
+control points). A guide is like a path except that the computation of the
+cubic spline is deferred until drawing time (when it is resolved into a
+path); this allows two guides with free endpoint conditions to be joined
+together smoothly.
+
+
+File: asy-faq.info, Node: Question 7.4, Next: Question 7.5, Previous: Question 7.3, Up: Section 7
+
+Question 7.4. What is a convenient way to declare and initialize an array of pictures?
+
+You could write yourself a routine such as:
+picture[] picture(int n) {
+ picture[] pic;
+ for(int i=0; i < n; ++i) {
+ pic[i]=new picture;
+ size(pic[i],19cm,0);
+ }
+ return pic;
+}
+
+picture[] pic=picture(6);
+
+File: asy-faq.info, Node: Question 7.5, Next: Question 7.6, Previous: Question 7.4, Up: Section 7
+
+Question 7.5. Is there a way to define functions that act on arrays in general (i.e. work for arrays of any type)?
+
+Generic types aren't yet implemented.
+
+But for now you can at least say
+typedef string T;
+include F;
+
+typedef real T;
+include F;
+where F.asy contains some type-dependent code like
+T[] operator $(T A, T B) {return new T[] {A,B};}
+
+File: asy-faq.info, Node: Question 7.6, Next: Question 7.7, Previous: Question 7.5, Up: Section 7
+
+Question 7.6. Is there any way to declare structures ahead of their definition, e.g. where struct A performs some operation on struct B, but B contains an A member?
+
+Asymptote does not support forward declaration of types. You can, however,
+nest structures, so that both types are visible for parts of the bodies of
+both structure definitions. For example:
+
+struct B {
+ typedef void someroutine(B b);
+
+ static struct A {
+ someroutine routine;
+ void operator init(someroutine routine) {
+ this.routine=routine;
+ }
+ }
+
+ string test="Testing";
+}
+
+typedef B.A A;
+
+A a=B.A(new void(B b){write(b.test);});
+
+B b;
+a.routine(b);
+
+File: asy-faq.info, Node: Question 7.7, Next: Question 7.8, Previous: Question 7.6, Up: Section 7
+
+Question 7.7. Where are static variables in for loops allocated?
+
+In the example
+
+void f() {
+ for(int i=0; i < 3; ++i) {
+ static int n;
+ ++n;
+ write(n);
+ }
+}
+
+f(); // Writes 1, 2, 3
+the static qualifier means that n is allocated not just outside of the for
+loop, but also outside the function. This is clear if you call f multiple
+times; there is still only one instance of n.
+
+The "level" of a variable (where it is allocated) has nothing to do with
+the "scope" of a variable (how long it can be referred to by name). The
+curly braces enclosing a block affect only a variable's scope, not its
+level.
+
+Static modifiers are meaningless at the top level; they generate a warning
+and are simply ignored:
+
+for(int i=0; i < 3; ++i) {
+ static int n;
+ ++n;
+ write(n);
+}
+// Writes warning about top-level static modifier and then 1, 1, 1
+Since version 1.22, non-static variables allocated in a loop body are
+allocated anew every iteration. This is only noticable in obscure cases
+where a variable in a loop is accessed in the closure of a function
+defined in the loop:
+
+int f();
+
+for(int i=0; i < 10; ++i) {
+ int j=10*i;
+ if(i == 5)
+ f=new int() {return j;};
+}
+
+write(f()); // Writes 50
+Variables in the body of a loop last as long as that iteration of the
+loop, unless they are kept alive by a function closure as in the example
+above. In a function body, variables will last at least as long as the
+function call, though because of closures and garbage collection, they may
+last longer than that. If defined at the top level of a file or at the
+interactive prompt, they will last at least until the end of the file or
+prompt's run.
+
+
+File: asy-faq.info, Node: Question 7.8, Next: Question 7.9, Previous: Question 7.7, Up: Section 7
+
+Question 7.8. Is there a debugger for asy?
+
+Yes, Asymptote includes a line-based debugger:
+
+http://asymptote.sourceforge.net/doc/Debugger.html
+
+
+File: asy-faq.info, Node: Question 7.9, Next: Question 8.1, Previous: Question 7.8, Up: Section 7
+
+Question 7.9. Do you accept patches for Asymptote?
+
+Yes, in fact we would prefer that users submit patches for customized
+features (to http://sourceforge.net/tracker/?atid=685685&group_id=120000)
+instead of relying on us to do all of the coding. Development will proceed
+faster that way.
+
+
+File: asy-faq.info, Node: Section 8, Next: Section 9, Previous: Section 7, Up: Top
+
+Questions about differences between Asymptote and MetaPost
+
+* Menu:
+* Question 8.1:: What is the equivalent of the MetaPost c[a,b]
+ interpolation operator?
+* Question 8.2:: How does picture scaling differ in Asymptote and
+ MetaPost?
+* Question 8.3:: How can I avoid automatic scaling of a picture?
+* Question 8.4:: What is the equivalent of MetaPost ... command?
+* Question 8.5:: What is the equivalent of the MetaPost pickup command?
+* Question 8.6:: What is the equivalent of the MetaPost whatever
+ command?
+* Question 8.7:: What is the equivalent for the MetaPost command for
+ lray - horiz*v - verti*u = whatever*(LightSource - R),
+ a system of three linear equations for three unknowns:
+ horiz, verti, whatever?
+* Question 8.8:: In MetaPost, it is possible to have a drawing remain
+ the same size in different pictures by defining a unit
+ u and explicitly multiply all the coordinates by u. Is
+ there a better way to do this in Asymptote?
+* Question 8.9:: In MetaPost, one could produce tiling pictures by
+ generating a picture, and then clipping the picture to
+ a rectangle of fixed dimensions around the center of
+ the picture. How is that done in Asymptote?
+
+
+
+File: asy-faq.info, Node: Question 8.1, Next: Question 8.2, Previous: Question 7.9, Up: Section 8
+
+Question 8.1. What is the equivalent of the MetaPost c[a,b] interpolation operator?
+
+interp(a,b,c);
+
+File: asy-faq.info, Node: Question 8.2, Next: Question 8.3, Previous: Question 8.1, Up: Section 8
+
+Question 8.2. How does picture scaling differ in Asymptote and MetaPost?
+
+Asymptote includes an optional facility to do automatic scaling of
+pictures to achieve a given overall picture size, whereas Metapost only
+supports manual scaling. Asymptote defers drawing of objects drawn to
+pictures and distinguishes between true-size objects and objects that
+should scale with the picture size. The resulting linear programming
+problem is solved via the Simplex method.
+
+See the http://asymptote.sourceforge.net/gallery/dimension.asy example for
+an example of how deferred drawing is used to accomodate both user and
+true-size (PostScript) coordinates.
+
+
+File: asy-faq.info, Node: Question 8.3, Next: Question 8.4, Previous: Question 8.2, Up: Section 8
+
+Question 8.3. How can I avoid automatic scaling of a picture?
+
+If you really like Metapost-style manual (hard-wired) scaling either:
+
+(i) use the default size(0,0) for the entire picture and do all of the
+scaling by hand, just like in MetaPost;
+
+(ii) draw to a separate picture pic and add(pic.fit());
+
+(iii) use frames.
+
+
+File: asy-faq.info, Node: Question 8.4, Next: Question 8.5, Previous: Question 8.3, Up: Section 8
+
+Question 8.4. What is the equivalent of MetaPost ... command?
+
+The connector :: is a macro for tension atleast 1:
+
+size(100);
+pair z0=(0,0);
+pair z1=(1,0.25);
+pair z2=(2,0);
+draw(z0{up}::z1{right}::z2{down});
+
+File: asy-faq.info, Node: Question 8.5, Next: Question 8.6, Previous: Question 8.4, Up: Section 8
+
+Question 8.5. What is the equivalent of the MetaPost pickup command?
+
+Just say, for example:
+
+currentpen=red;
+
+File: asy-faq.info, Node: Question 8.6, Next: Question 8.7, Previous: Question 8.5, Up: Section 8
+
+Question 8.6. What is the equivalent of the MetaPost whatever command?
+
+Asymptote does not implicitly solve linear equations and therefore does
+not have the notion of a whatever unknown. Such a facility could certainly
+be added (perhaps using the notation ?= since = means assignment).
+However, the most common uses of whatever in MetaPost are covered by
+functions like extension in math.asy:
+pair extension(pair P, pair Q, pair p, pair q);
+this returns the intersection point of the extensions of the line segments
+PQ and pq. We find using routines like extension more explicit and less
+confusing to new users. But we could be persuaded to add something similar
+if someone can justify the need. In the meantime, one can always use the
+explicit built-in linear solver solve (see
+http://asymptote.sourceforge.net/doc/solve.html), which uses LU
+decomposition.
+
+
+File: asy-faq.info, Node: Question 8.7, Next: Question 8.8, Previous: Question 8.6, Up: Section 8
+
+Question 8.7. What is the equivalent for the MetaPost command for lray - horiz*v - verti*u = whatever*(LightSource - R), a system of three linear equations for three unknowns: horiz, verti, whatever?
+
+Since horiz*v+verti*u spans a plane, you could use
+real intersect(vector P, vector Q, vector n, vector Z);
+to find the intersection time for the line lray-whatever*(LightSource -
+R) and then extract the three desired values from there. (You'll still
+need to use the built-in explicit linear solver to solve a 2x2 system to
+get horiz and verti.)
+
+
+File: asy-faq.info, Node: Question 8.8, Next: Question 8.9, Previous: Question 8.7, Up: Section 8
+
+Question 8.8. In MetaPost, it is possible to have a drawing remain the same size in different pictures by defining a unit u and explicitly multiply all the coordinates by u. Is there a better way to do this in Asymptote?
+
+Yes, Asymptote has a better way: you definitely don't want to manually
+scale all of your coordinates. To make the user coordinates represent
+multiples of exactly 1cm:
+
+unitsize(1cm);
+draw(unitsquare);
+One can also specify different x and y unit sizes:
+
+unitsize(x=1cm,y=2cm);
+draw(unitsquare);
+Another way is to draw your fixed size object to a frame and add it to
+currentpicture like this:
+
+path p=(0,0)--(1,0);
+frame object;
+draw(object,scale(100)*p);
+
+add(object);
+add(object,(0,-10));
+To understand the difference between frames and pictures, try this:
+
+size(300,300);
+
+path p=(0,0)--(1,0);
+picture object;
+draw(object,scale(100)*p);
+
+add(object);
+add(object,(0,-10)); // Adds truesize object to currentpicture
+
+File: asy-faq.info, Node: Question 8.9, Next: Question 9.1, Previous: Question 8.8, Up: Section 8
+
+Question 8.9. In MetaPost, one could produce tiling pictures by generating a picture, and then clipping the picture to a rectangle of fixed dimensions around the center of the picture. How is that done in Asymptote?
+
+If you are using currentpicture the way one would in MetaPost (drawing in
+raw PostScript coordinates), you can simply do something like:
+
+fill((0,0)--(100,100)--(200,0)--cycle);
+
+pair center(picture pic=currentpicture) {return 0.5*(pic.min()+pic.max());}
+
+real height=100;
+real width=100;
+pair delta=0.5(width,height);
+pair c=center();
+clip(box(c-delta,c+delta));
+However, drawing in PostScript coordinates is often inconvenient. Here's
+the Asymptote way of doing the same thing, using deferred drawing:
+
+size(200,100);
+fill((0,0)--(1,1)--(2,0)--cycle);
+
+void clip(picture pic=currentpicture, real width, real height)
+{
+ pic.clip(new void (frame f, transform) {
+ pair center=0.5(min(f)+max(f));
+ pair delta=0.5(width,height);
+ clip(f,box(center-delta,center+delta));
+ });
+}
+
+clip(100,100);
+See also the discussion of tilings in the documentation:
+http://asymptote.sourceforge.net/doc/Pens.html.
+
+
+File: asy-faq.info, Node: Section 9, Previous: Section 8, Up: Top
+
+Questions about output
+
+* Menu:
+* Question 9.1:: How can I disable automatic invocation of the PS
+ viewer after an asy file is done processing?
+* Question 9.2:: How do I output jpeg images?
+* Question 9.3:: Can I embed bitmaps (photos) into my drawings and
+ position and scale them?
+* Question 9.4:: Does Asymptote support direct PDF output?
+* Question 9.5:: How to I produce large pictures of high quality in
+ raster format (e.g. png, giff etc).
+* Question 9.6:: Is it possible to produce multi-page documents with
+ asymptote?
+
+
+
+File: asy-faq.info, Node: Question 9.1, Next: Question 9.2, Previous: Question 8.9, Up: Section 9
+
+Question 9.1. How can I disable automatic invocation of the PS viewer after an asy file is done processing?
+
+It's actually not on by default, unless you happen to be using Microsoft
+Windows (because that is what most Microsoft Windows users expect).
+Microsoft Windows users can turn this feature off with the command-line
+option -noV or by putting
+
+import settings;
+interactiveView=false;
+batchView=false;
+in their config.asy file. See
+http://asymptote.sourceforge.net/doc/Options.html.
+
+
+File: asy-faq.info, Node: Question 9.2, Next: Question 9.3, Previous: Question 9.1, Up: Section 9
+
+Question 9.2. How do I output jpeg images?
+
+If you have the ImageMagick convert program installed, simply type
+
+asy -f jpg test.asy
+
+File: asy-faq.info, Node: Question 9.3, Next: Question 9.4, Previous: Question 9.2, Up: Section 9
+
+Question 9.3. Can I embed bitmaps (photos) into my drawings and position and scale them?
+
+Convert them to eps format and use the graphic(string) function just like
+a Label:
+
+label(graphic("file"),(0,0));
+See the example http://asymptote.sourceforge.net/gallery/orthocenter.asy
+and http://asymptote.sourceforge.net/doc/label.html.
+
+
+File: asy-faq.info, Node: Question 9.4, Next: Question 9.5, Previous: Question 9.3, Up: Section 9
+
+Question 9.4. Does Asymptote support direct PDF output?
+
+Yes, PDF output can be produced by the -f pdf option or -tex pdflatex
+option. This supports transparency, annotations, embedded movies, and
+U3D/PRC content.
+
+
+File: asy-faq.info, Node: Question 9.5, Next: Question 9.6, Previous: Question 9.4, Up: Section 9
+
+Question 9.5. How to I produce large pictures of high quality in raster format (e.g. png, giff etc).
+
+Try using some of the options to convert, mainly -geometry and -density.
+For example:
+convert -geometry 1000x3000 example.eps example.png
+You can also change the default resolution of the image with:
+convert -geometry 1000x3000 -density 300 -units PixelsPerInch example.eps example.png
+This does not change the number of pixels in the image, but just gives a
+hint as to how large each pixel should be displayed.
+
+If you include the -density option without the -geometry option, convert
+will keep the image size constant (so a 4cm x 3cm eps figure will
+generate a 4cm x 3cm png image).
+
+
+File: asy-faq.info, Node: Question 9.6, Previous: Question 9.5, Up: Section 9
+
+Question 9.6. Is it possible to produce multi-page documents with asymptote?
+
+Yes, simply call the newpage() function. This is used by the slide.asy
+package to produce high-quality slide presentations (easier to use than
+Prosper).
+