]> git.donarmstrong.com Git - lilypond.git/commitdiff
Remove tex and texstr backends (part 1).
authorWerner Lemberg <wl@gnu.org>
Sun, 7 Dec 2008 09:41:37 +0000 (10:41 +0100)
committerWerner Lemberg <wl@gnu.org>
Sun, 7 Dec 2008 09:41:37 +0000 (10:41 +0100)
Part 2 will remove documentation accordingly for German and English.

29 files changed:
lily/font-select.cc
lily/include/font-metric.hh
lily/include/lily-proto.hh
lily/include/main.hh
lily/include/modified-font-metric.hh
lily/include/text-metrics.hh [deleted file]
lily/lily-parser.cc
lily/main.cc
lily/modified-font-metric.cc
lily/text-metrics.cc [deleted file]
ly/paper-defaults-init.ly
mf/feta-autometric.mf
ps/music-drawing-routines.ps
scm/backend-library.scm
scm/define-markup-commands.scm
scm/define-stencil-commands.scm
scm/framework-eps.scm
scm/framework-null.scm
scm/framework-ps.scm
scm/framework-scm.scm
scm/framework-socket.scm
scm/framework-tex.scm [deleted file]
scm/framework-texstr.scm [deleted file]
scm/lily.scm
scm/output-tex.scm [deleted file]
scm/output-texstr.scm [deleted file]
scm/paper.scm
tex/lily-ps-defs.tex [deleted file]
tex/lilyponddefs.tex [deleted file]

index 81ba1115ce453314ed5807d535afed55d8fac2c9..5db047fc266fafee77643f04d13649a0ca03b80b 100644 (file)
@@ -109,8 +109,7 @@ select_encoded_font (Output_def *layout, SCM chain)
     }
 
 #if HAVE_PANGO_FT2
-  if (scm_is_string (name)
-      && is_pango_format_global)
+  if (scm_is_string (name))
     return select_pango_font (layout, chain);
   else
 #endif
index 2efea228e2fa9597f93d95c3ef119003b3d0928e..f194dee35ebb1607ce4f88ce4a26c533e5b3a1c8 100644 (file)
@@ -77,8 +77,6 @@ public:
 
 DECLARE_UNSMOB (Font_metric, metrics);
 
-Box lookup_tex_text_dimension (Font_metric *font, SCM text);
-
 char *pfb2pfa (Byte const *pfb, int length);
 
 #endif /* FONT_METRIC_HH */
index cabb84843fc6de4d4fca43019808d7487c7f3613..bc4f4c4c03cb112e220ef31bea163c04c39a96ff 100644 (file)
@@ -170,7 +170,6 @@ class Swallow_engraver;
 class Swallow_performer;
 class System;
 class Tempo_performer;
-class Tex_font_metric;
 class Tie;
 class Tie_details;
 class Tie_configuration;
index 1ddf2f41c88187ceaca9b24dcf5afe4cb82de16a..fbd2aa3da946db7aa01540988ad396772c776c91 100644 (file)
@@ -33,8 +33,6 @@ extern string output_name_global;
 extern bool be_safe_global;
 extern bool be_verbose_global;
 extern bool do_internal_type_checking_global;
-extern bool is_pango_format_global;
-extern bool is_TeX_format_global;
 extern bool point_and_click_global;
 extern string lilypond_datadir;
 extern bool use_object_keys;
index ada0060970ec4bb88aa34b870a034ecb9c839704..85882e86e8c9ce2a03263d6b67c6998f5cca8fea 100644 (file)
@@ -39,7 +39,6 @@ protected:
   Box get_indexed_char (size_t) const;
   size_t index_to_ascii (size_t) const;
   Box get_ascii_char (size_t) const;
-  Box tex_kludge (string) const;
 };
 
 #endif /* MODIFIED_FONT_METRIC_HH */
diff --git a/lily/include/text-metrics.hh b/lily/include/text-metrics.hh
deleted file mode 100644 (file)
index 710cf5d..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-  text-metrics.hh -- declare text metric lookup functions
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2004--2008 Han-Wen Nienhuys <hanwen@xs4all.nl>
-*/
-
-#ifndef TEXT_METRICS_HH
-#define TEXT_METRICS_HH
-
-#include "lily-guile.hh"
-#include "box.hh"
-
-void try_load_text_metrics (string);
-SCM ly_load_text_dimensions (SCM);
-Box lookup_tex_text_dimension (Font_metric *font,
-                              SCM text);
-
-#endif /* TEXT_METRICS_HH */
-
index 16af0c3cdf818135dc8686c97b362eed0a0e0fde..21e2946d193cc7a9533717397bfbf0a1e5cd41ec 100644 (file)
@@ -22,7 +22,6 @@
 #include "parser.hh"
 #include "score.hh"
 #include "sources.hh"
-#include "text-metrics.hh"
 #include "warn.hh"
 #include "program-option.hh"
 
