usepackage("hyperref");
texpreamble("\hypersetup{"+settings.hyperrefOptions+"}");

// Embed object to be run in an external window. An image file name can be
// specified; if not given one will be automatically generated.
string embed(string name, string text="", string options="",
             real width=0, real height=0, string image="")
{
  string options; // Ignore passed options.
  if(image == "") {
    image=stripdirectory(stripextension(name))+"."+nativeformat();
    convert(name+"[0]",image,nativeformat());

    if(!settings.keep) {
      exitfcn currentexitfunction=atexit();
      void exitfunction() {
        if(currentexitfunction != null) currentexitfunction();
        delete(image);
      }
      atexit(exitfunction);
    }
  }
  if(width != 0) options += ", width="+(string) (width/pt)+"pt";
  if(height != 0) options +=", height="+(string) (height/pt)+"pt";
  return "\href{run:"+name+"}{"+graphic(image,options)+"}";
}

string hyperlink(string url, string text)
{
  return "\href{"+url+"}{"+text+"}";
}

string link(string label, string text="Play")
{
  return hyperlink("run:"+label,text);
}

