C++-Programmierung/PDF Koordination

Aus Wikibooks
Zur Navigation springen Zur Suche springen

PDF[Bearbeiten]

Moin Prog, ich möchte ganz gerne eine PDF Version von dem C++ Buch machen. Für Assemblerprogrammierung und C Programmirung habe ich schon welche erstellt die du dir gerne als Referen z anschaunen kannst. Ich stosse bei deinem im Wesentlichen auf zwei Probleme. Ich weiß nicht welchen Inhalt ich übernehmen soll allein schon weil es zwei Inhaltsverzeichnisse. Es gibt in Wikibooks die möglich Druckversionen zu erstellen. Das sind keine pdfs sondern seiten die andere seiten so includieren wie der preprozessoer header files includiert. Es wäre schön wenn du eine seite Erstellen würdest. Die muss nicht schön sein sie muss nur alle Seiten includieren die nachher im PDF haben willst. Das kannst du in einer halben Stunde schaffen. Das andere Problem ist die Vorlagen mit denen du Quellcode eingebunden hast. Ich mein Programm so umschreiben das es mit Vorlagen klarkommt, nur finden dann die Bezeichnungen deiner Vorlagen Eingang in meinen Quellcode und das finde schlechten Stiel. Überleg die mal ob die normale einbindung mit dem source tag nicht auch reichen könnte. Die Änderungen würde ich für dich übernehmen. Gruß Dirk Huenniger 20:28, 19. Jun. 2009 (CEST)

Hi Dirk Huenniger, ich würde mich sehr über eine PDF-Version meines Buches freuen. Eine Druckversion wie du sie möchtest, habe ich vor einiger Zeit versucht zu erstellen. Leider sind die Limits für Wikibooks zu niedrig eingestellt, um die Seite zu parsen. (In einem lokal installieren MediaWiki, das eine Kopie meines Buches enthält, kann die Seite bei Anpassung der Limits höchstwahrscheinlich erstellt werden – getestet habe ich das allerdings noch nicht.)
Das Inhaltsverzeichnis, für das eine PDF-Version erstellt werden soll ist C++-Programmierung/ Inhaltsverzeichnis. Die Kapitel sind in verschiedene Abschnitte unterteilt. Du kannst wahlweise alle Kapitel einzeln parsen oder die Seiten, die oben rechts in jedem Abschnitt als „Gesamter Abschnitt“ verlinkt sind. Ob letztere Variante funktioniert, ist von der Arbeitsweise deines Programms abhängig, da diese Seiten natürlich auch nur „Druckversionen“ sind.
Steht dein Programm unter einer freien Lizenz? Wenn ja würde ich mir den Quellcode gerne mal ansehen. (Gibt es vielleicht eine Downloadadresse?) Wenn er nicht übermäßig groß ist könntest du ihn auf eine Unterseite deiner Benutzerseite stellen. Ansonsten kannst du ihn mir natürlich auch per E-mail schicken. Ich frag übrigens aus reiner Neugier, weil ich selbst schon mal drüber nachgedacht hatte ein solches Programm zu schreiben. ;-)
Was die Code-Vorlage angeht, möchte ich sie nicht entfernen, da sie neben dem Rahmen noch andere Aufgaben erfüllt. So können Beispiele für falschen oder schlechten Code mit einer anderen Rahmenfarbe und einem anderen Symbol dargestellt werden. Außerdem ist es möglich eine Programmausgabe hinzuzufügen, ebenso wie eine Kopf- und Fußzeile. Dokumentation zu den Vorlagen findest du auf C++-Programmierung/ Vorlagen.
Viele Grüße --Prog 02:21, 20. Jun. 2009 (CEST)
Was das Programm angeht ich habe es in Haskell neu geschrieben, liegt jetzt im src2 verzeichniss. Wenn du Bock hast kannst du dich gerne dran beteiligen. Der nächste Schritt ist ein Mechanismus um Vorlagen/Templates verarbeiten zu können. Dafür suche ich insbesondere jemanden mit dem ich diesen Mechnismus diskutieren kann bevor ich ihn implementiere. Was die Druckversion angeht so kann mein Programm mit dem was du da gemacht hast nicht anfangen. Ich brauche etwa in der Form
= Einleitung =
{{:BuchBuch /Einleitung}}
= BuchBuch Algemein =
{{:BuchBuch /Algemein}}

