• Willkommen im Forum „Archiviertes Lilypond Forum (2017)“.
 

Dies ist das Archiv des alten Forums (bis März 2017). Das aktuelle Forum ist unter lilypondforum.de zu finden.
This is the archive of the old forum (until March 2017). You can find the current forum at lilypondforum.de.

Hauptmenü

Dateinamen automatisch ausgeben

Begonnen von amateur, Freitag, 3. Oktober 2014, 14:29

Vorheriges Thema - Nächstes Thema

amateur

Hallo,
ich möchte den Dateinamen automatisch mit ausdrucken, damit ich bei mehreren Versionen noch weiss, welche dem Druck entsprechen.
Ich habe versucht, dieses Snippet anzupassen:
http://lsr.di.unimi.it/LSR/Search?q=file&s=0&m=10
aber da muss ich endlos lang ausprobieren, damit der Dateiname vollständig dargestellt wird.
Ich bin auch kein "Scheme"-Programmierer.
Gibt es eine einfachere Lösung?
Danke

Lilipond Version 1.18.2 W7

Ich habe gerade gesehen, dass es offensichtlich an den Leerzeichen im Dateinamen liegt. Wenn diese weggelassen werden, wird der gesamte Pfad ausgedruckt.

Arnold

Hallo,

aus »Inkompatibilitätserfahrungen« vermeide ich sowieso Leerzeichen und nicht-7-Bit-ASCII-Zeichen im Dateinamen.
Ich stelle standardmäßig noch das letzte Unterverzeichnis zum Dateinamen in der Fußzeile dar, zusammen mit Lilypond-Version und Übersetzungsdatum.
Das Ganze sieht etwa so aus:
% Standards for paper definition
FootLeft = #(string-append "Music engraving by LILYPOND, Version " (lilypond-version))
FootRight = #(string-append "compiled at " (strftime "%Y-%m-%d %H:%M:%S" (localtime (current-time))))
FootCenter = #(let*
  ((cmdl (object->string (command-line)))
   (laloc (+ (string-rindex cmdl #\space) 2))
   (cmdlen (- (string-length cmdl) 2))
   (filen (substring cmdl laloc cmdlen))
   (workdir (getcwd))
   (basename (let ((ppos (string-rindex filen #\. )))
     (if (number? ppos) (substring filen 0 ppos) filen)))
   (lastdir (let*
     ((dpos (string-rindex workdir (string->char-set "\\/")))
      (laenge (string-length workdir)))
     (if (< (+ dpos 1) laenge) (string-append (substring workdir (+ dpos 1)) "/") "/"))))
  (string-append lastdir basename))

\paper {
  oddFooterMarkup = \markup \fill-line {
    \abs-fontsize #6.5 { \FootLeft }
    \abs-fontsize #9.0 { \bold { \FootCenter } }
    \abs-fontsize #6.5 { \FootRight }
  }
}
% EOF

Da meine Übersetzung immer im Arbeitsverzeichnis durchgeführt wird, bestimme ich workdir mittels (getcwd).
In vier Zeilen Code extrahiere ich den Namen des letzten Unterverzeichnisses in die Variable lastdir, und hänge gleich mit (string-append ...) einen Schrägstrich hintendran.
Mein FootCenter wird am Schluß durch (string-append lastdir basename) gebildet.

Ich hoffe, diese Beschreibung hilft dir weiter.

Arnold

DieTuba

Hallo, Arnold,
ich bin aktuell auf der Suche nach einer Möglichkeit, den Dateinamen der aktuellen ly-Datei in der Fußzeile zu verwenden. Dabei bin ich auf diesen Beitrag gestoßen und versuche nun, Deine Funktion so umzuschreiben, daß nur der Dateiname ohne irgendwelche Verzeichnisangaben ausgegeben wird. Leider ohne Erfolg, meine Programmierkenntnissse halten sich in sehr engen Grenzen! Kannst Du mir einen Tipp geben, wie das doch funktionieren kann.

Danke für Deine Hilfe!

DieTuba

Ach so, ich verwende Version 2.18.2 unter Windows.

harm6

Hallo,

Arnolds code beinhaltet zahlreiche Setzungen, ist somit auch etwas komplexer.

Den einfachen Dateinamen kriegt man auch via
(ly:parser-output-name parser)

z.B.:

\version "2.18.0"

\paper {
  oddFooterMarkup = \markup \fill-line { #(ly:parser-output-name parser) }
}

{ R1 }


HTH,
  Harm

DieTuba

Herzlichen Dank, Harm,
das hilft mir schon weiter.

DieTuba