Diskussion:Wikibooks Automatische Vorlagen

Aus Wikibooks
Zur Navigation springen Zur Suche springen

Diskussionen[Bearbeiten]

Diskussionen zu den automatischen Vorlagen sollten an folgenden Stellen geführt werden:

  • Allgemeine Anmerkungen zu diesen Vorlagen passen auf die eigentliche Diskussionsseite.
  • Wünsche nach weiteren Möglichkeiten gehören ins Kapitel Wünsche oder auf dessen Diskussionsseite.

Projektdefinition[Bearbeiten]

Ziele und Inhalte des Buches ergeben sich aus Einleitung, Vorwort und Inhaltsverzeichnis.

Hauptautor ist Jürgen.

Zur (eigentlich falschen) Schreibweise des Buchtitels: Eigentlich sollte es "Wikibooks: Automatische Vorlagen" heißen. Das hätte aber Probleme mit dem Namensraum "Wikibooks" gebracht. Deshalb habe ich mir die Freiheit des Autors genommen und alle Anfangsbuchstaben groß geschrieben.

Bezeichnungen bei 4 Ebenen[Bearbeiten]

Mir geht durch den Kopf, die Struktur bald auf 4 Ebenen zu erweitern. Ich bin mir unschlüssig über die Bezeichnungen (bitte die Reihenfolge nicht ändern, das erleichtert die nachfolgende Diskussion):

  1. Buch > Hauptteil > Teil > Kapitel
  2. Buch > Teil > Unterteil > Kapitel
  3. Buch > Teil > Kapitel > Unterkapitel
  4. Buch > Teil > Abschnitt > Kapitel
  5. Buch > Teil > Kapitel > Abschnitt

Bei LaTeX ist ein Abschnitt ein Teil eines Kapitels, das spricht für Variante 5. Hauptteile und Unterteile gibt es in keiner mir bekannten Struktur. WB kennt keine Teile, sondern nur Kapitel, Unterkapitel, Unterunterkapitel. Ich tendiere zur Variante 2, weil dann die unterste Stufe immer das Kapitel (also eine einzelne Wiki-Seite) ist. -- Jürgen 12:54, 9. Okt. 2011 (CEST)

Ich habe mich zu Variante 2 entschlossen. Als Bezeichnung habe ich "Bereich" gewählt, weil das noch am kürzesten ist und nicht mit anderen Begriffen in Konkurrenz steht (wie Abschnitt/Section als Teil eines Kapitels bei LaTeX). -- Jürgen 12:20, 28. Okt. 2011 (CEST)

Kapazitätsproblem[Bearbeiten]

