Closed phoenix-mossimo closed 3 years ago
Analyse:
Im XML File steht Tenet</expan></choice><lb break="yes" xml:id="W0004-00-0023-lb-m007"/>Jaso
. Die <lb>
werden vom Formatierer ignoriert und zwei Wörter zusammengeschlossen >>>> TenetJaso.
Das gleiche gilt für:
plano<lb break="yes" xml:id="W0004-00-0023-lb-m012"/>circa
>>> planocircaconsilio<lb break="yes" xml:id="W0004-00-0023-lb-m020"/>suo
>>>> consiliosuoim selben note m.
Diese Tatsache ist bisher nicht aufgefallen, weil im Sal-TEI vor dem <lb>
immer ein "newline" ( \n) steht, welcher vom Formatter als leerzeichen interpretiert wird. Ausnahmen sind <lb>s
, die innerhalb einer <note>
sind - sie stehen OHNE "newline" ( \n)
Lösung:
<xsl:template match="//tei:note//tei:lb[@break eq 'yes']">
<fo:inline>
<xsl:text xml:space="preserve"> </xsl:text>
</fo:inline>
<xsl:apply-templates/>
</xsl:template>
Könnte man das auch so machen?:
<xsl:template match="tei:lb[not(@break eq 'no')]">
<fo:inline>
<xsl:text xml:space="preserve"> </xsl:text>
</fo:inline>
</xsl:template>
Also von allen lb
s Leerzeichen erzeugen lassen, außer dort, wo sie eben explizit unterbunden werden. (Ggf. müsste man überzählige Leerzeichen normalisieren, wenn man hier Leerzeichen erzeugt und in den Quelldateien auch "harte" Leerzeichen/Linebreaks vor den lb
s stehen, aber ich vermute fast, dass das durch das XSL/FO sowieso gemacht wird.)
(Und braucht man das apply-templates am Schluss? lb
s haben ja keine Kind-Elemente...
Ja, das geht auch. Implementiert.