[texhax] asymptote in latex - how?

Philip TAYLOR P.Taylor at Rhul.Ac.Uk
Thu Sep 17 19:45:15 CEST 2009



Bo Thide' wrote:

> A related question:  I would like to have the asymptote code being read
> in into my latex file (preferable via an \input mechanism), rather than
> having the code embedded in the .tex file, but am not sure how to do it.
> Dario Teixeira's "ASYMPTOTE and LaTeX:  An Integration Guide" is unclear
> and ambgious on this point.  Everything I have tried in this direcation
> has failed so far.  Perhaps there is an Asymptote FAQ somewhere that I
> have missed?

I knew (and know) nothing about Asymptote, but including an Asymptote
file via \input (or \include) seemed to me a not-unreasonable desideratum,
so I looked into the problem.  After a few iterations, here is what
appears to be a usable solution.

Philip Taylor
--------
\documentclass [10pt]{article}
\usepackage {graphicx}
\usepackage {asymptote}
\usepackage {catchfile}

\begingroup
\catcode `\^^M = 12 \endlinechar = -1 %
\global \def \IncludeAsymptoteFile #1%
     {\def \BeginAsy {\begin {asy}}
      \def \DoAsy {\detokenize \expandafter {\AsymptoteFileContents}}
      \begingroup
             \lccode `\/ = `\\
             \lccode `\( = `\{
             \lccode `\) = `\}
             \lowercase {\gdef \EndAsy {^^M/end(asy)^^M}}
      \endgroup
      \CatchFileEdef \AsymptoteFileContents {#1} {\def \par {^^J}}
      \expandafter \expandafter \expandafter \BeginAsy \expandafter \DoAsy \EndAsy
     }
\endgroup

\begin {document}
\begin {figure}
\centering
\IncludeAsymptoteFile {eetomumu.asy}
\caption {This is a caption.  Let's see if it appears...}
\label {fig:1}
\end {figure}
\end {document}


More information about the texhax mailing list