PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit mehrfacher Textaustzeichnung



Meta
27-08-2010, 15:05
Hallo zusammen,

ich wieder mit meiner Hörspielskriptklasse. :rolleyes:

Ich habe ein paar kleinere/größere Probleme mit mehrfacher Textauszeichnung.
Und zwar möchte ich gerne bestimmte Passagen (also Eingaben von Benutzern, die mit LaTeX nicht gerade vertraut sind) auf vorbestimmte Weise formatieren.

Beispielsweise soll die Eingabe


\sound{Unruhe draußen auf dem Gang, vereinzelt Schreie, Schlüsselgeräusche}

folgende Ausgabe erzeugen:


SOUND: UNRUHE DRAUSSEN AUF DEM GANG, VEREINZELT SCHREIE, SCHLÜS-
SELGERÄUSCHE


Ich habe also:
deutscher Text (inklusive ßondärzeichön ;))
Schriftart Courier (bzw. Typewriter)
Blocksatz
Uppercase
unterstrichen
teilweise fett
Silbentrennung (im obigen Beispiel soll im Wort "Schlüsselgeräusche" einfach mal der rechte Seitenrand erreicht sein).

Mein aktuelles Problem ist eigentlich nur, dass ich ein ß entweder für sich oder das ganze Wort, in dem es vorkommt, in geschweifte Klammern packen muss, denn sonst gibt es einen Fehler (bzw. sechs).

Merkwürdig ist noch, dass die Silbentrennung an sich zwar funktioniert, aber seeehr sparsam greift.
Auf 40 Seiten Skript wurde ich EIN MAL ein Wort getrennt.
Und dummerweise ist beim Rest alles unterschiedlich ausgerichtet (also kein Blocksatz bis zum rechten Rand, sondern alle Wortzwischenräume exakt gleich breit ). Liegt das am Uppercase? Wahrscheinlich eher am Typewriter oder? Ich habe extra das Paket "hyphenat" mit der Option "htt" einbunden, um SIlbentrennung im Typewriter zu bekommen.
Muss/Kann/Sollte ich da noch was einstellen wegen der minimalen Silbenlänge oder sowas? Brauche ich ein weiteres Paket/eine weitere Option bzgl. Typewriter und Blocksatz?

Es folgt ein Beispieldokument:


\documentclass[ngerman,parskip]{scrbook}

\usepackage[ngerman]{babel}
\usepackage[latin9]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{courier}
\usepackage[overload]{textcase}
\usepackage[htt]{hyphenat}
\usepackage{soul}
\setul{3pt}{}