usw.
Das kann ich parsen auch ohne den Templatemechnismus in voller Schönheit implementiert zu haben und somit in besitz des Buches in einer einzigen Datei kommen. Aber es macht eh nicht viel Sinn sotwas jetzt schon zu erstellen ehe ich weiß wie deinen Templates verarbeitet werden.
Gruß Dirk Huenniger 22:28, 28. Jun. 2009 (CEST)
Zu meiner Schande muss ich gestehen, das ich deinen Haskell-Code nicht einmal Lesen kann und momentan habe ich auch nicht die Zeit mir die Sprache anzueignen. Ich würde dir nicht empfehlen den Versuch zu machen die Templates, die ich geschrieben habe, anhand ihrer Quelltexte verstehen zu wollen. Wenn du das gerne möchtest schreibe ich mal eine Übersicht dazu, das hatte ich ohnehin vor, irgendwann mal zu machen.
Die Templates, die für deinen Parser interessant sein dürften sind leicht zu verstehen. Alle nicht in der folgenden Liste aufgeführten, kommen nicht in den Kapiteln vor oder dienen der Navigation und sind somit für eine Druckversion irrelevant. Relevante Templates:
Eine Seite wie dein Parser sie benötigt werde ich anfertigen. Sollen auch Seiten eingebunden werden die noch nicht existieren, oder nur solche die schon erstellt wurden?
Ich persönlich halte es für am sinnvollsten, einfach bei der Templateeinbindung die Parameter zu extrahieren und sie direkt auf eine „Latex-Vorlage“ zu übertagen, welche im gedruckten Buch gut aussieht. Der Versuch, eine Vorlage die im Webbrowser gut aussieht, für ein gedrucktes Buch zu nutzen, bringt meiner Meinung nach gar nichts. Dafür müsste natürlich für jede relevante Buch-Vorlage eine entsprechende Latex-Vorlage geschrieben werden, aber das halte ich für einen angemessen Aufwand um gute Qualität zu erreichen. Mein Vorschlag währe, für jede Buchvorlage eine entsprechende LatexBuchvorlage zu erstellen in der dein Parser dann nur noch die entsprechenden Paramter ersetzen muss. Beispiel:
{{:C++-Programmierung/ Vorlage:Hinweis|Ich bin der Hinweistext}} wird eingebunden
{{:C++-Programmierung/ Vorlage:LatexHinweis|Ich bin der Hinweistext}} wird vom Parser genutzt

"C++-Programmierung/ Vorlage:LatexHinweis" sieht etwa so aus:
\textbf{Hinweis}
{{{1}}}
Alternativ könnte die Vorlage in normaler Wikisyntax geschrieben werden, aber eben so, das sie im PDF später gut aussieht. Dann währe es endgültig das gleiche System, wie bei mwlib. (Leider funktioniert die Vorlagenersetzung dort zur Zeit allerdings nicht, was mich ausgesprochen ärgert.)
Nun noch mal kurz zur Codevorlage. Ich habe sie vor ein paar Tagen umgeschrieben, so dass das source-Tag nun direkt in der Vorlage enthalten ist. Im Fließtext hab ich damit begonnen die Inline-source-Tags durch die Vorlage:Cpp zu ersetzen, um die Übersicht im Wikitext zu erhöhen. Möglich wurde mir dies, durch eine Erweiterung des Mediawiki Parsers, welcher das direkte einbinden von Mediawiki-Extention-Tags in Vorlagen ermöglicht.
Gruß --Prog 23:49, 28. Jun. 2009 (CEST)
Hab grad rausgefunden das es für Vorlagenersetzung ein neues Format gibt. Der Vorlagenname sollte, um dem zu folgen, besser „Vorlage:Name/Latex“ heißen. --Prog 03:57, 29. Jun. 2009 (CEST)

Einrückung zurückgesetzt --Prog 15:31, 5. Jul. 2009 (CEST)

Hilfe beim Programm. Wenn du mir Helfen möchtest habe ich eine kleine Teilaufgabe in der du frei in der Wahl der Programmiersprache bist.

