Andere Schriftart für Großbuchstaben

Andere Schriftart für Großbuchstaben

Ist es möglich, immer dann eine andere Schriftart zu verwenden, wenn im Text ein Großbuchstabe vorkommt?

Wenn ich also einen Satz habe, „Dies ist ein Text.“, dann möchte ich, dass das erste T eine andere Schriftart hat als der Rest des Textes.

Wenn ich beispielsweise einen Satz habe wie „Dies ist ein Text mit dem Akronym GMT“, dann möchte ich, dass das erste T und GMT in einer anderen Schriftart als der Rest geschrieben werden.

Ebenso möchte ich bei „Dies ist ein Text mit einem Eigennamen: London“, dass das erste T und das L eine andere Schriftart haben.

Ich teile einen Screenshot der Art von Effekt, die ich möchte.Bildbeschreibung hier eingeben

Ich muss dies für mein gesamtes Dokument tun (möglicherweise mehrere Kapitel). Daher hoffe ich, einen Weg zu finden, dies automatisch zu tun, ohne jeden Buchstaben einzeln ändern zu müssen.

Antwort1

Beim Kompilieren mit XeLaTeX können Sie den \XeTeXinterchartoksMechanismus verwenden.

Die Idee besteht darin, eine Zeichenklasse bestehend aus lateinischen Großbuchstaben zu definieren, die die hexadezimalen Zeichencodes 0041 (A) bis 005A (Z) haben.

Anschließend definierst du einen Übergang von allen weiteren Zeichen zu dieser neuen Klasse. Die weiteren Zeichen haben für Wortgrenzen die Klasse 0 bzw. 4095. In diesen Übergang kannst du \calals Argument den nächsten Großbuchstaben einfügen. Wenn ich das richtig verstehe, löst das Einfügen dieses Makros einen weiteren Übergang aus, wenn auf den ersten noch weitere Großbuchstaben folgen, sodass nachfolgende Buchstaben ebenfalls als Argument von angezeigt werden \cal.

MWE basiert größtenteils aufXeLaTeX: Wie kann ich für lateinischen Text innerhalb eines nicht-lateinischen Textes eine andere Schriftfamilie angeben?UndÄndern der Zifferngröße für die Hauptschriftart in Xelatex:

\documentclass{article}

\XeTeXinterchartokenstate = 1\relax
\newXeTeXintercharclass\ucletterclass
\ExplSyntaxOn
\int_step_inline:nnnn {"0041}{1}{"005A}
 { \XeTeXcharclass #1 = \ucletterclass }
\ExplSyntaxOff
\def\mycal#1{$\cal{#1}$}

\XeTeXinterchartoks 0 \ucletterclass = {\mycal}
\XeTeXinterchartoks 4095 \ucletterclass = {\mycal}

\begin{document}
This is some text.

This is some text with an acronym in it GMT

This is some text with a proper name in it: London
\end{document}

Ergebnis:

Bildbeschreibung hier eingeben

Beachten Sie, dass Sie den Übergangsmechanismus vorübergehend ausschalten können, \XeTeXinterchartokenstate = 0\relaxwenn Sie irgendwo unveränderte Großbuchstaben benötigen.

Antwort2

Ich teile meinen Code/meine Lösung für den Fall, dass er jemand anderem hilft. Dies basiert auf Marijns Antwort und den Links in diesem Beitrag.

\documentclass[a4paper,11pt]{book}

\usepackage[default]{frcursive}



\XeTeXinterchartokenstate = 1\relax  
\newXeTeXintercharclass\ucletterclass  
\ExplSyntaxOn   
\int_step_inline:nnnn {"0041}{1}{"005A}
 { \XeTeXcharclass #1 = \ucletterclass }
\ExplSyntaxOff
\def\mycal#1{$\cal{#1}$}


\XeTeXinterchartoks 0 \ucletterclass = {\begingroup \fontfamily{phv}\fontseries{m}\fontshape{n}\selectfont}
\XeTeXinterchartoks \ucletterclass 0 = {\endgroup}
\XeTeXinterchartoks 4095 \ucletterclass = {\begingroup \fontfamily{phv}\fontseries{m}\fontshape{n}\selectfont}
\XeTeXinterchartoks \ucletterclass 4095= {\endgroup}


\begin{document}


This is some text.

This is some text with an acronym in it GMT

This is some text with a proper name in it: London


\end{document}


Hier ist das Ergebnis.

Bildbeschreibung hier eingeben

verwandte Informationen