\newcommand{\sound}[1]{%
\fbox{\parbox{.8\textwidth}{\textbf{\ul{\MakeUpper case{Sound: }}}\ul{\MakeUppercase{#1}}}}%
}

\newcommand{\soundB}[1]{%
\fbox{\parbox{.8\textwidth}{\textbf{\ul{\MakeUpper case{Sound: }}}\MakeUppercase{#1}}}%
}

\begin{document}
\fontfamily{pcr}\fontseries{m}\fontshape{n}\select font

\sound{Dies ist ein Test... Und er funktioniert. Jucheeeh! :)}

\sound{Dies ist ein weiterer Test... Dieses Mal gibt es sogar Sonderzeichen: ä, ö, ü, Ä, Ö und Ü. Alles kein Problem.}

\sound{Im dritten Test kommen sogar Ligaturen vor - blo{ß} zu {Fuß}. Stünde nicht entweder das scharfe S oder aber das gesmte Wort in geschweiften Klammern, gäbe es einen Fehler (bzw. pro Ligatur sechs Fehler an der Zahl).}

%\sound{Hier sind erneut die Ligaturen - bloß zu Fuß - und zwar nicht eingeklammert - was Fehler produziert.}

\soundB{Ohne Unterstreichung funktioniert es auch ohne die Klammern: bloß zu Fuß. Aber auch hier steht der Text leider immer noch nicht wirklich im Blocksatz.}

\end{document}


Kann jemand meine Probleme beseitigen?
Sollte ich andere Pakete für meine Wünsche verwenden?
Muss ich mich von irgendwas ganz verabschieden?

Ich habe schon etliche Sachen probiert: Unterstreichungen mit \underline oder mit dem Paket "ulem" und dann \uline, Großbuchstaben mittels \uppercase oder \MakeUppercase (was ich zwar jetzt weiterhin verwende, aber mit dem Paket "textcase", welches den Befehl überschreibt), verschiedene Schriften und Einstellungen für den Typewriter etc.
Verschiedene Kombinationen funktionieren gar nicht, daher bin ich bei den obigen Paketen und Optionen gelandet...

Danke schon mal im Voraus!

Viele Grüße
Meta

u_fischer
27-08-2010, 16:27
Naja, \MakeUppercase in \ul ist schon ziemlich tapfer. Ich bin erstaunt, dass es im Wesentlichen ordentlich funktioniert. Beim ß musst du entweder mit den Klammern leben, oder \ss schreiben.

Was die Trennungen angeht: Bei Schreibmaschinenschriften haben alle Buchstaben und Abstände die gleiche Breite. Es passen also immer X Zeichen auf eine Linie. Wie soll da Blocksatz und Silbentrennung funktionieren?

Meta
29-08-2010, 12:29
Naja, \MakeUppercase in \ul ist schon ziemlich tapfer. Ich bin erstaunt, dass es im Wesentlichen ordentlich funktioniert.
Und ich bin erstaunt, dass bislang scheinbar niemand die Kombination UPPERCASE und unterstrichen zugleich benötigt haben soll.
Das ist ja wohl nichts sooo außergewöhnliches... :rolleyes:


Beim ß musst du entweder mit den Klammern leben, oder \ss schreiben.
Man kann doch bestimmt irgendwie innerhalb des Arguments eines Befehls Wort- bzw. Zeichenersetzung durchführen - oder?


Bei Schreibmaschinenschriften haben alle Buchstaben und Abstände die gleiche Breite. Es passen also immer X Zeichen auf eine Linie. Wie soll da Blocksatz und Silbentrennung funktionieren?
Nun ja...
Egal was für eine Textausrichtung, es passen ja immer nur begrenzt Zeichen in eine Zeile.
Dass bei Schreibmaschinenschriften die sichtbaren Zeichen alle gleich breit sind, war mir bekannt - dass dies auch für Leerräume zutrifft nicht - weiß ich nun, danke.
Da wäre meine Frage dann, ob es nicht ein Paket/eine Schrift gibt, sodass die sichtbaren Zeichen von der Breite her fix sind, die Leerräume aber unterschiedlich (z.B. durch die Textausrichtung beeinflusst, Leeraum zwischen zwei Worten anders als Leeraum nach Interpunktion und dergleichen)...

u_fischer
29-08-2010, 16:11
Und ich bin erstaunt, dass bislang scheinbar niemand die Kombination UPPERCASE und unterstrichen zugleich benötigt haben soll.
Das ist ja wohl nichts sooo außergewöhnliches

Unterstreichen ist heutzutage ziemlich ungewöhnlich. Das kennt man nur noch von Schreibmaschinen.


Man kann doch bestimmt irgendwie innerhalb des Arguments eines Befehls Wort- bzw. Zeichenersetzung durchführen - oder?

Ich verstehe nicht, was du meinst. Du solltest dir aber im Klaren sein, dass \ul (wie alle Befehle von soul) ein sehr komplexer Befehl ist. Er sammelt sein Argument, zerlegt es in Teile, finden Trennstellen, unterstreicht die Silben setzt es wieder zusammen. Befehle im Argument sind da immer kompliziert. "ß" ist auch ein Befehl, noch dazu einer der von \MakeUppercase auf eine spezielle Weise behandelt wird.



Da wäre meine Frage dann, ob es nicht ein Paket/eine Schrift gibt, sodass die sichtbaren Zeichen von der Breite her fix sind, die Leerräume aber unterschiedlich

Gibt es sicherlich. Aber das wird nichts daran ändern, dass die durchschnittliche Silbenlänge viel größer ist. Ich gebe dir den Rat: Wenn du "wie mit der Schreibmaschine" schreiben willst, verzichte auf Blocksatz.

Vergleiche doch mal:

Gibt es si ch er li ch.
mmmm mm mmmmmmmmmmm

rstuby
29-08-2010, 16:25
Aber es gibt doch "Schreibmaschinen"-Dokumente, in denen Blocksatz nachgeahmtwird, indem im Bedarfsfall mehrere Leerzeichen gesetzt werden. So wie der Krimi, den ich gerade lese: http://lib.ru/DETEKTIWY/CHRISTIE/evil_sun.txt
(offtop: Wer russisch lesen kann,ist klar im Vorteil, wenn es um kostenlosen und billigen Lesestoff geht, aber meine Infos zu LaTeX und Linux hole ich mir fast ausschließlich aus dem deutschen Netz...)