Zu einer Url die auf ein Bild (bzw genauer dessen beschreibungsseite) auf einem Wikimedia server zeigt ist die Lizenz und der Autor zu finden. Momentan geschieht das sehr einfach in Python, bedarf aber häufig manueller eingriffe wenn die Art und Weise wie autor und Lizenz verzeichnet sind dem Programm nicht bekannt sind. Das Pdf system von Pediapress hat da wohl auch schon algorithmus den man da eventuell rauslösen kann. Wenn du also lust hast kannst du dich darum kümmern. Wenn nicht ist es aber auch überhaupt kein Problem das bisherige Verfahren ist für geringe mengen auch vollkommen ok. Dirk Huenniger 10:06, 3. Jul. 2009 (CEST)

Also für Python unter Linux habe ich jetzt ein PDF gemacht. Der Vorlagenalgorithmus tut also was er soll. Wenn du mir jetzt auch eine Druckversion von deinem Buch lieferst, die der von Python unter Linux ähnelt kann ich ein PDF erzeugen.Dirk Huenniger 14:50, 5. Jul. 2009 (CEST)

Benutzer:Prog/ Zwischenablage. Ich bin schon auf das Ergebnis gespannt. :) --Prog 15:31, 5. Jul. 2009 (CEST)
Datei:TestCPP.pdf Ein Ergebnis ist das noch nicht und es macht auch keinen Sinn sich das ernsthaft anzuschauen, aber so wird es in etwa ausssehen
Sieht an sich ganz schick aus. Ich mach mal ne Liste mit Schönheitsfehlern, die mir beim Überfliegen aufgefallen sind:
  • Vorlage:!! ist nicht bekannt (vermutlich auch Vorlage:!), hatte ich vergessen aufzulisten (S. 70)
  • Codeabschnitte sollten deutlich kleiner dargestellt werden, etwa so wie prä
  • Codeabschnitte haben keine Einrückung
  • Inline-Code der im HTML ein nachgesetztes Leerzeichen hat, sollte entsprechen getrimmt werden (S. 70, Z. 1, Operator „&&“) Ist ein blöder Hack von mir, um die GeShi-Formatierung im HTML korrekt zu haben.
  • div-Bereiche die Seitelänge überschreiten werden einfach abgeschnitten (S. 84)
  • Kopfbereiche der Hinweisvorlagen müssen auf der gleichen Seite stehen (S. 75,76)
  • Boxen haben eine Leerzeile am Ende, sollte weggeschnitten werden (S. 76)
  • Syntaxbschreibungen sehen nicht schön aus, da muss ich mich aber ohnehin erst noch mal um die Vorlage kümmern, so wies jetzt ist kann's nicht bleiben
  • Tabellen sollten beim Seitenumbruch die Überschriften wiederholen
  • Code und pre-Abschnitte sollten Hurenkind und Schusterjungenregel benutzen (3 Zeilen sind ne gute Größe)
Außerdem hätte ich folgende Anmerkungen:
  • Als Lizenz währe mit cc-by-sa 3.0 lieber, weil da der Lizenztext nicht im PDF stehen muss und die Weitergabe von teilen des Textes währe andernfalls immer nur mit vollständigem Lizenztext möglich
  • Die breiten Ränder nehmen meiner Meinung nach unnötig viel Platz weg
  • Autorenliste Alphabetisch, oder zumindest nach Edits sortieren (Alphabetisch währ besser)
  • Autorenliste, Bildnachweise und Lizenztext sind keine Kapitel
Vielen Dank für deine Mühe und weite so! :) LG, --Prog 20:07, 5. Jul. 2009 (CEST)

Antwort[Bearbeiten]

  • Vorlage:!! ist nicht bekannt (vermutlich auch Vorlage:!), hatte ich vergessen aufzulisten (S. 70)

sollte behoben sein

  • Codeabschnitte sollten deutlich kleiner dargestellt werden, etwa so wie prä

sollte behoben sein

  • Codeabschnitte haben keine Einrückung

sollte behoben sein

  • Inline-Code der im HTML ein nachgesetztes Leerzeichen hat, sollte entsprechen getrimmt werden (S. 70, Z. 1, Operator „&&“) Ist ein blöder Hack von mir um die GeShi-Formatierung im HTML korrekt zu haben.

Der Operator hat

{{cpp|&& }}