@@ -87,9 +86,6 @@ Lily_parser::print_smob (SCM s, SCM port, scm_print_state*)
 void
 Lily_parser::parse_file (string init, string name, string out_name)
 {
-  if (get_output_backend_name () == "tex")
-    try_load_text_metrics (out_name);
-
   // TODO: use $parser 
   lexer_->set_identifier (ly_symbol2scm ("parser"), self_scm ());
   output_basename_ = out_name;
index ba8c3acbbc7d21c7003493ac3f335c578b440c06..29f3e685b363f42ce6729055492f7ca930e64557 100644 (file)
@@ -57,9 +57,6 @@ string init_name_global;
 /* Output formats to generate.  */
 string output_format_global = "";
 
-bool is_pango_format_global;
-bool is_TeX_format_global;
-
 /* Current output name. */
 string output_name_global;
 
@@ -142,11 +139,9 @@ static Long_option_init options_static[]
   /* Bug in option parser: --output =foe is taken as an abbreviation
      for --output-format.  */
   {_i ("FORMATs"), "formats", 'f', _i ("dump FORMAT,...  Also as separate options:")},
-  {0, "dvi", 0, _i ("generate DVI (tex backend only)")},
   {0, "pdf", 0, _i ("generate PDF (default)")},
   {0, "png", 0, _i ("generate PNG")},
   {0, "ps", 0, _i ("generate PostScript")},
-  {0, "tex", 0, _i ("generate TeX (tex backend only)")},
   {0, "help", 'h',  _i ("show this help and exit")},
   {_i ("FIELD"), "header", 'H',  _i ("dump header field FIELD to file\n"
                                     "named BASENAME.FIELD")},
@@ -388,7 +383,6 @@ main_with_guile (void *, int, char **)
   if (be_verbose_global)
     dir_info (stderr);
 
-  is_pango_format_global = !is_TeX_format_global;
   init_scheme_variables_global = "(list " + init_scheme_variables_global + ")";
   init_scheme_code_global = "(begin " + init_scheme_code_global + ")";
 
@@ -399,10 +393,6 @@ main_with_guile (void *, int, char **)
   init_freetype ();
   ly_reset_all_fonts ();
 
-  is_TeX_format_global = (get_output_backend_name () == "tex"
-                         || get_output_backend_name () == "texstr");
-  
-
   /* We accept multiple independent music files on the command line to
      reduce compile time when processing lots of small files.
      Starting the GUILE engine is very time consuming.  */
@@ -438,7 +428,7 @@ setup_localisation ()
   setlocale (LC_ALL, "");
 
   /* FIXME: check if this is still true.
-     Disable localisation of float values.  This breaks TeX output.  */
+     Disable localisation of float values. */
   setlocale (LC_NUMERIC, "C");
 
   string localedir = LOCALEDIR;
@@ -468,11 +458,9 @@ parse_argv (int argc, char **argv)
       switch (opt->shortname_char_)
        {
        case 0:
-         if (string (opt->longname_str0_) == "dvi"
-             || string (opt->longname_str0_) == "pdf"
+         if (string (opt->longname_str0_) == "pdf"
              || string (opt->longname_str0_) == "png"
-             || string (opt->longname_str0_) == "ps"
-             || string (opt->longname_str0_) == "tex")
+             || string (opt->longname_str0_) == "ps")
            add_output_format (opt->longname_str0_);
          else if (string (opt->longname_str0_) == "relocate")
            relocate_binary = true;
index 114b8e38248e4236f69a8b461285aa016c52f62c..ac2c88c68cd3f3151635b1e50a8bb6827a02edbf 100644 (file)
@@ -10,7 +10,6 @@ using namespace std;
 
 #include "modified-font-metric.hh"
 #include "pango-font.hh"
-#include "text-metrics.hh"
 #include "warn.hh"
 #include "stencil.hh"
 #include "main.hh"
@@ -102,62 +101,6 @@ Modified_font_metric::derived_mark () const
 {
 }
 
-/* TODO: put this klutchness behind ly:option switch.  */
-Box
-Modified_font_metric::tex_kludge (string text) const
-{
-  Interval ydims;
-  Real w = 0;
-  for (ssize i = 0; i < text.length (); i++)
-    {
-      switch (text[i])
-       {
-       case '\\':
-         /* Accent marks use width of base letter */
-         if (i < text.length () - 1)
-           {
-             if (text[i + 1]=='\'' || text[i + 1]=='`' || text[i + 1]=='"'
-                 || text[i + 1]=='^')
-               {
-                 i++;
-                 break;
-               }
-             /* For string width \\ is a \ and \_ is a _. */
-             if (text[i + 1]=='\\' || text[i + 1]=='_')
-               break;
-           }
-
-         for (i++; (i < text.length ()) && !isspace (text[i])
-                && text[i]!='{' && text[i]!='}'; i++)
-           ;
-
-         /* Compensate for the auto-increment in the outer loop. */
-         i--;
-         break;
-
-       case '{': // Skip '{' and '}'
-       case '}':
-         break;
-
-       default:
-         Box b = get_ascii_char ((unsigned char)text[i]);
-
-         /* Use the width of 'x' for unknown characters */
-         if (b[X_AXIS].length () == 0)
-           b = get_ascii_char ((unsigned char)'x');
-
-         w += b[X_AXIS].length ();
-         ydims.unite (b[Y_AXIS]);
-         break;
-       }
-    }
-
-  if (ydims.is_empty ())
-    ydims = Interval (0, 0);
-
-  return Box (Interval (0, w), ydims);
-}
-
 Stencil
 Modified_font_metric::text_stencil (string text) const
 {
@@ -179,25 +122,8 @@ Modified_font_metric::text_stencil (string text) const
 Box
 Modified_font_metric::text_dimension (string text) const
 {
-  SCM stext = ly_string2scm (text);
-  
   Box b;
-  if (get_output_backend_name () == "tex")
-    {
-      b = lookup_tex_text_dimension (orig_, stext);
-
-      if (!b[Y_AXIS].is_empty ())
-       {
-         b.scale (magnification_);
-         return b;
-       }
-
-      b = tex_kludge (text);
-      return b;
-    }
-
   Interval ydims;
-
   Real w = 0.0;
 
   for (ssize i = 0; i < text.length (); i++)
diff --git a/lily/text-metrics.cc b/lily/text-metrics.cc
deleted file mode 100644 (file)
index b4ebd82..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
-  text-metrics.cc -- implement text metric lookup functions
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2004--2008 Han-Wen Nienhuys <hanwen@xs4all.nl>
-*/
-
-#include "dimensions.hh"
-#include "font-metric.hh"
-#include "main.hh"
-#include "file-path.hh"
-
-static SCM text_dimension_hash_tab;
-
-Box
-lookup_tex_text_dimension (Font_metric *font, SCM text)
-{
-  Box b;
-
-  /*
-    Actually, it's defined in framework-texstr, but let's see how long
-    it takes before we get a bugreport. HWN 13/2/2006.
-   */
-  SCM limit = ly_lily_module_constant ("TEX_STRING_HASHLIMIT");
-  string key_str = ly_scm2string (font->font_file_name ());
-  int hash_code = scm_to_int (scm_hash (text, limit));
-  key_str = to_string (hash_code) + key_str;
-
-  SCM val = SCM_BOOL_F;
-  if (text_dimension_hash_tab)
-    {
-      scm_hash_ref (text_dimension_hash_tab,
-                   ly_string2scm (key_str),
-                   SCM_BOOL_F);
-    }
-  if (scm_is_pair (val))
-    {
-      b[X_AXIS][LEFT] = 0.0;
-      b[X_AXIS][RIGHT] = scm_to_double (scm_car (val)) * point_constant;
-      val = scm_cdr (val);
-      b[Y_AXIS][UP] = scm_to_double (scm_car (val)) * point_constant;
-      val = scm_cdr (val);
-      b[Y_AXIS][DOWN] = scm_to_double (scm_car (val)) * point_constant;
-    }
-
-  return b;
-}
-
-LY_DEFINE (ly_load_text_dimensions, "ly:load-text-dimensions",
-          1, 0, 0,
-          (SCM dimension_alist),
-          "Load dimensions from @TeX{} in a @code{(KEY . (W H D))} format"
-          " alist.")
-{
-  if (!text_dimension_hash_tab)
-    {
-      text_dimension_hash_tab
-       = scm_gc_protect_object (scm_c_make_hash_table (113));
-    }
-
-  for (SCM s = dimension_alist;
-       scm_is_pair (s);
-       s = scm_cdr (s))
-    {
-      SCM key = scm_caar (s);
-      SCM val = scm_cdar (s);
-
-      if (scm_hash_ref (text_dimension_hash_tab, key, SCM_BOOL_F)
-         == SCM_BOOL_F)
-       scm_hash_set_x (text_dimension_hash_tab, key, val);
-    }
-
-  return SCM_UNSPECIFIED;
-}
-
-void
-try_load_text_metrics (string basename)
-{
-  string path = global_path.find (basename + ".textmetrics");
-  if (path != "")
-    {
-      string contents (gulp_file_to_string (path, true, -1));
-      contents = "(quote (" + contents + "))";
-
-      SCM lst = scm_c_eval_string (contents.c_str ());
-      ly_load_text_dimensions (lst);
-    }
-}
index 67839f9c6c5695869bc39438f08184b901e03416..cac75ecb73330db4b7195c6342816c9899bd5fcf 100644 (file)
@@ -2,21 +2,17 @@
 #(use-modules (scm layout-page-layout))
 \paper {
 
-    %%%% WARNING
-
-    %%% if you  add any new dimensions, don't forget to update
-    %%% the dimension-variables variable. see paper.scm
+    %%% WARNING
+    %%%
+    %%% If you add any new dimensions, don't forget to update
+    %%% the dimension-variables variable.  See paper.scm.
     
     unit = #(ly:unit)
     mm = 1.0
     in = 25.4
-    pt = #(/  in 72.27)
+    pt = #(/ in 72.27)
     cm = #(* 10 mm)
 
-    %% This is weird; `everyone' uses LATIN1?  How does I select TeX
-    %% input encoding in EMACS? -- jcn
-    %%%%input-encoding = #"TeX"
-    input-encoding = #"latin1"
     print-page-number = ##t
 
     %%
     #(define font-defaults
       '((font-encoding . fetaMusic)))
 
-    %% use lmodern in latin1 (cork) flavour if EC is not available.
+    %%
+    %% the font encoding `latin1' is a dummy value for Pango fonts
+    %%
     #(define text-font-defaults
-      `((font-encoding .
-        ,(cond
-          (tex-backend? 'Extended-TeX-Font-Encoding---Latin)
-          (else 'latin1)))
-       ;; add to taste here.
-       
+      `((font-encoding . latin1)
        (baseline-skip . 3)
        (word-space . 0.6)))
 
index 9679d3050a6bdea3dcaca18b5ec0e50a5429c99e..fe7467aca255712b0739804dc64f860577e7519f 100644 (file)
@@ -7,9 +7,9 @@
 % (c) 1997--2008 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %          Jan Nieuwenhuizen <janneke@gnu.org>
 %
-% these macros help create ascii logging output
-% to automate generation of lily tables and tex backend
-% The output should be parsed by the mf-to-table script
+% These macros help create ascii logging output
+% to automate generation of the lily tables.
+% The output should be parsed by the mf-to-table script.
 
 
 message "******************************************************";
index c6f4423615f8f4ea1715b3400e9f1695c3594f28..762657508449c1ef4cff795575fc9be9dc26f26b 100644 (file)
@@ -59,11 +59,6 @@ bind def
   b4_Inc_state restore
 } bind def 
 
-/set_tex_dimen
-{
-       cvr def
-} bind def
-
 /stroke_and_fill {
        gsave
                stroke
index 0785386f45c9daa47b7baa71e4c36bc70d847f17..67f66598300e19dc84c537bae6a680a9dca4d44b 100644 (file)
       (set! formats (cons "ps" formats)))
   (for-each (lambda (x)
              (if (member x formats) (set! new-fmts (cons x new-fmts))))
-           '("tex" "dvi" "ps" "pdf" "png"))
+           '("ps" "pdf" "png"))
   (uniq-list (reverse new-fmts)))
 
 (define (header-to-file file-name key value)
index 3961e166709e02cd65b38aada548ae222361f704..311faf463ed8613cc77127a49434b78cd85f8f74 100644 (file)
@@ -466,30 +466,8 @@ Inline an EPS image.  The image is scaled along @var{axis} to
   ()
   "
 @cindex inserting PostScript directly into text
-
 This inserts @var{str} directly into the output as a PostScript
-command string.  Due to technicalities of the output backends,
-different scales should be used for the @TeX{} and PostScript backend,
-selected with @code{-f}. 
-
-For the @TeX{} backend, the following string prints a rotated text
-
-@example
-0 0 moveto /ecrm10 findfont 
-1.75 scalefont setfont 90 rotate (hello) show
-@end example
-
-@noindent
-The magical constant 1.75 scales from LilyPond units (staff spaces) to
-@TeX{} dimensions.
-
-For the postscript backend, use the following
-
-@example
-gsave /ecrm10 findfont 
- 10.0 output-scale div 
- scalefont setfont 90 rotate (hello) show grestore 
-@end example
+command string.
 
 @lilypond[verbatim,quote]
 eyeglassesps = #\"
index 39733c37ce0a3630e1482eaa1f3169c208b4052c..66659a902d71ecf72f9739de644edccd6a605f68 100644 (file)
@@ -46,7 +46,7 @@
 ;; TODO:
 ;;  - generate this list by registering the output-backend-commands
 ;;    output-backend-commands should have docstrings.
-;;  - remove hard copies in output-ps output-tex
+;;  - remove hard copies in output-ps
 
 (define-public (ly:all-output-backend-commands)
   "Return list of output backend commands."
index cff610e8d3b623481295b91e606a9d5598d904d2..4983874048c50485fdfc199859dff280f49be967 100644 (file)
@@ -163,7 +163,3 @@ stencil, so LaTeX includegraphics doesn't fuck up the alignment."
 (define convert-to-pdf convert-to-pdf)
 (define convert-to-ps convert-to-ps)
 (define convert-to-png convert-to-png)
-(define convert-to-tex convert-to-tex)
-(define convert-to-dvi convert-to-dvi)
-
-
index a035dc9b927049226604c7d545402455011cde90..a552b5e7076bd0a7f4d49ce5ffeca48621bd8f1c 100644 (file)
@@ -23,5 +23,3 @@
 (define-public (convert-to-ps . args) #t)
 (define-public (convert-to-pdf . args) #t)
 (define-public (convert-to-png . args) #t)
-(define-public (convert-to-dvi . args) #t)
-(define-public (convert-to-tex . args) #t)
index d6bf44eff2bde58008ce6ad70a2a64501e3f576e..58026ff726c0c7472b6374c538e708dca32b0f38 100644 (file)
        "%" "_" name)))
      "m" (string-encode-integer (inexact->exact (round (* 1000 magnify)))))))
 
-(define (tex-font? fontname)
-  (or
-   (equal? (substring fontname 0 2) "cm")
-   (equal? (substring fontname 0 2) "ec")))
-
 (define (define-fonts paper)
   (define font-list (ly:paper-fonts paper))
   (define (define-font command fontname scaling)
                     (* paper-height output-scale (/ (ly:bp 1)))
                     name)))
 
-(define-public (convert-to-dvi book name)
-  (ly:warning (_ "cannot generate ~S using the postscript back-end") "DVI"))
-
-(define-public (convert-to-tex book name)
-  (ly:warning (_ "cannot generate ~S using the postscript back-end") "TeX"))
-
 (define-public (convert-to-ps book name)
   #t)
 
index 53905e087dcf56f6f93b1b94680c8b51d8feb8a0..5cb3a67490f43e9013375ea6964e34acf87f4ad0 100644 (file)
@@ -34,5 +34,3 @@
 (define-public (convert-to-ps . args) #t)
 (define-public (convert-to-pdf . args) #t)
 (define-public (convert-to-png . args) #t)
-(define-public (convert-to-dvi . args) #t)
-(define-public (convert-to-tex . args) #t)
index 45cbfb96397f40ac2636d5ddbf087b8855ff7b4f..69b48db8a15788d651a0da6cdb05359be2c48734 100644 (file)
@@ -33,5 +33,3 @@
 (define-public (convert-to-ps . args) #t)
 (define-public (convert-to-pdf . args) #t)
 (define-public (convert-to-png . args) #t)
-(define-public (convert-to-dvi . args) #t)
-(define-public (convert-to-tex . args) #t)
diff --git a/scm/framework-tex.scm b/scm/framework-tex.scm
deleted file mode 100644 (file)
index 5a602e4..0000000
+++ /dev/null
@@ -1,380 +0,0 @@
-;;;; framework-tex.scm -- structure for TeX output
-;;;;
-;;;; source file of the GNU LilyPond music typesetter
-;;;;
-;;;; (c) 2004--2008 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
-(define-module (scm framework-tex)
-  #:export (output-framework-tex       
-           output-classic-framework-tex))
-
-(use-modules (ice-9 regex)
-            (ice-9 string-fun)
-            (scm page)
-            (scm paper-system)
-            (guile)
-            (srfi srfi-1)
-            (srfi srfi-13)
-            (srfi srfi-14)
-            (scm kpathsea)
-            (lily))
-
-(define format ergonomic-simple-format)
-
-(define (output-formats)
-  (define formats (ly:output-formats))
-  (set! formats (completize-formats formats))
-  (if (member "ps" formats)
-      (set! formats (cons "dvi" formats)))
-  (if (member "dvi" formats)
-      (set! formats (cons "tex" formats)))
-
-  (uniq-list formats))
-
-(define framework-tex-module (current-module))
-(define-public (sanitize-tex-string s)
-  (if (ly:get-option 'safe)
-      (regexp-substitute/global
-       #f "\\\\"
-       (regexp-substitute/global #f "([{}])" s 'pre  "\\" 1 'post)
-       'pre "$\\backslash$" 'post)
-      s))
-
-(define (symbol->tex-key sym)
-  (regexp-substitute/global
-   #f "_" (sanitize-tex-string (symbol->string sym)) 'pre "X" 'post))
-
-(define (tex-number-def prefix key number)
-  (string-append
-   "\\def\\" prefix (symbol->tex-key key) "{" number "}%\n"))
-
-(define-public (digits->letters str)
-  (regexp-substitute/global
-   #f "[-\\._]"
-   (regexp-substitute/global
-    #f "([0-9])" str
-    'pre
-    (lambda (match)
-      (make-string
-       1
-       (integer->char
-       (+ (char->integer #\A)
-          (- (char->integer #\0))
-          (char->integer (string-ref (match:substring match 1) 0)))
-       )))
-    'post)
-   'pre ""
-   'post))
-
-(define-public (tex-font-command-raw name magnification)
-  (string-append
-   "magfont"
-   (digits->letters (format "~a" name))
-   "m"
-   (string-encode-integer
-    (inexact->exact (round (* 1000 magnification))))))
-
-(define-public (tex-font-command font)
-  (tex-font-command-raw
-   (ly:font-file-name font) (ly:font-magnification font)))
-
-(define (otf-font-load-command paper font)
-  (let* ((sub-fonts (ly:font-sub-fonts font)))
-    (string-append
-     (apply string-append
-           (map
-            (lambda (sub-name)
-              (format "\\font\\~a=~a scaled ~a%\n"
-                      (tex-font-command-raw
-                       sub-name (ly:font-magnification font))
-                      sub-name
-                      (ly:number->string
-                       (inexact->exact
-                        (round (* 1000
-                                  (ly:font-magnification font)
-                                  (ly:paper-output-scale paper)))))))
-            sub-fonts)))))
-
-(define (simple-font-load-command paper font)
-   (format
-    "\\font\\~a=~a scaled ~a%\n"
-    (tex-font-command font)
-    (ly:font-file-name font)
-    (inexact->exact
-     (round (* 1000
-              (ly:font-magnification font)
-              (ly:paper-output-scale paper))))))
-
-(define (font-load-command paper font)
-  (if (pair? (ly:font-sub-fonts font))
-      (otf-font-load-command paper font)
-      (simple-font-load-command paper font)))
-
-(define (define-fonts paper)
-  (string-append
-   ;; UGH. FIXME.
-   "\\def\\lilypondpaperunit{mm}%\n"
-   (tex-number-def "lilypondpaper" 'output-scale
-                  (number->string (exact->inexact
-                                   (ly:paper-output-scale paper))))
-   (tex-string-def "lilypondpaper" 'papersize
-                  (eval 'papersizename (ly:output-def-scope paper)))
-   ;; paper/layout?
-   (tex-string-def "lilypondpaper" 'input-encoding
-                  (eval 'input-encoding (ly:output-def-scope paper)))
-
-   (apply string-append
-         (map (lambda (x) (font-load-command paper x))
-              (ly:paper-fonts paper)))))
-
-(define (tex-string-def prefix key str)
-  (if (equal? "" (sans-surrounding-whitespace (sanitize-tex-string str)))
-      (string-append "\\let\\" prefix (symbol->tex-key key) "\\undefined%\n")
-      (string-append "\\def\\" prefix (symbol->tex-key key)
-                    "{" (sanitize-tex-string str) "}%\n")))
-
-(define (header paper page-count classic?)
-  (let ((scale (ly:output-def-lookup paper 'output-scale))
-       (texpaper (string-append
-                  (ly:output-def-lookup paper 'papersizename)
-                  "paper"))
-       (landscape? (eq? #t (ly:output-def-lookup paper 'landscape))))
-    (string-append
-     "% Generated by LilyPond "
-     (lilypond-version) "\n"
-     "% at " "time-stamp,FIXME" "\n"
-     (if classic?
-        (tex-string-def "lilypond" 'classic "1")
-        "")
-
-     (if (ly:get-option 'safe)
-        "\\nofiles\n"
-        "")
-
-     (tex-string-def
-      "lilypondpaper" 'line-width
-      (ly:number->string (* scale (ly:output-def-lookup paper 'line-width))))
-     "\\def\\lilyponddocumentclassoptions{"
-     (sanitize-tex-string texpaper)
-     (if landscape? ",landscape" "")
-     "}%\n"
-     )))
-
-(define (header-end)
-  (string-append
-   "\\def\\scaletounit{ "
-   (number->string lily-unit->bigpoint-factor)
-   " mul }%\n"
-   "\\ifx\\lilypondstart\\undefined\n"
-   "  \\input lilyponddefs\n"
-   "\\fi\n"
-   "\\lilypondstart\n"
-   "\\lilypondspecial\n"
-   "\\lilypondpostscript\n"))
-
-(define (dump-page putter page last? with-extents?)
-  (ly:outputter-dump-string
-   putter
-   (format "\\lybox{~a}{~a}{%\n"
-          (if with-extents?
-              (interval-start (ly:stencil-extent page X))
-              0.0)
-          (if with-extents?
-              (- (interval-start (ly:stencil-extent page Y)))
-              0.0)))
-  (ly:outputter-dump-stencil putter page)
-  (ly:outputter-dump-string
-   putter
-   (if last?
-       "}%\n\\vfill\n"
-       "}%\n\\vfill\n\\lilypondpagebreak\n")))
-
-(define-public (output-framework basename book scopes fields)
-  (let* ((filename (format "~a.tex" basename))
-        (outputter  (ly:make-paper-outputter (open-file filename "wb") 'tex))
-        (paper (ly:paper-book-paper book))
-        (page-stencils (map page-stencil (ly:paper-book-pages book)))
-        (last-page (car (last-pair pages)))
-        (with-extents
-         (eq? #t (ly:output-def-lookup paper 'dump-extents))))
-    (for-each
-     (lambda (x)
-       (ly:outputter-dump-string outputter x))
-     (list
-      (header paper (length page-stencils) #f)
-      (define-fonts paper)
-      (header-end)))
-    (ly:outputter-dump-string outputter "\\lilypondnopagebreak\n")
-    (for-each
-     (lambda (page)
-       (dump-page outputter page (eq? last-page page) with-extents))
-     page-stencils)
-    (ly:outputter-dump-string outputter "\\lilypondend\n")
-    (ly:outputter-close outputter)
-    (postprocess-output book framework-tex-module filename
-                       (output-formats))))
-
-(define (dump-line putter line last?)
-  (ly:outputter-dump-string
-   putter
-   (format "\\lybox{~a}{~a}{%\n"
-          (ly:number->string
-           (max 0 (interval-end (paper-system-extent line X))))
-          (ly:number->string
-           (interval-length (paper-system-extent line Y)))))
-
-  (ly:outputter-dump-stencil putter (paper-system-stencil line))
-  (ly:outputter-dump-string
-   putter
-   (if last?
-       "}%\n"
-       "}\\interscoreline\n")))
-
-(define-public (output-classic-framework
-               basename book scopes fields)
-  (let* ((filename (format "~a.tex" basename))
-        (outputter  (ly:make-paper-outputter
-                     (open-file filename "w") 'tex))
-        (paper (ly:paper-book-paper book))
-        (lines (ly:paper-book-systems book))
-        (last-line (car (last-pair lines))))
-    (for-each
-     (lambda (x)
-       (ly:outputter-dump-string outputter x))
-     (list
-      ;;FIXME
-      (header paper (length lines) #f)
-      "\\def\\lilypondclassic{1}%\n"
-      (output-scopes scopes fields basename)
-      (define-fonts paper)
-      (header-end)))
-
-    (for-each
-     (lambda (line) (dump-line outputter line (eq? line last-line))) lines)
-    (ly:outputter-dump-string outputter "\\lilypondend\n")
-    (ly:outputter-close outputter)
-    (postprocess-output book framework-tex-module filename
-                       (output-formats))
-    ))
-
-(define-public (output-preview-framework
-               basename book scopes fields)
-  (let* ((filename (format "~a.tex" basename))
-        (outputter  (ly:make-paper-outputter (open-file filename "wb")
-                                             'tex))
-        (paper (ly:paper-book-paper book))
-        (lines (ly:paper-book-systems book))
-        (first-notes-index (list-index
-                            (lambda (s) (not (ly:paper-system-title? s)))
-                            lines)))
-
-    (for-each
-     (lambda (x)
-       (ly:outputter-dump-string outputter x))
-     (list
-      
-      ;;FIXME
-      (header paper (length lines) #f)
-      "\\def\\lilypondclassic{1}%\n"
-      (output-scopes scopes fields basename)
-      (define-fonts paper)
-      (header-end)))
-
-    (for-each
-     (lambda (lst)
-       (dump-line outputter lst (not (ly:paper-system-title? lst))))
-     (take lines (1+ first-notes-index)))
-    (ly:outputter-dump-string outputter "\\lilypondend\n")
-    (ly:outputter-close outputter)
-    (postprocess-output book framework-tex-module filename
-                       (output-formats))))
-
-(define-public (convert-to-pdf book name)
-  (let* ((defs (ly:paper-book-paper book))
-        (paper-width (ly:output-def-lookup defs 'paper-width))
-        (paper-height (ly:output-def-lookup defs 'paper-height))
-        (output-scale (ly:output-def-lookup defs 'output-scale)))
-    (postscript->pdf (* paper-width output-scale (/ (ly:bp 1)))
-                    (* paper-height output-scale (/ (ly:bp 1)))
-                    (string-append (dir-basename name ".tex") ".ps"))))
-
-(define-public (convert-to-png book name)
-  (let* ((defs (ly:paper-book-paper book))
-        (resolution (ly:output-def-lookup defs 'pngresolution))
-        (paper-width (ly:output-def-lookup defs 'paper-width))
-        (paper-height (ly:output-def-lookup defs 'paper-height))
-        (output-scale (ly:output-def-lookup defs 'output-scale)))
-    (postscript->png
-     (if (number? resolution)
-        resolution
-        (ly:get-option 'resolution))
-
-     (* paper-width output-scale (/ (ly:bp 1)))
-     (* paper-height output-scale (/ (ly:bp 1)))
-
-     (string-append (dir-basename name ".tex") ".ps"))))
-
-(define-public (convert-to-ps book name)
-  (let* ((paper (ly:paper-book-paper book))
-        (preview? (string-contains name ".preview"))
-        (papersizename (ly:output-def-lookup paper 'papersizename))
-        (landscape? (eq? #t (ly:output-def-lookup paper 'landscape)))
-        (base (dir-basename name ".tex"))
-        (ps-name (format "~a.ps"  base ".ps"))
-        (cmd (string-append "dvips"
-                            (if preview?
-                                " -E"
-                                (string-append
-                                 " -t"
-                                 ;; careful: papersizename is user-set.
-                                 (sanitize-command-option papersizename)
-                                 ""))
-                            (if landscape? " -tlandscape" "")
-                            (if (ly:kpathsea-find-file "lm.map")
-                                " -u+lm.map" "")
-                            (if (ly:kpathsea-find-file "ecrm10.pfa")
-                                " -u+ec-mftrace.map" "")
-                            " -u+lilypond.map -Ppdf" ""
-                            " -o" ps-name
-                            " " base)))
-    (if (access? ps-name W_OK)
-       (delete-file ps-name))
-    (if (not (ly:get-option 'verbose))
-       (begin
-         (ly:message (_ "Converting to `~a'...") (string-append base ".ps"))
-         (ly:progress "\n")))
-    (ly:system cmd)))
-
-(define-public (convert-to-dvi book name)
-  (let* ((curr-extra-mem
-         (string->number
-          (regexp-substitute/global
-           #f " *%.*\n?"
-           (ly:kpathsea-expand-variable "extra_mem_top")
-           'pre "" 'post)))
-        (base (dir-basename name ".tex"))
-        (cmd (format
-              #f "latex \\\\nonstopmode \\\\input '~a'" name)))
-
-    ;; FIXME: latex 'foo bar' works, but \input 'foe bar' does not?
-    (if (string-index name (char-set #\space #\ht #\newline #\cr))
-       (ly:error (_"TeX file name must not contain whitespace: `~a'") name))
-
-    (setenv "extra_mem_top" (number->string (max curr-extra-mem 1024000)))
-    (let ((dvi-name (string-append base ".dvi")))
-      (if (access? dvi-name W_OK)
-         (delete-file dvi-name)))
-    (if (not (ly:get-option 'verbose))
-       (begin
-         (ly:message (_ "Converting to `~a'...") (string-append base ".dvi"))
-         (ly:progress "\n")))
-
-    ;; FIXME: set in environment?
-    (if (ly:get-option 'safe)
-       (set! cmd (string-append "openout_any=p " cmd)))
-
-    (ly:system cmd)))
-
-(define-public (convert-to-tex book name)
-  #t)
-
diff --git a/scm/framework-texstr.scm b/scm/framework-texstr.scm
deleted file mode 100644 (file)
index 0fec9f9..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-;;;; framework-tex.scm --
-;;;;
-;;;;  source file of the GNU LilyPond music typesetter
-;;;;
-;;;; (c) 2004--2008 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
-(define-module (scm framework-texstr)
-  #:export (output-framework-tex       
-           output-classic-framework-tex))
-
-(use-modules (ice-9 regex)
-            (scm paper-system)
-            (ice-9 string-fun)
-            (guile)
-            (srfi srfi-1)
-            (srfi srfi-13)
-            (lily))
-
-(define format ergonomic-simple-format)
-
-(define (header filename)
-  (format  "% header
-\\input{lilypond-tex-metrics}
-\\documentclass{article}
-\\lilyglobalscale{1.0}
-\\lilymetricsfile{~a.textmetrics}
-\\begin{document}
-" filename))
-
-(define (footer)
-  "
-\\end{document}
-")
-
-(define-public (output-classic-framework basename book scopes fields)
-  (let* ((filename (format #f "~a.texstr" basename))
-        (outputter (ly:make-paper-outputter
-                    (open-file filename "wb")
-                    (ly:get-option 'backend)))
-        (paper (ly:paper-book-paper book))
-        (lines (ly:paper-book-systems book)))
-    (ly:outputter-dump-string outputter (header basename))
-    (for-each
-     (lambda (system)
-       (ly:outputter-dump-stencil outputter (paper-system-stencil system)))
-     lines)
-    (ly:outputter-dump-string outputter (footer))))
-
-(define-public (output-framework basename book scopes fields )
-  (let* ((filename (format #f "~a.texstr" basename))
-        (outputter
-         (ly:make-paper-outputter
-          (open-file filename "wb")
-          (ly:get-option 'backend)))
-        (paper (ly:paper-book-paper book))
-        (pages (ly:paper-book-pages book)))
-    (ly:outputter-dump-string outputter (header basename))
-    (for-each
-     (lambda (page)
-       (ly:outputter-dump-stencil outputter page))
-     pages)
-    (ly:outputter-dump-string outputter (footer))))
-
-(define-public (convert-to-ps . args) #t)
-(define-public (convert-to-pdf . args) #t)
-(define-public (convert-to-png . args) #t)
-(define-public (convert-to-dvi . args) #t)
-(define-public (convert-to-tex . args) #t)
index c9914981a821f467254c3379e48b4e2cd7db85c0..7122ac3694be6d2fbd11daa1bf83310a2d329ebd 100644 (file)
@@ -31,7 +31,7 @@
     ;; - [subject-]-verb-object-object
 
     (anti-alias-factor 1 "render at higher resolution and scale down result\nto prevent jaggies in PNG")
-    (backend ps "which backend to use by default; Options: eps, ps [default], scm, svg, tex, texstr)")
+    (backend ps "which backend to use by default; Options: eps, ps [default], scm, svg)")
     (check-internal-types #f "check every property assignment for types")
     (clip-systems #f "Generate cut-out snippets of a score")
     (datadir #f "LilyPond prefix for data files (Readonly).")
@@ -163,17 +163,9 @@ on errors, and print a stack trace.")
 (if (ly:get-option 'trace-scheme-coverage)
     (coverage:enable))
 
-(define-public tex-backend?
-  (member (ly:get-option 'backend) '(texstr tex)))
-
 (define-public parser #f)
 
 
-;; TeX C++ code actually hooks into TEX_STRING_HASHLIMIT 
-(define-public TEX_STRING_HASHLIMIT 10000000)
-
-
-
 ;; gettext wrapper for guile < 1.7.2
 (if (defined? 'gettext)
     (define-public _ gettext)
@@ -251,8 +243,6 @@ predicates. Print a message at LOCATION if any predicate failed."
 
 ;;(define-public (output-framework) (write "hello\n"))
 
-(define output-tex-module
-  (make-module 1021 (list (resolve-interface '(scm output-tex)))))
 (define output-ps-module
   (make-module 1021 (list (resolve-interface '(scm output-ps)))))
 
diff --git a/scm/output-tex.scm b/scm/output-tex.scm
deleted file mode 100644 (file)
index dc53b5a..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-;;;; tex.scm -- implement Scheme output routines for TeX
-;;;;
-;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
-;;;; (c) 1998--2008 Jan Nieuwenhuizen <janneke@gnu.org>
-;;;;                 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
-
-;; The public interface is tight.
-;; It has to be, because user-code is evalled with this module.
-
-;; ***It should also be clean, well defined, documented and reviewed***
-
-;; To be reasonably safe, you probably do not want to use the TeX
-;; backend anyway, but rather the PostScript backend.  You may want
-;; to run gs in a uml sandbox too.
-
-
-(define-module (scm output-tex)
-  #:re-export (quote)
-
-  ;; JUNK this -- see lily.scm: ly:all-output-backend-commands
-  #:export (unknown
-           blank
-           circle
-           dot
-           dashed-slur
-           named-glyph
-           dashed-line
-           comment
-           repeat-slash
-           placebox
-           bezier-sandwich
-           round-filled-box
-           text
-           setcolor
-           resetcolor
-           polygon
-           draw-line
-           no-origin
-           grob-cause))
-
-(use-modules (ice-9 regex)
-            (ice-9 string-fun)
-            (guile)
-            (srfi srfi-13)
-            (scm framework-tex)
-            (lily))
-
-
-
-;;;;;;;;
-;;;;;;;; DOCUMENT ME!
-;;;;;;;;
-
-
-(define (char font i)
-  (string-append "\\" (tex-font-command font)
-                "\\char" (ly:inexact->string i 10) " "))
-
-(define (unknown) 
-  "%\n\\unknown\n")
-
-(define (url-link url x y)
-  "")
-
-(define (blank)
-  "")
-
-(define (circle radius thick)
-  (embedded-ps (list 'circle radius thick)))
-
-(define (dot x y radius)
-  (embedded-ps (list 'dot x y radius)))
-
-(define (embedded-ps string)
-  (embedded-ps (list 'embedded-ps string)))
-
-(define (dashed-slur thick on off lst)
-  (embedded-ps (list 'dashed-slur thick on off `(quote ,lst))))
-
-(define (named-glyph font name)
-  (let* ((info (ly:otf-font-glyph-info font name))
-        (subfont (assoc-get 'subfont info))
-        (subidx  (assoc-get 'subfont-index info)))
-    
-    ;;(stderr "INFO: ~S\n" info)
-    ;;(stderr "FONT: ~S\n" font)
-    (if (and subfont subidx)
-       (string-append "\\" (tex-font-command-raw
-                            subfont
-                            (ly:font-magnification font))
-                      "\\char" (number->string subidx))
-
-       (begin
-         (ly:warning (_ "cannot find ~a in ~a" name font))
-         ""))))
-
-(define (dashed-line thick on off dx dy phase)
-  (embedded-ps (list 'dashed-line  thick on off dx dy phase)))
-
-(define (embedded-ps expr)
-  (let ((ps-string
-        (with-output-to-string
-          (lambda () (ps-output-expression expr (current-output-port))))))
-    (string-append "\\embeddedps{" ps-string "}")))
-
-(define (repeat-slash w a t)
-  (embedded-ps (list 'repeat-slash  w a t)))
-
-(define (number->dim x)
-  (string-append
-   ;;ugh ly:* in backend needs compatibility func for standalone output
-   (ly:number->string x) " \\output-scale "))
-
-(define (placebox x y s) 
-  (string-append
-   "\\lyitem{" (ly:number->string x) "}{" (ly:number->string y) "}{" s "}%\n"))
-
-(define (bezier-sandwich lst thick)
-  (embedded-ps (list 'bezier-sandwich `(quote ,lst) thick)))
-
-
-(define (round-filled-box x y width height blotdiam)
-  (embedded-ps (list 'round-filled-box  x y width height blotdiam)))
-
-(define (text font s)
-  (format #f
-   "\\hbox{\\~a{}~a}" (tex-font-command font)
-   (sanitize-tex-string s)))
-
-(define (setcolor r g b)
-  (string-append "\\color[rgb]{"
-  (number->string r) ", "
-  (number->string g) ", "
-  (number->string b) "}"))
-
-;; FIXME
-;; The PostScript backend saves the current color
-;; during setcolor and restores it during resetcolor.
-;; We don't do that here.
-(define (resetcolor)
-  (string-append "\\color[rgb]{0,0,0}\n"))
-
-(define (polygon points blot-diameter fill)
-  (embedded-ps (list 'polygon `(quote ,points) blot-diameter fill)))
-
-(define (draw-line thick fx fy tx ty)
-  (embedded-ps (list 'draw-line thick fx fy tx ty)))
-
-;; no-origin not yet supported by Xdvi
-(define (no-origin) "")
-
-
-(define-public (line-location  file line col)
-  "Print an input location, without column number ."
-  (string-append (number->string line) " " file))
-
-(define-public point-and-click #f)
-
-(define (grob-cause offset grob)
-  (define (line-column-location file line col)
-    "Print an input location, including column number ."
-    (string-append (number->string line) ":"
-                  (number->string col) " " file))
-
-  (if (procedure? point-and-click)
-      (let* ((cause (ly:grob-property grob 'cause))
-            (music-origin (if (ly:stream-event? cause)
-                              (ly:event-property cause 'origin)))
-            (location (if (ly:input-location? music-origin)
-                          (ly:input-file-line-column music-origin))))
-       (if (pair? location)
-            ;;; \\string ? 
-           (string-append "\\special{src:"
-                          (line-column-location location) "}")
-           ""))
-      ""))
diff --git a/scm/output-texstr.scm b/scm/output-texstr.scm
deleted file mode 100644 (file)
index 324b5b1..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-;;;; texstr.scm -- implement Scheme output routines for TeX strings
-;;;;
-;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
-;;;; (c) 2004--2008 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
-(define-module (scm output-texstr))
-(define this-module (current-module))
-
-(use-modules
- (guile)
- (ice-9 regex)
- (srfi srfi-13)
- (scm framework-tex)
- (lily))
-
-(define (dummy . foo) #f)
-
-(map (lambda (x) (module-define! this-module x dummy))
-     (ly:all-stencil-expressions))
-
-(define-public (grob-cause . x) "")
-(define-public (no-origin . x) "")
-(define-public (placebox
-               x y what)
-  (if (string? what)
-      what
-      ""))
-
-
-(define-public (text font str)
-  (call-with-output-string
-   (lambda (port)
-     (display (format "\\lilygetmetrics{~a~a}{~a}{1.0}{~a}\n"
-                     
-                     (hash str TEX_STRING_HASHLIMIT)
-                   (ly:font-file-name font)
-                   (ly:font-file-name font)
-                   (sanitize-tex-string str))
-             port)
-     )))
index 1879732834490180c566ae9bf4e89439c1cd2609..81f1fa78ce85095a8707f051bbfdcfc683647a63 100644 (file)
     (setm! 'text-font-size (* 12 factor))
     
     (setm! 'output-scale ss)
-    (setm! 'fonts
-                   (if tex-backend?
-                       (make-cmr-tree factor)
-                       (make-century-schoolbook-tree factor)))
+    (setm! 'fonts (make-century-schoolbook-tree factor))
     (setm! 'staff-height staff-height)
     (setm! 'staff-space ss)
 
diff --git a/tex/lily-ps-defs.tex b/tex/lily-ps-defs.tex
deleted file mode 100644 (file)
index 4a05f9d..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-%% lily-ps-defs.tex
-%%
-\edef\lilypsdefsELC{\the\endlinechar}%
-\endlinechar -1\relax
-
-%% Header info (macros/defs, etc) should go into a \special{! ... };
-%% note the ! sign.  See dvips.info for details.
-%%
-%% We protect punctuation characters with \string to avoid problems with
-%% language specific shorthands (e.g. `:' for French, `"' for German, etc.).
-
-\gdef\lilypondsetdimen#1{
-  \expandafter\gdef\csname #1ps\endcsname{}
-  \special{
-    \string!
-    /#1 (\csname #1\endcsname) set_tex_dimen}}
-
-\gdef\lilypondspace{ }
-
-\gdef\lilypondpostscript{
-  %% A document processed with lilypond-book can contain music fragments in
-  %% different sizes.  To reduce overhead, we define `lyscaleXXX' PS macros
-  %% only once.
-  \lilypondifundefined{lyscale\lilypondpaperoutputscale}
-    {\expandafter\gdef\csname lyscale\lilypondpaperoutputscale\endcsname{}
-     %% This sets CTM so that you get to the currentpoint
-     %% by executing a 0 0 moveto
-     \special{
-       \string!
-       /lyscale\lilypondpaperoutputscale
-         {\lilypondpaperoutputscale\lilypondspace\scaletounit %
-          dup scale} def}}
-    {}
-                      
-  \def\embeddedps##1{
-    \special{
-      \string"
-      lyscale\lilypondpaperoutputscale\lilypondspace ##1}}}
-
-\endlinechar \lilypsdefsELC
-\endinput
-
-%% end lily-ps-defs.tex
diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex
deleted file mode 100644 (file)
index a7b5a2b..0000000
+++ /dev/null
@@ -1,370 +0,0 @@
-%%% lilyponddefs.tex -- TeX macros for LilyPond output.
-%%%
-%%%  source file of the GNU LilyPond music typesetter
-%%% 
-%%% (c) 1998--2008 Jan Nieuwenhuizen <janneke@gnu.org>
-%%%                 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-%%%                 Mats Bengtsson <mats.bengtsson@s3.kth.se>
-%%%
-%%
-%% Avoid \par while reading this file.
-%%
-\edef\lilyponddefsELC{\the\endlinechar}%
-\endlinechar -1\relax
-
-%% This runs with plain TeX, LaTeX, pdftex, and texinfo.
-%%
-%% To avoid interferences, lilyponddefs.tex must be loaded within a group.
-%% It is loaded only once, so the definitions must be global.
-%%
-%% The overall structure of a file created by LilyPond is as follows:
-%%
-%%   <lilypond parameter definitions>
-%%   <font setup>
-%%   \ifx\lilypondstart \undefined
-%%     \input lilyponddefs
-%%   \fi
-%%   \lilypondstart
-%%   <note output>
-%%   \lilypondend
-
-%% A temporary variable.
-%%
-\newdimen\lytempdim
-
-%% The scaling factor for all dimensions.
-%%
-\newdimen\outputscale
-
-\long\gdef\lilypondfirst#1#2{#1}
-\long\gdef\lilypondsecond#1#2{#2}
-
-%% \lilypondundefined{xxx}{foo}{bar}
-%%
-%%   If `xxx' (without the leading backslash) is an undefined macro,
-%%   execute block `foo'.  Otherwise, execute block `bar'.  Based on
-%%   a similar macro from the LaTeX kernel.
-%%
-\gdef\lilypondifundefined#1{
-  \expandafter\ifx\csname#1\endcsname\relax
-    \expandafter\lilypondfirst
-  \else
-    \expandafter\lilypondsecond
-  \fi
-}
-
-%% Urgh.  LilyPond uses EC fonts, but texinfo is based on CM.  We thus
-%% have to handle T1 font encoding by ourselves; all manipulations are
-%% collected in the macro \lilypondECencoding.  Note that the following
-%% code only provides the texinfo interface, not complete access to all
-%% EC glyphs.
-%%
-%% All definitions are taken from texinfo or LaTeX (with modifications
-%% if necessary).
-%%
-\begingroup
-\catcode `\@=11\relax
-\gdef\lilypondECencoding{
-  \def\"##1{
-    {\accent4 ##1}}
-  \def\'##1{
-    {\accent1 ##1}}
-  \def\,##1{
-    {\leavevmode
-     \setbox\z@\hbox{##1}
-     \ifdim\ht\z@=1ex
-       \accent11 ##1
-     \else
-       {\ooalign{
-          \unhbox\z@
-          \crcr
-          \hidewidth
-          \char11
-          \hidewidth}}
-     \fi}}
-  \def\=##1{
-    {\accent9 ##1}}
-  \def\^##1{
-    {\accent2 ##1}}
-  \def\`##1{
-    {\accent0 ##1}}
-  \def\~##1{
-    {\accent3 ##1}}
-  \def\dotaccent##1{
-    {\accent10 ##1}}
-  \def\H##1{
-    {\accent5 ##1}}
-  \def\ringaccent##1{
-    {\accent6 ##1}}
-% \def\tieaccent##1{}        % unsupported: this is TS1
-  \def\u##1{
-    {\accent8 ##1}}
-  \def\ubaraccent##1{
-    {\o@lign{
-       \relax
-       ##1
-       \crcr
-       \hidewidth
-       \sh@ft{29}\vbox to.2ex{
-         \hbox{\char9}
-         \vss}
-       \hidewidth}}}
-  \def\udotaccent##1{
-    {\o@lign{
-       \relax
-       ##1
-       \crcr
-       \hidewidth
-       \sh@ft{10}.
-       \hidewidth}}}
-  \def\v##1{
-    {\accent7 ##1}}
-
-  \chardef\exclamdown=189
-  \chardef\questiondown=190
-
-  \def\aa{
-    \ringaccent{a}}
-  \def\AA{
-    \ringaccent{A}}
-  \chardef\AE=198
-  \chardef\ae=230
-  \chardef\ptexi=25
-  \chardef\j=26
-  \chardef\L=138
-  \chardef\l=170
-  \chardef\O=216
-  \chardef\o=248
-  \chardef\OE=215
-  \chardef\oe=247
-  \chardef\ss=255
-}
-\endgroup
-
-%% This macro provides the necessary setup to make the lilypond data
-%% work with plain TeX, LaTeX, and texinfo.
-%%
-%% The reason of using \begingroup and \endgroup is to make the macro \x
-%% immediately disappear after it has been executed.  Since we have \def
-%% within \def within \gdef, four hash signs (`#') are needed for
-%% parameters.
-%%
-%% \lilypondfontencoding is emitted by LilyPond to set the encoding of
-%% text strings.
-%%
-\gdef\lilypondstart{
-  \frenchspacing
-  \outputscale \lilypondpaperoutputscale\lilypondpaperunit
-
-  \begingroup
-  \catcode `\@=11\relax
-
-  %% \@nodocument is defined as \relax after `\begin{document}'
-  \lilypondifundefined{@nodocument}
-    {%% Either plain TeX or texinfo or not at the beginning of LaTeX input.
-     \def\x{
-       \endgroup
-
-       \def\lilypondfontencoding####1{
-         \lilypondECencoding}
-       \def\lilypondpagebreak{
-         \eject}
-       \def\lilypondnopagebreak{
-         \ifvmode
-           \penalty 10000\relax
-         \fi}}}
-
-    {%% LaTeX mode: Provide a complete preamble.
-     \def\x{
-       \endgroup
-
-       %% Indicate that we shall emit `\end{document}' while executing
-       %% \lilypondend.
-       \def\lilyponddocument{}
-
-       \def\lilypondfontencoding####1{
-         \fontencoding{####1}
-         \selectfont}
-       \def\lilypondpagebreak{
-         \newpage}
-       \def\lilypondnopagebreak{
-         \nopagebreak}
-
-       \documentclass[\lilyponddocumentclassoptions]{article}
-
-       %% As a safety guard, don't produce auxiliary files.
-       \nofiles
-
-       %% FIXME: workaround non-existent TeX.def.
-       \def\TeXdef{TeX}\ifx\TeXdef\lilypondpaperinputencoding
-         \usepackage[latin1]{inputenc}
-       \else
-         \usepackage[\lilypondpaperinputencoding]{inputenc}
-       \fi
-       \pagestyle{empty}
-
-       \usepackage{color}
-
-       \lilypondifundefined{lilypondclassic}
-         {%% If not in `classic' mode, undo LaTeX's page layout settings
-          %% since LilyPond does the layout by itself.
-          \topmargin-1in
-          \headheight0pt\headsep0pt
-          \oddsidemargin-1in
-          \evensidemargin\oddsidemargin}
-
-         {%% Otherwise center output horizontally, without changing the
-          %% vertical positioning.
-          \hsize\lilypondpaperlinewidth\lilypondpaperunit
-          \lytempdim \paperwidth
-          \advance\lytempdim -\the\hsize
-          \lytempdim 0.5\lytempdim
-          \advance\lytempdim -1in
-          \oddsidemargin \lytempdim
-          \evensidemargin \lytempdim}
-
-       \parindent 0pt
-
-       %% We can't directly say `\begin{document}' in this macro since
-       %% older versions of texinfo.tex define \begin as \outer; this
-       %% means that it causes an error if \begin is found within another
-       %% macro (even if the corresponding code will never be executed).
-       %% As a workaround we use \csname to call \begin.
-       \csname begin\endcsname{document}}}
-  \x}
-
-%% The opposite of \lilypondstart.
-%%
-\gdef\lilypondend{
-  %% Handle the `lastpagefill' parameter from the \layout block.
-  %% Ignore it if \lilypondbook is defined.
-  \lilypondifundefined{lilypondbook}
-    {\lilypondifundefined{lilypondpaperlastpagefill}
-       {\vskip 0pt plus\lilypondpaperinterscorelinefill00 fill}
-       {}}
-    {}
-
-  \begingroup
-  \lilypondifundefined{lilyponddocument}
-    {\def\x{
-       \endgroup}}
-    {\def\x{
-       \endgroup
-       \csname end\endcsname{document}}}
-  \x}
-
-%% Load the PostScript drawing routines.  This is done using \special.
-%% To avoid multiple inclusions, redefine \lilypondspecial to a no-op
-%% afterwards.
-%%
-\gdef\lilypondspecial{
-  \special{header=music-drawing-routines.ps}
-  \gdef\lilypondspecial{}}
-
-%% The most used macro in LilyPond output.  Put #3 into a zero-width box
-%% which is moved to the right by #1 (scaled by \outputscale) and moved
-%% up by #2 (also scaled by \outputscale).
-%%
-\gdef\lyitem#1#2#3{
-  \raise #2\outputscale \hbox to 0pt {
-    \kern #1\outputscale
-    #3
-    \hss}}
-
-%% All LilyPond music data is enclosed in this macro (as third argument).
-%% The data (which consists of boxes with zero width) gets an artificial
-%% width of #1 and a height of #2.  The resulting box is then centered
-%% vertically along the x-height of the current font.
-%%
-%% Parameters #1 and #2 are scaled by \outputscale.
-%%
-\gdef\lybox#1#2#3{
-  \lytempdim #2\outputscale
-  \lytempdim -0.5\lytempdim
-  \advance\lytempdim 1ex
-  \leavevmode
-  \raise \lytempdim \hbox to #1\outputscale {
-    %% Convert depth of #3 into height only.
-    \vbox to #2\outputscale {\hbox{#3}\vss}
-    \hss}}
-
-%% Produce a black bar (width #2, depth #3, height #4) with a vertical
-%% offset #1.  Everything is scaled by \outputscale.
-%%
-\gdef\lyvrule#1#2#3#4{
-  \kern#1\outputscale
-  \vrule width #2\outputscale depth #3\outputscale height #4\outputscale}
-
-%% FIXME: 'interscoreline' and 'lilypondPAPERinterscoreline
-%%
-\lilypondifundefined{lilypondpaperinterscorelinefill}
-  {\gdef\lilypondpaperinterscorelinefill{0}}
-  {\gdef\lilypondpaperinterscorelinefill{1}}
-
-%% Allow overriding of interscoreline, e.g., for LilyPond's --preview
-%%
-\lilypondifundefined{interscoreline}
-  {\lilypondifundefined{lilypondclassic}
-     {\gdef\interscoreline{}}
-     {\gdef\interscoreline{
-        \vskip\lilypondpaperinterscoreline\lilypondpaperunit
-        plus \lilypondpaperinterscorelinefill fill}}}
-  {}
-
-%% Include PostScript definitions (which are differently defined for
-%% TeX and pdfTeX).  This is loaded once only because the inputted files
-%% define \lilypondpostscript.
-%%
-%% (Don't remove the spaces after the arguments to \input!)
-%%
-%
-%% In teTeX-3.0, latex is actually pdfetex, and we need
-%% ifpdf.sty to determinine if we are really *tex or pdf*tex.
-%
-%% \input ifpdf.sty
-%
-%% However, ifpfd.sty is too smart for LilyPond, so we copy the
-%% logic here.  Using \input ifpdf.sty is a no-op when using latex,
-%% and the \ifpdf switch is needed before \documentclass, using
-%% \usepackage{ifpdf} is not an option.
-%
-\input lily-ps-defs 
-
-% barfs with texi 
-% Runaway argument?
-%{
-%! Forbidden control sequence found while scanning use of \lilypondfirst.
-%<inserted text>
-%                \par
-%<to be read again>
-%                   \newif
-%l.330   {\newif
-%               \ifpdf
-%?
-%
-%%
-%\lilypondifundefined{lilypondpostscript}
-%  {\newif\ifpdf
-%   \ifx\pdfoutput\undefined
-%   \else
-%     \ifx\pdfoutput\relax
-%     \else
-%       \ifcase\pdfoutput
-%       \else
-%         \pdftrue
-%       \fi
-%     \fi
-%   \fi
-%   \ifpdf
-%     {\input lily-pdf-defs }
-%   \else
-%     {\input lily-ps-defs }
-%   \fi}
-%  {}
-%
-%% Restore newline functionality (disabled to avoid \par).
-%%
-\endlinechar \lilyponddefsELC
-\endinput
-
-%% end lilyponddefs.tex