PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Überstehende Texte (in den Rand hinein ragend)



droptix
27-01-2006, 19:57
Ich möchte Begriffe und Ausgaben einer Anwendung vom Fließtext abheben. In OpenOffice.org oder Word würde ich mir für sowas einfach Zeichenformate anlegen. Einmal die hervorzuhebenden Abschnitte markieren plus Doppelklick und fertig ist z.B. der grau hinterlegte und schräg geschriebene Text...

In LaTeX kann ich mir zumindest eigene Befehle oder Umgebungen definieren. Läuft eigentlich auf dasselbe hinaus. Also habe ich mir definiert:


% Farbe
\usepackage{color}
\definecolor{LightGray}{cmyk}{0,0,0,0.1}
% Befehle
\newcommand{\cmd}[1] {\colorbox{LightGray}{\texttt{#1}}}

Aufgerufen habe ich es im Dokument über:


[...] wieder gelöscht: \cmd{rm dummy-3.8.0.zip unzip.php}. Durch den [...]

Wie man hier (http://droptix.ohost.de/boards/latex--schrift_im_rand/) sehen kann, ragt die Schrift bei einem Befehl in den Rand hinein.

Eigentlich macht \cmd{foo} ja nix anderes, als den Hintergrund auf "LightGray" zu stellen und Schreibmaschinenschrift anzuwenden. Wieso ragt der Text über den Rand hinaus?

Es helfen auch keine "" (zwei aufeinander folgenden doppelten Anführungszeichen). Ist auch Blödsinn, weil LaTeX am Leerzeichen umbrechen müsste... tut es aber nicht.

Was tun?

andti
27-01-2006, 20:10
Hi.

Das liegt am Befehl \texttt{}. Dieser verhindert die Silbentrennung. Sie kann mit dem Paket \usepackage [htt] {hyphenat} eingeschaltet werden.

Möchtest du nicht, dass in der Umgebung Worte getrennt werden, so solltest du dich mit den Penalties auseinandersetzen. In deinem Fall wird LaTeX zwischen zwei Varianten entscheiden müssen: die betreffende Zeile zu wenig zu befüllen (und frühzeitig den Zeilenumbruch einleiten) oder über den Rand hinauszuschreiben. Mit den Penalties kannst du LaTeX vorgeben, welche der schlechten Lösungen du bevorzugst.

andti.

droptix
27-01-2006, 20:17
Sorry, das funzt leider net. Neben einem Haufen Warnings (You have used the htt option. You are likely to get many Font Warning messages. These can usually be ignored.) ragt der Inhalt meines \cmd{} Befehls nach wie vor in den Rand hinein. Muss das Paket speziell platziert werden? Sieht bei mir so aus:


% DIN A4, KOMA Script
\documentclass[a4paper,12pt,oneside,bibtotocnumbered]{scrbook}
% Ränder (linker Rand ist standardmäßig 1 Zoll, brauche aber mind. 35mm wegen Bindung)
\usepackage{geometry}
\geometry{paperwidth=210mm, paperheight=297mm, top=25mm, bottom=35mm, left=35mm, right=25mm}
% deutsche Umlaute
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
% neue deutsche Rechtschreibung
\usepackage[ngerman]{babel}
% Wort- und Silbentrennung im \texttt{} Befehl
\usepackage [htt]{hyphenat}

Silbentrennung also... am Leerzeichen hätte LaTeX aber problemlos trennen können, da muss es kein Wort zerhacken... Ist das wirklich auf die Silbentrennung zurück zu führen? Oder könnte das auch an der Farb-Box liegen?

Kann ich vielleicht auch meine Schriftart auf "Schreibmaschine" umstellen, ohne den \texttt{}Befehl verwenden zu müssen? Dann umgehe ich das Problem einfach.

Kleine Grundsatzfrage: Wie kommt es, dass in einigen Paketen plötzlich andere Features nicht mehr funktionieren, die teilweise so banal und einfach sind? Ist das einfach nur "schlecht programmiert" oder liegt das an TeX?

countbela666
28-01-2006, 01:48
Das liegt am Befehl \texttt{}. Dieser verhindert die Silbentrennung.Nö. Liegt an der colorbox, die kann nur einen Zeilenumbruch wenn eine parbox integriert ist. Da das wahrscheinlich nicht das ist, was du willst, versuch's mal so:

\documentclass{article}
\usepackage{color,soul}
\definecolor{lightgray}{cmyk}{0,0,0,.1}
\sethlcolor{lightgray}
\begin{document}
bla bla bla bla bla bla bla bla bla \hl{der folgende Text hat keine Bewandtnis, außer ein Umbruchproblem zu erzeugen} weiter im Text
\end{document}Grüße,
Marcel

droptix
30-01-2006, 11:23
Fein, das geht schonmal... Danke! Komischerweise entfernt LaTeX so alle Leerzeichen:


% Befehle
\newcommand{\cmd}[1] {\hl{\texttt{#1}}}

Man muss es so schreiben:


% Befehle
\newcommand{\cmd}[1] {\texttt{\hl{#1}}}

Wenn man's weiß... :D

Leerzeichen ersetzen: Nun benutze ich die Hintergrundfarbe, um auch bei Zeilenumbrüchen den Zusammenhang eines Befehls zu erkennen. Die Schriftart hebt das zusätzlich ab, aber mit dem leichten Grau kann man's noch besser erkennen. Beim Paket listings lassen sich Leerzeichen durch diesen Unterstrich ersetzen (der aussieht wie eine umgefallene eckige Klammer). Wie wird sowas gemacht?