Also ein leerzeichen in der instanziierung der Vorlage. Trimmen kann ich da kaum ohne gefahr zu laufen auch einrückungen zu trimmen, ich denke du kannst einfach schreiben

{{cpp|&&}}
  • div-Bereiche die Seitelänge überschreiten werden einfach abgeschnitten (S. 84)

hat mit div eher weniger zu tun sondern mit tabellen in Latex, sollte behoben sein, indem Tabllen nicht mehr verwendet werden.

  • Kopfbereiche der Hinweisvorlagen müssen auf der gleichen Seite stehen (S. 75,76)

das geht nur durch manuelles Einfügen von Seitenumbrüchen kommt später

  • Boxen haben eine Leerzeile am Ende, sollte weggeschnitten werden (S. 76)

sollte behobe sein

  • Syntaxbschreibungen sehen nicht schön aus, da muss ich mich aber ohnehin erst noch mal um die Vorlage kümmern, so wies jetzt ist kann's nicht bleiben

must du halt genau definieren wie du das habe willst

  • Tabellen sollten beim Seitenumbruch die Überschriften wiederhohlen

geht denke ich nicht automatisiert, da ich nicht sicher herausfinden kann welche teile der Tablle Überschriften sind.

  • Code und pre-Abschnitte sollten Hurenkind und Schusterjungenregel benutzen (3 Zeilen sind ne gute Größe)

sollte behoben sein

Außerdem hätte ich folgende Anmerkungen:
  • Als Lizenz währe mit cc-by-sa 3.0 lieber, weil da der Lizenztext nicht im PDF stehen muss und die Weitergabe von teilen des Textes währe andernfalls immer nur mit vollständigem Lizenztext möglich

geht denke ich nicht da andere an deinem Werk mitgearbeitet haben. Somit könnten sie auf der GFDK bestehen.

Wikibooks ist inzwischen komplett auf cc-by-sa 3.0 umgestellt, das wurde vor einiger Zeit für alle Wikimediaprojekte beschlossen. (Siehe ganz unten auf jeder Seite: „Der Text ist unter der „Creative Commons Attribution/Share-Alike“-Lizenz verfügbar“) -- 153.96.200.9 15:21, 6. Jul. 2009 (CEST)
Ja das mag ja sein, dass das für neue seiten gilt. Aber die Alten edits waren halt unter gfdl und ich denke nicht das man die einfach als CC annehmen kann. Mit GFDL sind wir jedenfalls auf der sicheren Seite und 4 Seiten Lizenz sind auch nicht sehr störend bei 250 Seiten Buch.
Aber wenn du es unbedingt und CC haben willst dann lad dir halt mein Programm ändere den Latex header und Footer und lad es hoch.Dirk Huenniger 15:34, 6. Jul. 2009 (CEST)
@Dirk: Alle Texte sind sowohl unter der GFDL als auch unter der CC-BY-SA 3.0 verfügbar. Verwender können sich aussuchen, unter welcher Lizenz sie Texte weiterverwenden.
@IP: Wikibooks und die anderen Projekte wurden nicht wirklich „um“gestellt: Jeder Beitrag ist auch weiterhin unter der GFDL verfügbar, vgl. den Text unter dem Bearbeitungsfenster. -- heuler06 15:47, 6. Jul. 2009 (CEST)
Ich denke nicht dass das für alte Texte geht, ich könnte jetzt sagen das ich mein Nuklearmedizinbuch niemals unter CC veröfftentlichen wollte. Ich habe es damals halt unter GFDL veröffentlicht und niemand kann mich dazu zwingen es nun unter CC freizugeben. Zwar ist mir das persönlich völlig egal aber es könnte einen Zeitgenossen geben dem soetwas wichtig ist und ich denke er könnte erfolgreich klagen. Und deswegen will ich keine PDFs machen die behaupten sie stünden unter CC. Einfach weil ich nicht verklagt werden will. Mein gesamter Code steht aber unter GPL, wenn jemand das anders machen möge er das tun, ich helfe ihm auch gerne was die Technische Seite angeht.Dirk Huenniger 16:01, 6. Jul. 2009 (CEST)
Das gilt auch für alte Texte, denn die GFDL 1.3 sieht in Nr. 11 vor, dass eine Umlizenzierung zu CC-BY-SA bis zum 1. August 2009 möglich ist. Und der GFDL 1.3 hat praktisch auch jeder schon mit früheren Beiträgen zugestimmt, da in der GFDL in Nr. 10 eine "or any later version"-Klausel drin ist, die immer im Footer beim Abspeichern benutzt wurde. Soweit zu den Lizenzen. Ob das mit dem deutschen Urheberrecht konform geht, müssen die Gerichte entscheiden. Und da wird es wahrscheinlich niemals hinkommen, weshalb du die Texte für die PDFs auch ruhig unter der CC-BY-SA 3.0 verwenden kannst. -- heuler06 17:18, 6. Jul. 2009 (CEST)
Das klingt vernünfitig. Ich habe beim programm gfdl durch cc ersetzt.Dirk Huenniger 21:18, 6. Jul. 2009 (CEST)
  • Die breiten Ränder nehmen meiner Meinung nach unnötig viel Platz weg

