Deutsches Lilypond Forum (Archiv)
Allgemein => Fragen zu Funktionen => Thema gestartet von: Manuela am Montag, 24. Oktober 2016, 15:21
-
Hi,
vermutlich betrifft das nur Windows.
Wenn in einem Markup ein Doppel-f oder die Textfolge fl vorkommt, lässt sich dieser Text nicht über die Zwischenablage vom PDF in ein Textverarbeitungsprogramm kopieren.
\version "2.19.42"
\markup { doppel f:ff efel: fl }
Das erzeugt PDF mit Adobe Acrobat Reader geöffnet, Text markiert und in die Zwischenablage kopiert.
Und das kommt im Textbearbeitungsprogramm (OOO Writer) an:
doppel f:.. efel: #
Von anderen PDFs (z.B. der Dokumentation) kann ich Texte mit Doppel-f problemlos kopieren.
Hat jemand eine Idee, woran das liegen könnte bzw. ob es einen Workaround gibt (Escape-Zeichen z.B.)?
-
vermutlich betrifft das nur Windows.
Nein, das ist anscheinend abhängig vom PDF-Viewer; manche kopieren den eingegebenen Text, manche die angezeigten Ligaturen (ich nehme an, daß beide Informationen im PDF vorhanden sind). Bei mir (Linux Mint 17) geht das Kopieren aus evince (mitgelieferter PDF-Viewer) problemlos, acroread (Adobe Acrobat Reader) macht ähnliche Probleme wie bei dir:
doppel f: efel:
Welchen PDF-Viewer verwendest du denn?
Von anderen PDFs (z.B. der Dokumentation) kann ich Texte mit Doppel-f problemlos kopieren.
Die Dokumentation ist auch nicht in LilyPond gesetzt, sondern in TeX, vielleicht macht TeX was anders ;)
Edit: Ja, TeX (zumindest pdflatex und lualatex) macht was anders, da gehts auch mit evince und mit acroread auch nicht, aber das Ergebnis ist ein anderes: (pdflatex) bzw. nichts (lualatex).
-
Welchen PDF-Viewer verwendest du denn?
Acrobat Reader 7.0
Anscheinend hat Adobe die schlechteste Read-Engine, wirklich paradox...
-
Welchen PDF-Viewer verwendest du denn?
Acrobat Reader 7.0
Anscheinend hat Adobe die schlechteste Read-Engine, wirklich paradox...
Tja, ich hab hier Acrobat Reader 9.5.5 und der kanns eben auch nicht. Scheint so, als müßtest du nen anderen Viewer verwenden, um Text zu kopieren. Aber wofür brauchst du das überhaupt?
-
Tja, ich hab hier Acrobat Reader 9.5.5 und der kanns eben auch nicht. Scheint so, als müßtest du nen anderen Viewer verwenden, um Text zu kopieren. Aber wofür brauchst du das überhaupt?
Ich kopiere das Inhaltsverzeichnis aus dem PDF in eine Textdatei und kann sie anschließend nach Belieben formatieren, 2spaltig etc.
Geht wahrscheinlich mit Lilypond auch, aber dafür bräuchte ich ein Jahrtausend, um das rauszufinden ;)
-
Ich kopiere das Inhaltsverzeichnis aus dem PDF in eine Textdatei und kann sie anschließend nach Belieben formatieren, 2spaltig etc.
Was willst Du erreichen?
Andere Formatierung innerhalb eines lilypond-book
oder
das Inhaltsverzeichnis exportieren um es anderweitig zu verwenden?
Die erste Möglichkeit ist natürlich machbar.
Die zweite aber auch. Gibt schon fertigen Code dafür:
http://lilypond.org/doc/v2.19/Documentation/usage/sharing-the-table-of-contents (http://lilypond.org/doc/v2.19/Documentation/usage/sharing-the-table-of-contents)
Gruß,
Harm
-
das Inhaltsverzeichnis exportieren um es anderweitig zu verwenden?
Die erste Möglichkeit ist natürlich machbar.
Die zweite aber auch. Gibt schon fertigen Code dafür:
http://lilypond.org/doc/v2.19/Documentation/usage/sharing-the-table-of-contents (http://lilypond.org/doc/v2.19/Documentation/usage/sharing-the-table-of-contents)
Genau das will ich, das Inhaltsverzeichnis als Text exportieren.
Jetzt müsste ich nur noch wissen, wie ich diesen Code in eine Textdatei ummünzen kann ;)
Ich nehme an, irgendwie muss ich den Output in eine Datei umlenken. Ich habe folgendes gefunden:
#(with-output-to-file "display.txt"
(lambda () #{ \displayMusic {
c
4\f
} #}))
schaffe es aber nicht, das mit dem Code zu verknüpfen.
-
Es wird automatisch ein file ausgegeben. Es trägt den Namen "file.toc", wobei file der Name des files ist in dem dieser code angwendet wird.
Der Code stammt ursprünglich von Rainhold Kainhofer, der ihn seinen Bedürfnissen angepasst hatte und war dann lange in Vergessenheit geraten.
Man kann ihn natürlich neu anpassen, hier ein volles Beispiel, mit klitze-kleinen Veränderungen:
\version "2.18.2"
#(define (oly:create-toc-file layout pages)
(let* ((label-table (ly:output-def-lookup layout 'label-page-table)))
(if (not (null? label-table))
(let* ((format-line (lambda (toc-item)
(let* ((label (car toc-item))
(text (caddr toc-item))
(label-page (and (list? label-table)
(assoc label label-table)))
(page (and label-page (cdr label-page))))
;(format #f "~a, section, 1, {~a}, ~a" page text label)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(format #f "~a, ~a, ~a" page text label)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
)))
(formatted-toc-items (map format-line (toc-items)))
(whole-string (string-join formatted-toc-items ",\n"))
(output-name (ly:parser-output-name))
(outfilename (format "~a.toc" output-name))
(outfile (open-output-file outfilename)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(if (output-port? outfile)
(display "page, text, label\n" outfile))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(if (output-port? outfile)
(display whole-string outfile)
(ly:warning (_ "Unable to open output file ~a for the TOC information") outfilename))
(close-output-port outfile)))))
\paper {
#(define (page-post-process layout pages) (oly:create-toc-file layout pages))
}
{
\tocItem "auf Seite 1"
c'1
\pageBreak
\tocItem "auf Seite 2"
d'
\pageBreak
\tocItem "auf Seite 3"
e'
}
Wenn Du das als atest-40.ly abspeicherst und compilierst, so ensteht atest-40.pdf wie üblich sowie atest-40.toc im selben Ordner. Das zweite allerdings ohne Meldung im Terminal. Kann man natürlich auch haben, wenn gewünscht.
atest-40.toc hat dann folgenden Inhalt:
page, text, label
1, auf Seite 1, toc99,
2, auf Seite 2, toc100,
3, auf Seite 3, toc101
Was genau dahin geschrieben wird könnte natürlich ebenfalls noch angepasst werden.
Aber erstmal soweit, hth,
Harm
-
Danke Harm, wie immer ganz toll :) :) :)
Den Beitrag sollte man vll. in einen eigenen Thread auslagern, zwecks leichterer Auffindbarkeit.
Das *.toc habe ich entweder übersehen, oder es steht wegen der Verwendung von Frescobaldi irgendwo in einem temporären Ordner.
Mehr am Nachmittag, das Offline-Leben ruft ;)
-
Hier ist der Thread (https://liarchiv.joonet.de/index.php?topic=2410.0), ich denke, das Thema ist es wert :)
Auch wenn ich anscheinend der einzige Mensch auf der Welt bin, der auf dieses Problem gestoßen ist bzw. das Bedürfnis hat, das Inhaltsverzeichnis fernab von Lilypond zu formatieren ;)