Die jetzige Struktur (alle Angaben in einer Daten-Seite, siehe Benutzer Diskussion:Prog#Mehrere Ebenen) führt leider nicht zu einem akzeptablen Ergebnis. Die Druckversion als Ansicht des gesamten Buches wurde zu komplex und konnte nicht mehr angezeigt werden: post-expand-template-inclusion-warning: Warnung: Die Größe eingebundener Vorlagen ist zu groß, einige Vorlagen können nicht eingebunden werden. Erst nachdem ich einige Bestandteile entfernt und Prüfungen vereinfacht hatte (z.B. die Navigation innerhalb der Druckversion), wurde die Seite gerade noch angezeigt (Post-expand include size: 1948553/2048000 bytes). Ein Versuch mit C++-Programmierung/ Einführung in C++ ging ebenfalls schief: Mit der Lösung von Prog benötigt die Seite etwa 1,5 MB, während mein Verfahren die 2 MB-Grenze überschritt.

Nach einigem Überlegen führe ich die Probleme vor allem auf folgende Umstände zurück:

  • Die Datenseite muss ständig aufgerufen werden, um Bezeichnungen von Teilen, Bereichen und Kapiteln sowie Vergleichswerte zu bestimmen.
  • Bei jedem Aufruf wird vermutlich die gesamte Datenseite eingelesen. (Beim Expandieren scheinen nur die Teile benutzt zu werden, die konkret benötigt werden.)
  • Bei jedem Aufruf werden 2 bis 4 switch-Anweisungen durchlaufen.

Die einfachste Lösung wäre, auf die gemeinsame Daten-Seite zu verzichten. Aber wie bei Wikipedia in der Schule festgestellt wurde, ist es nicht akzeptabel, auch für Bereiche (Unterteile) eigene Daten-Seiten vorzusehen. Andererseits komme ich immer stärker zu der Überzeugung, dass diese Untergliederung berücksichtigt werden muss; auch dafür gibt das WP-Schule-Buch Beispiele mit mehreren Kapiteln "Hintergrundtexte" – das lässt sich nur mit 4 Ebenen sinnvoll lösen. Im C#-Lehrbuch soll der Teil Arbeitsablauf steuern etwa 30 Kapitel enthalten; auch dafür wird die Gliederung in Bereiche benötigt.

Also genügt diese einfache Lösung nicht. Ich möchte aber äußerst ungern auf die automatischen Vorlagen verzichten, zumal Feeela sich ebenfalls dafür interessiert. -- Jürgen 12:20, 28. Okt. 2011 (CEST)

Ideen zur Lösung[Bearbeiten]

  1. Die Seite Buchdaten wird reduziert auf die Liste der Teile sowie der Stammdaten für das Buch.
  2. Eine Seite Teildaten wird für jeden Teil eingerichtet.
  3. Für ein Kapitel gibt es keinen Ersatztext zur Anzeige (dadurch werden jeweils zwei Abfragen eingespart). Wenn der eigentliche Name des Kapitels nicht gut passt (aus welchem Grund auch immer), gibt es entsprechende Erläuterungen in dem Text, der dem Kapitel-Link angehängt werden kann.
  4. Diese Zusatztexte sowie der Kurzinhalt für einen Teil werden in separate Seiten "Buchname/ Vorlage: Inhalt Teil" ausgelagert. Diese Inhalte müssen viel seltener eingelesen werden und müssen den Server nicht so oft belasten.
    Nachteil: Wenn die Gliederung geändert wird, muss auch die Inhaltsseite überarbeitet werden. Da dies relativ selten vorkommen dürfte, sobald ein Buch konzipiert ist, ist dieser Nachteil IMHO hinzunehmen.
  5. Auf zusätzliche Überschriften zwischen Kapiteln wird verzichtet; auch das vereinfacht die Vorlagen ein wenig.
  6. Bereiche bekommen keine eigene Daten-Seite (und auch keine Ergänzungen wie Zielgruppe, Lernziel, Einleitung, Zusammenfassung). Innerhalb der Teildaten werden sie so eingetragen:
    | 3 = Dokumentation
    | 3/1 = Über AutoInhalt
    | 3/2 = Über AutoNavigation

    Der Schrägstrich sorgt nebenbei dafür, dass GetNumber zusammen mit #titleparts funktionieren kann.
    Hinweis: Dies führt nicht zu einer höheren Zahl von Kapitelnummern, der Ersatz für Schleifen muss weiterhin nicht mehr als jeweils 20 Einträge (nämlich Bereiche je Teil und Kapitel je Bereich) berücksichtigen.
  7. Auf den Gesamtseiten (Buch, Teil) gibt es nur eine einfache Navigation "nach oben", voriges Kapitel, nächstes Kapitel.

Ergänzend gibt es weitere Möglichkeiten zur Vereinfachung:

  • Auf den Gesamtseiten muss auf das kleine Inhaltsverzeichnis (links oder rechts oben nur die Anzeige von Teil, Bereich, Kapitel) verzichtet werden.
  • Dazwischengeschaltete Vorlagen wie "AutoGesamt Start Teil" werden möglichst direkt eingebaut in die vorherige Vorlage.
  • max ist auch bei GetNumber zu benutzen.
  • AutoVorlagen GetStandard enthält bereits eine #if-Abfrage. Aufpassen, ob vorher schon eine solche Prüfung existiert; es soll keine Verdoppelung geben.
  • Statt link ist es besser, die Namen der Ebenen als Parameter weiterzugeben; die müssen nicht immer neu eingelesen werden.

Ich lasse diese Gedanken mal nachwirken. Das Dumme ist, dass ich erst nach Abschluss der Vorlagen-Programmierung das Ergebnis (nämlich expand size) kontrollieren kann. Es scheint mir dennoch sinnvoll zu sein, auf diese Weise den nächsten Versuch anzugehen. -- Jürgen 12:20, 28. Okt. 2011 (CEST)

Es gäbe noch einen Lösungsansatz: Man kann diese Funktionalität auch in ein Plugin für MediaWiki packen, direkt in PHP programmiert – eine MediaWiki Extension. Wie die Daten dann gehalten werden, müsste in einem gemeinschaftlichen Prozess am besten sprachübergreifend festgelegt werden. Hierbei würden einerseits eine Menge Einschränkungen wegfallen. Andererseits braucht man dafür Zugang zur eigentlichen Software, es müssen also diejenigen einbezogen werden, die wikibooks.org hosten. Eine MediaWiki Extension bräuchte eine Vorlage oder standardisierte Seite nur einmal aufrufen, um daraus ein Inhaltsverzeichnis zu erzeugen und im Cache abzulegen. Die Gesamte Berechnung der Seite (sprich: der Seitenaufbau) würde wahrscheinlich dadurch auch in der Geschwindigkeit optimiert. Konkrete Gedanken zur technischen Realisierung habe ich mir hier noch nicht gemacht. --Feeela 23:43, 28. Okt. 2011 (CEST)
UPDATE: siehe z.B. Extension:SubPageList, oder ähnliche – diese könnten als Basis genutzt und um die PDF-Erstellung erweitert werden… --Feeela 23:48, 28. Okt. 2011 (CEST)
Einen solchen Vorschlag hatte auch ThePacker gemacht; und ihr habt höchstwahrscheinlich recht mit eurer Empfehlung. Aber mit PHP werde ich mich ganz bestimmt nicht mehr befassen. Bei dieser Lösung ist man von mehreren Maßnahmen abhängig: Ein PHP-Entwickler muss sich darum kümmern; ein MW-Fachmann muss es integrieren; ein System-Admin muss es in der Wikibooks-Installation freigeben. Da noch nicht einmal die SubPageList zur Verfügung gestellt wurde - siehe Spezial:Version -, glaube ich nicht, dass eine solche Lösung in absehbarer Zeit kommen kann. Dann ist es IMHO besser, ein mäßiges, aber halbwegs funktionierendes Verfahren zu haben, als bis zum Sankt-Nimmerleins-Tag auf eine gute Verwirklichung zu warten. -- Gruß Jürgen 11:35, 29. Okt. 2011 (CEST)
Nun denn, danke für dein Engagement und ein Hoch auf dich – ehrlich, keine Ironie! Dein Beitrag klang so pessimistisch. Und so wie du es schilderst, würde wohl tatsächlich jede umfassendere Lösung an Bürokratie scheitern… --Feeela 22:41, 30. Okt. 2011 (CET)

Kein Wunder, dass das pessimistisch klang. Ich habe jetzt die Struktur wie beschrieben geändert und vor allem Vorlage:AutoGesamt neu gebaut. Durch den Verzicht auf eine Navigation innerhalb der Druckversion wird das "Gesamte Buch" gerade so angezeigt; aber es fehlen noch einige Kapitel. Der Versuch mit C++-Programmierung/ Einführung in C++ geht weiterhin schief.

Man muss natürlich immer damit rechnen, dass ein Buch zu umfangreich und komplex wird. Eine Ersatzlösung besteht darin, dass eine Seite "Gesamtes Buch" nicht möglich ist (wie ich es bei Einführung in SQL gemacht habe); zur Fehlerbehandlung gehören jedenfalls Hinweise, dass bei Bedarf ein Buch weiter unterteilt werden muss. Aber wenn bereits der zweite Versuch daneben geht, habe ich große Zweifel, ob man das Verfahren wirklich anbieten kann. Im Moment habe ich keine weiteren Ideen zur Vereinfachung. -- Jürgen 17:08, 31. Okt. 2011 (CET)

Noch zwei Ideen, die ich probieren werde: (a) Die Anzeige eines Teils wird getrennt behandelt abhängig davon, ob er in Bereiche unterteilt ist oder nicht. (b) Der Schleifen-Ersatz wird auf 15 Einträge begrenzt. -- Jürgen 18:59, 31. Okt. 2011 (CET)
Beide Änderungen haben keinerlei Ersparnis bei expand size gebracht. Das Problem liegt also wohl weniger an der komplexen Struktur der Vorlagen als vielmehr an der Struktur eines Buches und seiner Kapitel. -- Jürgen 19:34, 31. Okt. 2011 (CET)

Welche Überraschung: Die Aufteilung in verschiedene Untervorlagen bei der Vorbereitung der Anzeige – siehe die Struktur – hat etwas gebracht. Sehr hilfreich war dabei auch der Trick von Prog mit dem Aufruf verschiedener Vorlagen mit den gleichen Parametern:

{{ {{#if: {{:{{{datenB}}} {{{name}}} | 1/1 }} | AutoGesamt Teil Bereiche | AutoGesamt Teil }}
| <einheitliche Parameter>
}}

Das hat in mehreren Tests bei expand size immerhin etwa 50 kB eingespart. Allerdings konnte ich nur einmal C++-Programmierung/ Einführung in C++ vollständig anzeigen, später klappte es nicht mehr. Mit Spezial:Vorlagen expandieren erreicht mein Verfahren ein identisches Ergebnis wie Progs Lösung (in beiden Fällen etwa 175 kB Wiki-Quelltext mit HTML-Tags), aber expand size wird bei mir viel zu groß.

Im Moment schließe ich das Thema ab. Das „Buch“ wird noch fertig gestellt. (Es fehlt nur die Schlussredaktion für die Dokumentation.)

  • Die Vorlagen selbst sind fertig und funktionieren.
  • Praktische Probleme mit den zu komplexen Teilen und Bücher schränken die Brauchbarkeit ein.

Ich bin mir deshalb unsicher, ob ich die Vorlagen in die Kategorien eintragen und in der WB-Hilfe empfehlen soll. -- Jürgen 13:50, 9. Nov. 2011 (CET)

Wie erstellt man eine Autonavigation für ein Buchprojekt mit mehreren Bänden[Bearbeiten]

Das Buch Gitarre ist ein ziemlich umfangreiches und komplexes Buch. Ich würde gerne wissen, wie eine Navigationsvorlage für ein Buch mit mehreren Bänden aussehen könnte. Ich würde dabei gerne auf "Try and Error" verzichten. Wer kann mir bei der Erstellung der Navigation behilflich sein? Erstelle ich für jeden einzelnen Band eine eigene Navigation? Oder ist das Buch vielleicht zu komplex für Autonavigation? --mjchael 12:11, 12. Nov. 2012 (CET)

Bei Arbeiten mit .NET habe ich für jeden Band eine eigene Kapitelliste vorgesehen, siehe Arbeiten mit .NET: C-Sharp/ Inhaltsverzeichnis in Verbindung mit Arbeiten mit .NET: C-Sharp/ Vorlage:Daten. -- Gruß Jürgen 12:27, 12. Nov. 2012 (CET)

Hinweis auf diese Vorlage[Bearbeiten]

Warum gibt es in der Wiki-Books-Hilfe keine Hinweise auf diese Vorlage? (oder habe ich sie überlesen?). Vielleicht in den Abschnitten Hilfe:Neues Buch beginnen/ Gliederung zuerst oder Hilfe:Navigation.

Ich selbst habe diese Vorlage zufällig in "Vorlagen für Navigation" entdeckt, nachdem ich zunehmend genervt war von den permanenten Anpassungen, die die dort beschriebenen Methoden erfordern. --Thunderdan81 08:31, 20. Feb. 2015 (CET)

Naja, ich bin nicht nur der Ersteller, sondern war bisher der einzige ernsthafte Nutzer dieses Verfahrens. Deshalb zögerte ich, es zu sehr und zu direkt zu empfehlen, zumal Stephan Kulla mit Lua ein vergleichbares Verfahren verwendet (und noch nirgends dokumentiert hat). Deshalb habe ich mein Verfahren nur in Hilfe:Vorlagen/ Finden (in einer Fußnote versteckt) und in Hilfe:Vorlagen/ Verwenden (als Beispiel für verschachtelte Vorlagen) erwähnt. Ich nehme deine Frage zum Anlass und werde in der Hilfe auf diese Vorlagen hinweisen. -- Gruß Jürgen 13:09, 20. Feb. 2015 (CET)

@Thunderdan81: Zur Ergänzung: In Mathe für Nicht-Freaks wird die komplette Navigation aus Mathe für Nicht-Freaks: Sitemap generiert. Ich möchte diese Technik in den kommenden Wochen standardisieren und den Code überarbeiten, so dass diese Technik auch für andere Projekt genutzt werden kann. Erfahrungsgemäß kann sich die Fertigstellung dessen noch hinziehen. Ich empfehle dir also erst einmal das Tool von Jürgen zu nutzen. Stephan Kulla 13:41, 20. Feb. 2015 (CET)