HTML-Absatzformatierung zuordnen

Dieses Thema im Forum "Hilfe und Support" wurde erstellt von Alaska, 16. Februar 2010.

  1. Alaska

    Alaska Member

    Hallo,

    ich möchte Texte so importieren, daß zwei unterschiedliche Formatvorlagen für den Haupttext auch unterschiedlich exportiert werden. Bisher habe ich die beiden Vorlagen als Haupttext (P) gekennzeichnet (Absatz-Formatvorlage-HTML), es ist aber anschließend sehr mühsam, die mit Sigil nachzuformatieren. Titel 1,2,3 etc. werden korrekt umgesetzt.

    Es geht um selbstgemachte Formate "Text ohne Einschub", was dem ersten Absatz eines literarischen Textes entspricht und "Text mit Einschub", zweiter Absatz und folgende. Zwischen den Folgeabständen gibt es keinen Abstand. Bei Haupttext (P) wird ein solcher gesetzt.

    Wenn ich mit Sigil nachformatiert habe, haben diese beiden Formate folgende Beschreibungen:

    Text ohne Einschub:

    {
    border-bottom: 0;
    border-top: 0;
    display: block;
    margin-bottom: 0;
    margin-left: 0;
    margin-right: 0;
    margin-top: 0;
    padding-bottom: 0;
    padding-top: 1.3em;
    text-align: JUSTUFY;
    text-indent: 0
    }
    Text mit Einschub:
    {
    border-bottom: 0;
    border-top: 0;
    display: block;
    margin-bottom: 0;
    margin-left: 0;
    margin-right: 0;
    margin-top: 0;
    padding-bottom: 0;
    padding-top: 0;
    text-align: JUSTIFY;
    text-indent: 0.7em
    }

    Die wichtigen Unterschiede habe ich mit Rot hervorgehoben.

    Im Papyrustext habe ich diese beiden Formate genauso wie hier für Sigil definiert formatiert. Wie kann ich diese Merkmale beim Expoertieren in HTML bewahren? Ich habe es mal mit Benutzerdefiniert versucht, aber damit komme ich nicht weiter.

    Wäre schön, wenn es mit Papyrus eine Lösung gäbe.
     
    Zuletzt von einem Moderator bearbeitet: 2. Mai 2017
  2. glucose

    glucose Well-Known Member


    Kann man davon ausgehen, dass ein "erster" Absatz immer eine Überschrift als Vorgänger hat? Dann lässt sich das Problem mit einfachen CSS-Regeln lösen, ohne dass man in Papyrus große Änderungen vornehmen muss:

    /* normale Absätze mit Einschub, aber ohne Abstand zum Vorgänger */
    p {
    border: 0;
    margin: 0;
    padding: 0;
    text-indent: 0.7em;
    }

    /* Absätze direkt nach Überschriften: ohne Einschub, aber mit Abstand */
    h1 + p,
    h2 + p,
    h3 + p {
    text-indent: 0;
    padding-top: 1.3em;
    }


    Dieses CSS muss nur noch in das HTML-Dokument eingebunden oder mit ihm verknüpft werden. Beides erreicht man über Dokument > Hypertext-Einstellungen > HTML-Titel > Textfeld "Zusätzliche HTML-Marken im Header"

    Für das direkte Einbinden trägt man im Textfeld zunächst <style type="text/css"> ein, danach folgt der CSS-Code und schließlich </style>

    Für das Verknüpfen schreibt man den CSS-Code in eine separate Textdatei (z.B. ebook.css) und trägt im Textfeld die entsprechende Verknüpfung zu der CSS-Datei ein: <link rel="stylesheet" type="text/css" href="ebook.css">
     
    Zuletzt von einem Moderator bearbeitet: 2. Mai 2017
  3. Alaska

    Alaska Member

    Danke glucose, das muß ich mir genauer ansehen, ist für mich ein ganz neues Gebiet mit diesen HTML-Befehlen. Aber leider gibt es in Texten immer wieder einen Absatz ohne Einschub, auch ohne vorherige Kapitelüberschrift.
     
  4. glucose

    glucose Well-Known Member


    Diese Absätze (jeden für sich!) muss man kennzeichnen, indem an ihrem Anfang und Ende zusätzliche HTML-Anweisungen eingesetzt werden. Also:

    1. Textcursor vor das erste Zeichen des Absatzes positionieren
    2. Einfügen > Hypertexte > HTML-Anweisung …
    3. <p class="ohne_einschub"> eingeben und anwenden.
    4. Textcursor hinter das letzte Zeichen des Absatzes positionieren
    5. Zum Dialog "HTML-Anweisung" wechseln
    6. </p> eingeben und anwenden.

    Wenn in Zukunft die Checkbox "In bestehende HTML-Anweisung einfügen" vielleicht wieder funktioniert (in Papyrus Autor 3.04 hat sie keine Wirkung), genügt unter 3. class="ohne_einschub" eingeben und anwenden. Die Punkte 5 bis 6 entfallen dann.

    Außerdem muss (einmalig) das CSS geändert werden:
    Alt: Neu:
    h1 + p, h1 + p,
    h2 + p, h2 + p,
    h3 + p { h3 + p,
    p.ohne_einschub {
    text-indent: 0; text-indent: 0;
    padding-top: 1.3em; padding-top: 1.3em;
    } }


    Streng genommen sollte man nach dem Export auch noch den HTML-Code korrigieren, denn dieser enthält durch die zusätzlichen HTML-Anweisungen unnötige Doppelungen: <p><p class="ohne_einschub">…</p></p>. Das erste <p> und das letzte </p> sollten gelöscht werden. Diese Nachbearbeitung dürfte entfallen, sobald die o.g. Checkbox wieder funktioniert.
     
    Zuletzt von einem Moderator bearbeitet: 2. Mai 2017
  5. Alaska

    Alaska Member

    Vielen Dank glucose, werde ich ausprobieren.
     
  6. akoch

    akoch Active Member

    Hallo,
    wenn ihr schon mit CSS arbeitet, dann macht einfach zwei p-Klassen in der CSS-Deklaration:
    einmal p.ohne { hier die Definitionen für Absatz ohne Einrückung;}
    und eine zweite p.mit{...}

    Aber ihr wisst und habt verinnerlicht, das HTML keine Designbeschreibung ist, das sind immer nur Vorschläge, wenn ich meinen Browser anders eingestellt habe, oder Deine Schrift nicht auf meinem Rechner vorhanden ist, dann ist Dein schönes Design völlig im A*!

    Der tag vor den Absätzen heißt dann <p class="mit"> bzw. <p class ="ohne>.

    Papyrus macht ja nur rudimentäres HTML, es gäbe noch die rustikale Lösung, bei Absatzende ohne Zwischenraum nicht Absatzende/-anfang</p><p>, sondern nur einen Wagenrücklauf
    einschieben, und vorne, für die Einrückung feste Leerzeichen davorschreiben: je nach Wunsch 3-5 mal &nobr;

    Ich benutze für solche HTML-Sachen einen einfachen Editor wie Notepad+, der ist schon wegen des Syntax-Highlightning übersichtlicher als das derzeitige Papyrus.

    Grüße..
     
  7. akoch

    akoch Active Member

    hallo, wieder zu schnell zusammengehackt:
    das feste Leerzeichen ist natürlich und beim tag <p class="ohne" natürlich hinten auch ein Anführungszeichen.

    Nochmals Grüße..
     
  8. Alaska

    Alaska Member

    @ akoch

    Ich habe noch nie mit CSS gearbeitet und dilettiere hier wild herum. :confused: Immerhin klappte das jetzt mit den Absätzen nach Überschriften, die ersten waren mit Abstand oben und ohne Einschub. Ich hatte in das Feld "Zusätzliche HTML-Marken im Header" glucoses Anweisung folgend das hier eingetragen:


    Alle anderen Absätze waren mit Einschub und ohne zusätzlichen Abstand.

    Die Kennzeichung jedes einzelnen Absatzes ohne Einschub laut glucoses Anweisung hatte keine Folgen. Ist auch zu umständlich, würde gerne mit Einträgen im Feld "Zusätzliche HTML-Marken im Header" auskommen.

    Alternativ könnte ich bei Absätzen ohne Einschub auf padding-top: 1.3em verzichten und stattdessen eine Leerzeile davor einfügen. Dann würde nach jeder Leerzeile grundsätzlich ein Absatz ohne Einzug folgen.

    Läßt sich das als CSS-Befehl eingeben? Also alle normalen Textabsätze (P) mit Einschub, alle nach einer Leerzeile ohne?
     
    Zuletzt von einem Moderator bearbeitet: 2. Mai 2017
  9. glucose

    glucose Well-Known Member


    Wozu zwei Klassen, wenn in diesem Fall eine einzige völlig ausreicht? Die überwiegende Mehrheit der Absätze eines Buchtextes ist eingerückt, also kann man gleich alle p-Elemente einrücken. Eine eigene Klasse ist dann nur für die wenigen Ausnahmen notwendig. Und einen großen Teil der Ausnahmen (alle Absätze direkt nach Überschriften) kann man sogar durch die Verwendung des +-Selectors elegant beschreiben und muss sie nicht gesondert kennzeichnen.


    Worauf bezieht sich denn diese Aussage? Hier wurden lediglich ein paar Absätze formatiert (sogar mit schriftgrößenabhängiger Einrückung in em-Einheiten).


    Nach der Belehrung darüber, dass HTML keine Designbeschreibung ist, erscheint mir diese Lösung doch eher absurd. Wir schreiben das Jahr 2010. Moderne Browser verstehen wenigstens CSS 2.1.
     
    Zuletzt von einem Moderator bearbeitet: 2. Mai 2017
  10. glucose

    glucose Well-Known Member


    Ja, das geht. Allerdings muss der Browser dazu relativ neu sein und hinreichend CSS3 verstehen. Firefox >=3, Safari >=3.1, Opera >= 9.5, oder Google Chrome >= 2 sollten gehen. Die CSS-Selektoren für die Absätze nach Überschriften müssen dazu ein wenig erweitert werden:

    h1 + p,
    h2 + p,
    h3 + p,
    p:empty + p {
    text-indent: 0;
    }

    /* leere Absätze nicht ausblenden */
    p:empty {
    height: 1.3em;
    }
     
    Zuletzt von einem Moderator bearbeitet: 2. Mai 2017
  11. Alaska

    Alaska Member

    Ich habe jetzt folgendes eingegeben:
    <style type="text/css">
    /* normale Absätze mit Einschub, aber ohne Abstand zum Vorgänger
    */ p { border: 0; margin: 0; padding: 0; text-indent: 0.7em; }
    /* Absätze direkt nach Überschriften: ohne Einschub, aber mit Abstand
    */ h1 + p, h2 + p, h3 + p, p:empty + p { text-indent: 0; }
    /* leere Absätze nicht ausblenden
    */ p:empty { height: 1.3em; }
    </style>


    Es klappt aber nicht, nach einer Leerzeile ist nach wie vor ein Einschub von 0.7em.

    Einen Browser nutze ich nicht, sondern Sigil, um ePubs zu erstellen. Dort erscheint bei einem Leerzeichen von Papyrus > < , wenn ich mit Sigil selbst einen Return mache kommt dagegen >


    Ich zitiere mal lieber jeweils die ganze Zeile:

    <p class="sgc-5"> </p> (Papyrus)

    <p class="sgc-5">
    </p> (Sigil)

    Ich hatte schon mal mit diesen Buchstaben gearbeitet und "br + p { text-indent: 0; }" versucht oder "&nbsp + p { text-indent: 0; }", das hatte aber auch nichts gebracht.

    Aber der Rest sieht schon mal gut aus. Es geht jetzt nur noch um diese Absätze ohne Einschub nach einer Leerzeile.
     
    Zuletzt von einem Moderator bearbeitet: 2. Mai 2017
  12. glucose

    glucose Well-Known Member


    Das liegt vermutlich daran, dass Papyrus die Leerzeilen als <p> </p> exportiert und nicht als <p></p>. Wenn Du nach dem Export aus Papyrus in einem Texteditor diese Ersetzung durchführst, müsste es eigentlich klappen. Wenn nicht, dann ist die von Sigil verwendete WebKit-Version zu alt (WebKit ist das Software-Modul zur Anzeige von HTML, auch Rendering-Engine genannt).


    Das ist ein fester Zeilenumbruch, aber kein Absatzende. Entspricht Shift-Return in Papyrus.


    Ein logischer Versuch, der aber nicht klappen konnte. Die Kombination p:empty + p funktioniert nur, wenn im HTML die Absätze nacheinander stehen:

    <p></p>
    <p>Absatztext ...</p>

    Ein
    ist aber immer in einem p verschachtelt:

    <p>Hier geht der Absatz los. Jetzt kommt ein manuelles Zeilenende:

    und hier geht's in der nächsten Zeile weiter.</p>
     
    Zuletzt von einem Moderator bearbeitet: 2. Mai 2017
  13. Alaska

    Alaska Member

    Wenn Papyrus die Leerzeilen als <p></p> exportieren würde und nicht als <p> </p> würde
    funktionieren?

    Dann lasse ich das bei mir in meiner Vorlage drin und frage an dieser Stelle Ulli, ob das machbar oder wünschenswert ist.

    Ansonsten wird mir das mit einem Editor zu kompliziert. Ich kann das auch über Sigil lösen, indem ich dort ein Absatzformat ohne Einschub erstelle und mit "Suchen Ersetzen" alle Absätze nach einer Leerzeile dahingehend verändere.

    Das ist jetzt schon eine Menge Zeitersparnis durch Deine Hilfe, glucose. Vielen Dank! Perfekt würde es natürlich, wenn Papyrus die Leerzeilen anders exportieren würde, dann könnte man lesegeeignet im ePub-Format speichern. Das ist ja nichts anderes als HTML.
     
    Zuletzt von einem Moderator bearbeitet: 2. Mai 2017
  14. glucose

    glucose Well-Known Member


    Ja, dann würde das funktionieren. Allerdings sind Leerzeilen nicht so richtig im Sinne des Erfinders von Formatvorlagen – es wäre also besser, auf sie zu verzichten. Die Lösung mit dem Einfügen der HTML-Anweisung ist besser, flexibler und eleganter. Sie muss nur in Papyrus "repariert" werden.


    Der Export von Leerzeilen als <p> </p> hat schon seine Berechtigung. Ohne das (festes Leerzeichen / non-breaking space) werden leere Absätze entsprechend der HTML-Spezifikation nämlich überhaupt nicht angezeigt. Wenn also jemand in Papyrus etwas Abstand zwischen den Absätzen mithilfe von Leerzeichen schafft (ganz altmodisch wie auf einer Schreibmaschine), dann würde davon im HTML-Dokument rein gar nichts übrig bleiben. Das Exportieren des vermeidet diesen Effekt und entspricht eher der Erwartungshaltung der meisten Benutzer.

    Die sauberste Lösung wäre, wenn Papyrus seine Formatvorlagen von sich aus als CSS exportieren könnte, einschließlich der Zuordnung zu den Absätzen im Dokument (typischerweise über class="name_der_formatvorlage">.
     
    Zuletzt von einem Moderator bearbeitet: 2. Mai 2017
  15. akoch

    akoch Active Member


    Ja, wenn Du Deine Briefe immer nur an early adaptors schreibst, ist das richtig. Ich mache hier einige Webseiten für etwas konservativere Leute (=Kirchengemeinden) und da haben die Leser den Browser auf ihrem Rechner, den sie mit der Auslieferung des Rechners bekommen haben. Das größte Problem ist da dann, den HTML-Text so zu schreiben, daß er wenigstens einigermaßen ähnlich aussieht. Gleich ist nicht drin.

    Zustimmung, zur Zeit gibt es neue Browser, die das können, die sind aber zum Großteil überhaupt noch nicht beim Leser angekommen.

    Deshalb würde ich da nur einfach ein standard-<p>Absatz machen, und den Rest mit
    umbrechen - fertig. Alles andere ist fraglich, ob es überhaupt dann beim Leser sichtbar ist. Und die Unterschiede werden -Microsoft gedankt- zur Zweit wieder größer. Du musst jetzt schon wieder Fallunterscheidungen in den Header reinschreiben oder wie früher in den Text: "Beste Lesbarkeit bei 1375x811 mit IE x oder FF 3.6.11.78"

    Grüße..
     
    Zuletzt von einem Moderator bearbeitet: 2. Mai 2017
  16. glucose

    glucose Well-Known Member


    Hier ging es um die Formatierung eines HTML-Dokuments zur Verwendung als ebook. Wie gut deren CSS-Unterstützung ist, weiß ich nicht. Aber da die Geräte eher neueren Datums sind, dürfte in ihnen auch eine relativ aktuelle HTML-Rendering-Engine verwendet werden.

    Sollte das nicht der Fall sein, ist es auch nicht weiter schlimm. Da alle Absätze als solche mit p gekennzeichnet sind, wird das ebook schon wissen, wie es sie am besten darstellen kann. Ob die Absätze dann eingerückt sind oder nicht, oder ob sie vielleicht alle durch Leerzeilen getrennt sind und nicht nur die nach den Überschriften, spielt für die Benutzbarkeit eines solchen ebooks eine untergeordnete Rolle. Der Text sieht dann eben nicht exakt so aus, wie der Gestalter es wollte, aber davon bekommt der normale Benutzer kaum etwas mit.


    Ein ordentlich mit HTML strukturierter Text ist mir da lieber.


    So einen Quatsch würde ich nicht machen. Man kann mit CSS die Fähigkeiten der neuesten Browser ausreizen und die Seite gleichzeitig in älteren Browsern hinreichend schön und lesbar halten. Die alten Browser setzen dann eben nicht alle Feinheiten der Gestaltung um – na und?
     
    Zuletzt von einem Moderator bearbeitet: 2. Mai 2017
  17. Alaska

    Alaska Member

    Den Streit hier verstehe ich nicht, wie glucose schon schrieb, es geht um die Erstellung von E-Books und die beiden Programme, die das bewerkstelligen, calibre und Sigil werden ständig akutalisiert. Die haben sicher keine Ähnlichkeit mit einem Uralt-Browser.

    Bisher war es für mich sehr umständlich, einen mit Papyrus formatierten Text über den HTML-Export mit Sigil noch mal von vorne formatieren zu müssen, weil die beiden Hauptformate des Haupttextes verlorengingen. Das hat sich jetzt drastisch verbessert. :)

    Ich kenne mich wirklich mit HTML und CSS nicht aus, habe aber den Eindruck, daß Papyrus ohne viel Aufwand in der Lage wäre, direkt ins ePub-Format zu exportieren. Wenn ich glucose richtig verstanden habe, müßte das so gehen:


    Es ist ja wohl so, daß es sich beim ePub-Format um einen umbenannten HTML-Text handelt.
     
    Zuletzt von einem Moderator bearbeitet: 2. Mai 2017
  18. akoch

    akoch Active Member


    Hallo,
    Du hast am Anfang schon mit so weitgehenden CSS-Elementen hantiert, daß ich der Meinung war, daß Du davon Ahnung hast.

    Richtig, es wäre schön, wenn in Pap. direkt ein gutes HTML- und CSS-Management drin wäre, aber ich denke, das ist auch ein bischen Philosophie, denn HTML und echtes WYSIWYG schließen sich schon vom Denkansatz her gegenseitig aus.

    In Deinem Falle würde ich einen sauberen Header mit CSS-Styles schreiben / schreiben lassen, den dann mit den schon in Pap vorhandenen HTML-Befehlen in den Header reinschreiben, und dann nur die Überschriften und die Formatierungen benutzen, die schon in Pap drin sind. Das ist einfaches HTML, das läuft auch auf fast jedem Browser gleich gut. Alles andere musst Du sowieso dem Browser Deiens Lesers überlassen.

    Wie schon der Titel sagt: CSS = Cascading.. Du bist der letzte in der Reihe, auf den der Browser hört, wenn es um Formatierung geht.

    Deshalb ist hier meine Devise: so einfach, wie es nur geht ist das Beste.

    Grüße..
     
    Zuletzt von einem Moderator bearbeitet: 2. Mai 2017
  19. Neonsquare

    Neonsquare Member

    Zu ePub:
    Nein es ist nicht einfach eine umbenannte HTML-Datei. ePub ist ein "ZIP basiertes Containerformat". D.h. es ist so gesehen eigentlich eine umbenannte ZIP-Datei. In dieser ZIP-Datei befinden sich alle benötigten Ressourcen, z. B. Bilder, HTML-Dateien, Stylesheets. Außerdem gibt es eine Reihe ePub-spezifischer Beschreibungsdateien im XML-Format, in welchen die Inhaltsstruktur des Buches beschrieben wird. Der wohl kniffligste Aspekt dürfte allerdings das DRM (Digital Rights Management) sein. ePub funktioniert natürlich auch ohne Kopierschutz (DRM), aber für "vollwertigen" ePub-Support wird das womöglich auch benötigt.


    Das ist sicherlich der extremste Skeptizismus den ich diesbezüglich seit langer Zeit lesen durfte ;)

    Über die Jahre hat sich mancherorts eine extrem konservative Haltung gegenüber der Fortentwicklung der Webstandards entwickelt. Ich kann nur vermuten, dass Microsofts "Lahmarschigkeit" mit dem IE zu dieser Situation geführt hat.

    Erst gestern wurde ich jedoch mal wieder eines besseren belehrt: Die Verkaufsplattform "Dawanda" setzt zwingend JavaScript voraus. Vor einigen Jahren wäre das wohl undenkbar gewesen. Heutzutage funktioniert ohne JS eigentlich tatsächlich nur noch wenig.

    Ich gewinne tatsächlich langsam eine Einstellung, nach der man aufhören sollte uralte Systeme noch zu unterstützen. Faule, unwissende Menschen haben sich über Jahrzehnte auf ihrer Haut ausruhen können, weil Profis immer mehr Zeit und Geld investiert haben um auch noch für sie alle benutzbar zu halten. Das Resultat: Kein Schmerz, also kein Bedarf etwas zu ändern.

    Ich sehe immer weniger ein wieso jemand, der keine Ahnung hat was ein Browser ist, stets geschont werden muss, indem ständig tausende Stunden in seinen Support gesteckt wird. Man könnte doch einfach darauf zu warten, dass er irgendwann kommt: "Mein Webdings ging immer - jetzt geht es nicht mehr" und am besten "...da stand irgendwas von neue Software installieren und ich soll jemanden fragen der sich damit auskennt". Dann ist in 5 Min. das Problem gelöst und endlich Ruhe.


    Grüße,
    Jochen
     
    Zuletzt von einem Moderator bearbeitet: 2. Mai 2017
  20. akoch

    akoch Active Member

    Hallo,
    wenn Du es Dir leisten kannst, nur für die 3% der Leute zu schreiben, die ihre Software auf aktuellem Stand haben, o.k.

    Wenn ich aber den Auftrag bekomme, die Seiten so zu produzieren, damit "alle" die lesen können, ist das kein Skeptizismus, sondern reiner Pragmatismus.

    -uralte Systeme noch zu unterstützen-
    Die Uroma - drei Generationen, ja das war noch 100 Jahre her, aber heute drei Generationen der Ursoftware rennen heute in einem dreiviertel jahr durch, da muß ich schon noch ältere Urursoftware unterstützen.

    ..das Reinschreiben von: Bitte laden sie die neue Version herunter klappt nämlich so auch nicht mehr, weil da die Leute schon aus der Bildzeitung wissen, daß das dann alles Viren sind..

    deshalb brech ich auf den kleinsten gemeinsamen Nenner runter.

    Grüße..

    Ps. das hat aber jetzt gar nix mehr mit ePub zu tun :)
     
    Zuletzt von einem Moderator bearbeitet: 2. Mai 2017