Nach meinung des Verlages müssen die Ränder so breit sein. Das ist auch die Latex voreinstellung, also wahrscheinlich gut so.

  • Autorenliste Alphabetisch, oder zumindest nach Edits sortieren (Alphabetisch währ besser)

Ist jetzt Alphabetisch

  • Autorenliste, Bildnachweise und Lizenztext sind keine Kapitel

Hat sich ausser dir auch noch niemand drüber beschwert, fand ich auch bislang in Ordnung so. Als was hättest du es denn gerne.

Hochgeladen[Bearbeiten]

Ist hochgeladen unter Cplusplus.pdf. Auch PDF Hinweis auf der hauptseite des Buches angebracht.Dirk Huenniger 12:53, 6. Jul. 2009 (CEST) Jetzt auch als CCbysaDirk Huenniger 21:18, 6. Jul. 2009 (CEST) Bilder waren noch durcheinander geraten, jetzt Ok. Dirk Huenniger 16:36, 7. Jul. 2009 (CEST)

Gewünschte Änderungen[Bearbeiten]

  • inline-Code mit der normalen Schriftgröße --Prog 22:30, 14. Jul. 2009 (CEST)
  • inline-Code in Überschriften mit Schriftgröße der jeweiligen Überschrift --Prog 22:30, 14. Jul. 2009 (CEST)
  • Codevorlage gibt als Ausgabe nochmals den Code aus, statt der Ausgabe --Prog 22:30, 14. Jul. 2009 (CEST)
  • Code- und pre-Anschnitte sind kleiner dargestellt, die Zeilenhöhe ist aber noch genau so groß, währe schön wenn du die ebenfalls etwas verringern könntest --Prog 22:30, 14. Jul. 2009 (CEST)
  • Vor und nach Code-Vorlage ist unnötig viel Platz --Prog 22:30, 14. Jul. 2009 (CEST)
  • Syntaxvorlage soll Code genau so darstellen wie Codevorlage --Prog 22:30, 14. Jul. 2009 (CEST)
  • Falls du mal etwas mehr Zeit hast: Syntaxhighlighting, vielleicht kannst du GeSHi in dein Programm einbinden --Prog 22:30, 14. Jul. 2009 (CEST)

Geändert[Bearbeiten]

So ich habe hochgeladen und denke das nun alle Probleme beseitigt sind. Mit ausnahme folgender Dinge:

  • Die Zeilehöhe will ich nicht ändern ich mache mir sorgen das unterstreichungen überstreichungen und der gleichen kaputt gehen könnten.
  • Am Unnötigen Platz an der Codevorlage kann ich nichts tun. Es liegt wahrscheinlich daran das latex versucht überschüssigen platz sinnvoll auf die Seite zu verteilen, da habe ich eingenlich keine Möglichkeiten was dran zu ändern.
  • Syntaxvorlage ist jetzt wie Codevorlage, aber schau noch mal ob das genau das war was du haben wolltest.
  • Syntaxhighlighting gibt es ein Packet für das kann nur kein Unicode, sobald das funktioniert stelle ich das um.

PS: Die Grafiken sollten vieleicht besser als SVG neu gemacht werden, das sieht dann im Druck erheblich schöner aus. Dirk Huenniger 10:57, 15. Jul. 2009 (CEST)