PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sonderzeichen mit farbigen Umlauten, Akzenten, Tilden etc.?



mc80
24-08-2009, 03:13
Hallo,

da ich mir in LaTeX Grammatik- und Aussprachelernhilfen für Fremdsprachen erstellen will, hat sich folgende Frage ergeben:

Wie kann man nur das diakritische Zeichen eines Buchstabens einfärben?
Also ñ ã ô ä ö ü í à usw. mit farbiger Tilde/Umlaut/Akzent ...

Danke!

1stLuebbi
25-08-2009, 21:21
Hallo mc80,

deine Frage hat mich irgendwie beschäftigt und ich habe es tatsächlich (fast) hinbekommen: Mit dem Paket (wsu)ipa ist es möglich, ein Zeichen als über oder unter einem Buchstaben zu definieren; dieses diakritische Zeichen kann man dann auch einfärben. Hier das Minimalbsp.:


\documentclass{article}
\usepackage{ipa}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{soul}
\usepackage{color}
\usepackage{xcolor}
\begin{document}
Das ist ein Versuch: T\diatop[\textcolor{red}{\midtilde}|i]lde

Noch ein Versuch: \diatop[\textcolor{red}{´}|A]ccent

Bei Uml\diatop[\textcolor{red}{''}|a]uten muss man tricksen...
\end{document}

Lass dir das (wsu)ipa-Paket am besten automatisch installieren, ich weiß nicht mehr genau, ob es unter wsuipa oder nur unter ipa zu finden ist. Eine Anleitung befindet sich dann auf jeden Fall unter doc/latex/ipa.

Was mir aufgefallen ist: Man bemerkt die so gekennzeichneten Zeichen kaum, wäre eine Blockkennzeichnung mit \hl (z.B. T\hl{\~i}lde) nicht vielleicht doch besser?

Viele Grüße
Katrin

mc80
26-08-2009, 23:24
Hallo Katrin

danke erstmal für die Antwort. Die Grundidee, die dahinter steckt, hat mich auf die Idee gebracht, etwas intensiver nach Möglichkeiten zu suchen, um mehrere Buchstaben deckungsgleich übereinander zu legen.

Dabei bin ich über das Paket microtype gestolpert, mit dem das prinzipiell möglich ist.
Minimalbeispiel:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{color}
\usepackage{microtype}

\begin{document}
\begin{flushleft}
\textls*[-500]{\textcolor{red}{ä}a}\\
\textls*[-555]{\textcolor{red}{ñ}n}\\
\textls*[-278]{\textcolor{red}{î}ı}
\end{flushleft}
\end{document}

Grundidee dabei ist, jedes Zeichen in rot auszugeben, dann eine Buchstabenbreite nach links zu gehen, und anschließend die Umlaut-/Akzent-freie Version des Buchstabens genau darüber zu schreiben. Zum Glück gibt es auch ein punktloses "i"

Das Ergebnis sieht schon recht gut aus, nur ist da leider der "Rückschritt" individuell abhängig von Zeichen, Schriftart, Schriftform, weiteren eingebundenen Paketen.

Daher ergibt sich jetzt als weitere Frage:

Mit welchem LaTeX-Befehl kann man die Breite eines Zeichen in der aktuellen Schriftart erfahren?
Also sowas in der Art von \letterwidth{ö} analog zu \textwidth bzw. \pagewidth

Danke!

rais
27-08-2009, 18:13
Moin moin,


Grundidee dabei ist, jedes Zeichen in rot auszugeben, dann eine Buchstabenbreite nach links zu gehen, und anschließend die Umlaut-/Akzent-freie Version des Buchstabens genau darüber zu schreiben. Zum Glück gibt es auch ein punktloses "i"

für so einen Rückschritt könntest Du auch \makebox verwenden


\makebox[0pt][l]{a}b

schreibt `b' über `a'; wenn beide Zeichen gleich breit sind, bräuchtest Du Dir nicht mal Gedanken zu machen über


Mit welchem LaTeX-Befehl kann man die Breite eines Zeichen in der aktuellen Schriftart erfahren?



\newlength\foo
%
\settowidth\foo{Zeichen}

dann steht in \foo die Breite des Zeichens.

MfG

mc80
27-08-2009, 20:53
Hallo Rainer,

mit \makebox klappt das super, vielen Dank für den Tipp!

Was beim Übereinanderlegen jetzt noch gestört hat, waren Farbsäume bzw. optische Verfettung der Buchstaben je nach Zoomstufe im PDF-Viewer. Dagegen hat das Paket contour geholfen.

Minimalbeispiel:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{color}
\usepackage{contour}
\contourlength{0.005em}

\begin{document}
\begin{flushleft}
\makebox[0pt][l]{\textcolor{red}{ä}}\contour{white}{a}
\makebox[0pt][l]{\textcolor{red}{ñ}}\contour{white}{n}
\makebox[0pt][l]{\textcolor{red}{î}}\contour{white}{ı}
\makebox[0pt][l]{\textcolor{red}{ç}}\contour{white}{c}
\end{flushleft}
\end{document}

… was jetzt das Problem (fast) perfekt löst. Bei Gelegenheit werde ich dafür noch ein \newcommand basteln, um das Ganze etwas zu vereinfachen.

Gruß
Michael

rais
28-08-2009, 21:49
Moin Michael,


Was beim Übereinanderlegen jetzt noch gestört hat, waren Farbsäume bzw. optische Verfettung der Buchstaben je nach Zoomstufe im PDF-Viewer. Dagegen hat das Paket contour geholfen.

sehr schöne Lösung mit contour -- das Paket kannte ich noch gar nicht;-)
Otoh ließe sich evtl auch einfach eine weiße Box dazwischenschieben, etwa


\documentclass[pdftex]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{color}
\newlength\myx
\newlength\myy
\newlength\myo
\setlength\myo{0.15pt}%
\newcommand*\foo[3][red]{%
\makebox[0pt][l]{\color{#1}#2}%
\settowidth\myx{#3}%
\settoheight\myy{#3}%
\addtolength\myx{2\myo}%
\addtolength\myy{2\myo}%
\makebox[0pt][l]{\hspace*{-\myo}\color{white}\rule[-\myo]{\myx}{\myy}}%
#3%
}
\begin{document}
\foo{ä}{a}
\foo{ñ}{n}
\foo{î}{ı}
\foo[blue]{ç}{c}
\end{document}

obwohl, so Du bereits mit `outline' arbeitest, ist das in dieser Form nicht unbedingt von Vorteil ... wenn nicht, dann ist eine Box gegen (standardmäßig) sechzehn Zeichen vllt nicht zu verachten;-)

MfG