Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Konflikt mit Composer Package für "opus4-bibtex" #63

Closed
j3nsch opened this issue Jul 3, 2023 · 10 comments · Fixed by #67
Closed

Konflikt mit Composer Package für "opus4-bibtex" #63

j3nsch opened this issue Jul 3, 2023 · 10 comments · Fixed by #67
Assignees
Labels
bug Something isn't working

Comments

@j3nsch
Copy link
Member

j3nsch commented Jul 3, 2023

Die BibTeX-Funktionalität ist zur Zeit gebrochen (Issue OPUS4/opus4-bibtex#63), weil es einen Konflikt zwischen den Composer Abhängigkeiten gibt. Für BibTeX wird ryakad/pandoc-php verwendet, für die PDF-Deckblätter ueberdosis/pandoc. Beide Packages definieren die Klasse Pandoc\Pandoc. Das ist bisher nicht aufgefallen, weil beide Package keine Unit Tests für die Integration in Application haben. Bei den Tests kommt dieser Konflikt also nicht zum Tragen.

@j3nsch j3nsch added the bug Something isn't working label Jul 3, 2023
@j3nsch j3nsch added this to OPUS 4.8.1 Jul 3, 2023
@j3nsch
Copy link
Member Author

j3nsch commented Jul 3, 2023

Das Ryakad-Package wurde seit 2015 nicht mehr aktualisiert. Es macht daher vermutlich eher Sinn im BibTeX Code umzusteigen. Dabei sollte die neueste Version verwendet werden. Momentan wird 0.7.0 verwendet. Es gibt mittlerweile 0.9.0. Für die Versionsangabe in composer.json wird zwar '^verwendet, aber so wie angegeben sind die Versionen auf0.7.x` beschränkt.

https://getcomposer.org/doc/articles/versions.md#caret-version-range-

@j3nsch
Copy link
Member Author

j3nsch commented Jul 3, 2023

Im BibTeX-Code ist das eine Abhängigkeit des BibTeX-Parsers. Dieser müsste also komplett ausgetauscht werden. Wofür genau wird Pandoc bei den PDF-Deckblättern verwendet?

@j3nsch
Copy link
Member Author

j3nsch commented Jul 3, 2023

Im Augenblick sehe ich keine gute Alternative zum verwendeten BibTeX-Parser. Es muss geschaut werden, ob die gleiche Pandoc-Library für den DefaultPdfGenerator ausreichend ist.

Die Instanzierung des 'Pandoc'-Objektes sollte dabei gleich in eine Funktion ausgelagert werden. Die generateFile Funktion enthält etwas viel Code.

@extracts
Copy link
Contributor

Ein weitere Alternative wäre es vielleicht, wenn der Autor des renanbr/bibtex-parser Pakets zukünftig ebenfalls ueberdosis/pandoc als Pandoc PHP Paket verwenden könnte. Die Verwendung von Pandoc innerhalb von renanbr/bibtex-parser ist minimal und könnte auch durch ueberdosis/pandoc bewerkstelligt werden. Ich habe dem Autor diesbezüglich eine Email geschrieben.

Wofür genau wird Pandoc bei den PDF-Deckblättern verwendet?

Pandoc wird in opus4pdf verwendet:

  1. zum Ersetzen der Platzhalter in der Markdown-Vorlage durch passende Dokument-Metadaten
  2. zum Konvertieren der in (1) generierten Markdown-Datei mittels XeTeX in eine PDF-Datei

Momentan erfordert dieser Prozess mindestens Pandoc in Version 2.11, welche in Pandoc Unterstützung für die --citeproc Option hinzufügt.

@extracts
Copy link
Contributor

Eine Komplikation bei der Verwendung des ryakad/pandoc-php Pakets in opus4pdf ist, dass ryakad/pandoc-php (soweit ich es sehen kann) keinen direkten Input von bereits existierenden Dateien erlaubt.

@extracts
Copy link
Contributor

Ein weitere Alternative wäre es vielleicht, wenn der Autor des renanbr/bibtex-parser Pakets zukünftig ebenfalls ueberdosis/pandoc als Pandoc PHP Paket verwenden könnte.

Einen potentiellen Lösungsansatz für das renanbr/bibtex-parser Paket habe ich hier beschrieben/umgesetzt:

renanbr/bibtex-parser#107
renanbr/bibtex-parser#108

extracts added a commit that referenced this issue Jul 14, 2023
@extracts
Copy link
Contributor

extracts commented Jul 14, 2023

Ich habe für opus4pdf im untenstehenden Branch (Commit e8e8bbb) versucht, ryakad/pandoc-php anstatt ueberdosis/pandoc zur Generierung von Markdown & PDF zu benutzen:

https://github.com/OPUS4/opus4-pdf/compare/issue63

Dabei gibt es zwei Probleme:

  1. Die Pandoc->runWith() Methode in ryakad/pandoc-php kann anscheinend nicht von Markdown zu Markdown konvertieren (was Pandoc selbst kann und was wir in opus4pdf nutzen, um die Platzhalter der Vorlage zu ersetzen)
  2. Mir ist nicht ersichtlich, wie man mit ryakad/pandoc-php mehrere Variablen (--variable=... --variable=...) übergeben kann. Dies nutzen wir in opus4pdf für die Angabe zweier Ordner (welche Bilder/Logos bzw. die Lizenzlogos enthalten)

@extracts
Copy link
Contributor

Mit den (noch zu veröffentlichenden) Änderungen für das renanbr/bibtex-parser Paket wird ueberdosis/pandoc als Pandoc-Wrapper bevorzugt, wenn es installiert ist. Statt ryakad/pandoc-php kann damit in Zukunft auch in opus4-bibtex das ueberdosis/pandoc Paket benutzt werden. Damit funktionieren sowohl die PDF-Deckblatt-Generierung als auch der BibTeX-Import.

@j3nsch
Copy link
Member Author

j3nsch commented Aug 23, 2023

Danke, das klingt gut. Bitte die notwendigen Änderungen an den composer.json Dateien vornehmen, wenn der Release der neuen Version des Parsers stattgefunden hat.

@extracts
Copy link
Contributor

renanbr/bibtex-parser v2.2.0 wurde heute veröffentlicht. Ich werde die Änderungen an den betroffenen composer.json Dateien vornehmen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

2 participants