Kann ich eine bestimmte Schriftart (Symbol) für ein Wort benutzen?

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Karlo Scheffholt
Forum-Anfänger
Forum-Anfänger
Beiträge: 14
Registriert: So 17. Mai 2020, 19:20

Kann ich eine bestimmte Schriftart (Symbol) für ein Wort benutzen?

Beitrag von Karlo Scheffholt »

Liebe LaTeX Nutzer und Nutzerinnen,

ich bin noch ziemlich neu auf dem Gebiet "LaTeX" unterwegs und wollte fragen, ob es eine Möglichkeit gibt, nur ein einziges Wort in der Schriftart Symbol zu schreiben. Kurze Information am Rande: mit \fontspec hat das ganze nicht funktioniert und auch nicht mit \newfamilyfont.

Präambelinformationen:
Ich benutze XeLaTeX, TeXworks und die sehr empfehlenswerten Schriftarten Minion Pro und Myriad Pro.

\documentclass[paper=a4,fontsize=11pt,oneside,headings=small,ngerman]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{fontspec}
\usepackage[T1]{fontenc}
\usepackage{arev}
\renewcommand{\rmdefault}
{\sfdefault}\setmainfont[Mapping=tex-text, Numbers=OldStyle]{Minion ro}
\setsansfont[Mapping=tex−text, Numbers=OldStyle]{Myriad Pro}
\usepackage[a4paper,left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}

\begin{document}
Dieser schöne Text ist in Minion Pro geschrieben, aber dieses [Wort] in Symbol.
\end{document}

Danke schon einmal im im Voraus
Karlo

PS: Ich benötige nicht Funktionen, wie \texttt, also würde es schon genügen, wenn ich die Schriftart von \texttt "manipulieren könnte".
PPS: Es ist keine Option \fontspec{Symbol}{Wort} \fontspec{Minion Pro} zu machen, denn dann funktionieren « » nicht mehr.
Danke!


MoeWe
Forum-Meister
Forum-Meister
Beiträge: 801
Registriert: Fr 30. Aug 2019, 15:35
Kontaktdaten:

Re: Kann ich eine bestimmte Schriftart (Symbol) für ein Wort benutzen?

Beitrag von MoeWe »

Mit \newfontfamily<\cmd>[<Optionen>]{<Schrift>} kannst Du bei fontspec einen neuen Schriftschalter bestellen, der wie \ttfamily funktioniert. Dann ist es ein Leichtes, einen Befehl analog zu \texttt zu definieren

\documentclass[paper=a4,fontsize=11pt,oneside,headings=small,ngerman]{scrartcl}
\usepackage[ngerman]{babel}

\usepackage{fontspec}
\setmainfont[Numbers=OldStyle]{LibertinusSerif-Regular.otf}
\setsansfont[Numbers=OldStyle]{LibertinusSans-Regular.otf}

\newfontfamily\fira[Ligatures=TeX, Numbers=OldStyle]{FiraSans-Regular.otf}
\newcommand*{\textfira}[1]{{\fira #1}}

\begin{document}
Dieser schöne Text ist in Libertinus geschrieben, aber dieses \textfira{[Wort]--fish} in Symbol.
\end{document}

Ich hab für das Beispiel Schriften genommen, die frei auf CTAN (und daher in MikTeX und TeX live) verfügbar sind.

Da Mapping=tex-text äquivalent zu Ligatures=TeX ist, kann es bei \setmainfont und \setmainfont weggelassen werden, da letzteres dort automatisch zur Anwendung kommt. Bei \newfontfamily ist das Ligatures=TeX dann drin, da es dort nicht zur Voreinstellung gehört.

Mit der Unicode-Engine XeTeX sollte man wie auch mit LuaTeX das Paket fontenc nicht laden. Das \renewcommand{\rmdefault}{\sfdefault} kam mir auch etwas komisch vor, daher ist es im Beispiel nicht mehr vorhanden.

---

edit Mir ist gerade aufgefallen, dass die fontspec-Dokumentation bei \newfontfamily und Co. das optionale Argument konsequent am Ende setzt

\newfontfamily⟨cmd⟩{⟨font⟩}[⟨font features⟩]

und nicht

\newfontfamily⟨cmd⟩[⟨font features⟩]{⟨font⟩}

wie hier. Offenbar funktionieren aber beide Methoden und die Version mit dem optionalen Argument vor dem obligatorischen (die Reihenfolge wie sie bei Befehlen, die mit \newcommand definiert werden, üblich ist) wird noch immer viel gebraucht.


Karlo Scheffholt
Forum-Anfänger
Forum-Anfänger
Beiträge: 14
Registriert: So 17. Mai 2020, 19:20

Re: Kann ich eine bestimmte Schriftart (Symbol) für ein Wort benutzen?

Beitrag von Karlo Scheffholt »

Hallo MoeWe,

ich glaube, ich habe mich ein wenig zu kryptisch ausgedrückt. Also Karten auf den Tisch: Ich möchte gerne UNICODE Symbole, wie zum Beispiel die Grafik Smileys im Bild in mein Dokument einbinden. Ich kann es schon mit den Schriftarten Code2003 und eben Symbol tun, aber musste feststellen, dass danach (damals habe ich \fontspec verwendet) die normalen UTF-8 Symbole, wie Gedankenstrich oder französische Anführungszeichen nicht mehr funktioniert haben. Da ich das nicht will, dachte ich, dass wenn es eine Möglichkeit gibt, ein Wort, oder in diesem Fall den Utf-8 Code, in diesen Schriftarten zu schreiben, das Problem gelöst wäre. Leider hat das mit deinem Code nicht ganz funktioniert, oder ich habe etwas falsch gemacht -- wie gesagt, ich bin noch ein blutiger Anfänger auf dem Gebiet LaTeX-Symbole ...

Bild

Viele Grüße und bleibt alle gesund,
Karlo


MoeWe
Forum-Meister
Forum-Meister
Beiträge: 801
Registriert: Fr 30. Aug 2019, 15:35
Kontaktdaten:

Re: Kann ich eine bestimmte Schriftart (Symbol) für ein Wort benutzen?

Beitrag von MoeWe »

Wenn das gewünschte Zeichen tatsächlich in der Font vorhanden ist, dann würde ich erwarten, dass die hier gezeigte Methode prinzipiell anwendbar ist. Ich konnte es mit Symbol nicht testen, da die Font auf meinem Rechner laut FontForge keine Emojis hat, aber mit Noto Emoji (von https://github.com/googlefonts/noto-emo ... egular.ttf) gehts

\documentclass[paper=a4,fontsize=11pt,oneside,headings=small,ngerman]{scrartcl}
\usepackage[ngerman]{babel}

\usepackage{fontspec}
\setmainfont[Numbers=OldStyle]{LibertinusSerif-Regular.otf}
\setsansfont[Numbers=OldStyle]{LibertinusSans-Regular.otf}

\newfontfamily\symbolfont{NotoEmoji-Regular.ttf}
\newcommand*{\symboltext}[1]{{\symbolfont #1}}

\begin{document}
Dieser schöne Text ist in Libertinus geschrieben,
aber dieses \symboltext{😀} in Symbol.
\end{document}

Leider weiß ich nicht genau, was Du bisher probiert hast und wie Du den Vorschlag von oben zu implementieren versucht hast, aber so sollte es gehen.

Vielleicht zeigst Du uns mal den Code, mit dem es nicht wie gewünscht funktioniert.


Karlo Scheffholt
Forum-Anfänger
Forum-Anfänger
Beiträge: 14
Registriert: So 17. Mai 2020, 19:20

Re: Kann ich eine bestimmte Schriftart (Symbol) für ein Wort benutzen?

Beitrag von Karlo Scheffholt »

Hallo MoeWe,

dann werde ich diesen Vorschlag umsetzen. Hier kommt mein Code:

«Minimalbeispiel»

\documentclass[paper=a4,fontsize=11pt,oneside,headings=small,ngerman]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{fontspec}
\usepackage[T1]{fontenc}
\usepackage{arev} % sans-serif math font
\renewcommand{\rmdefault}{\sfdefault}
\setmainfont[Mapping=tex-text, Numbers=OldStyle]{Minion Pro}
\setsansfont[Mapping=tex−text, Numbers=OldStyle]{Myriad Pro}
\newfontfamily\fira[Ligatures=TeX, Numbers=OldStyle]{FiraSans-Regular.otf}
\newcommand*{\textfira}[1]{{\fira #1}}
\usepackage[a4paper,left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\begin{document}
\renewcommand{\figurename}{\textsf{M}} 
Dieser schöne Text ist in Libertinus geschrieben, aber dieses \textfira{[Wort] ^^^^^1f601 --fish} in Symbol. 
\end{document}

Oder vielleicht liegt der Fehler darin, dass ich zu minimal in meinen Beispielen bin.

Maximalbeispiel :D

\documentclass[paper=a4,fontsize=11pt,oneside,headings=small,ngerman]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{fontspec}
\usepackage{wesa}
\usepackage{amsmath}
\usepackage[labelfont={bf,sf},font={small},labelsep=space]{caption}
\usepackage[table]{xcolor}
\usepackage{shapepar}
\usepackage[T1]{fontenc}
\usepackage{arev} % sans-serif math font
\renewcommand{\rmdefault}{\sfdefault}
\setmainfont[Mapping=tex-text, Numbers=OldStyle]{Minion Pro}
\setsansfont[Mapping=tex−text, Numbers=OldStyle]{Myriad Pro}
\newfontfamily\fira[Ligatures=TeX, Numbers=OldStyle]{FiraSans-Regular.otf}
\newcommand*{\textfira}[1]{{\fira #1}}
\usepackage[a4paper,left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\usepackage{microtype}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\rhead{\thepage} \lhead{\textit{\today, Klasse 8a, Name:} \fontspec{Patrick Hand}{Kilian Scheffold}}
\renewcommand{\headrulewidth}{0.4pt}
\cfoot{}
\renewcommand{\footrulewidth}{0pt}
\usepackage{multicol}
\usepackage{blindtext,graphicx}
\usepackage{subfigure}
\usepackage{lineno}
\setlength{\columnsep}{25pt}
\usepackage{enumitem}
\usepackage{pstricks}
\usepackage{multirow}
\usepackage{tikzsymbols}
\usepackage{tikz}
\usepackage{textcomp}
\usepackage[fixed]{fontawesome5}
\usepackage{colortbl}
\usepackage{tikz}
\usepackage[utf8]{inputenc}
\usepackage{pifont}
\usepackage{amssymb}
\usepackage{bbding}
\usepackage{wasysym}
\usepackage{tabu}
\usepackage{rotating}
\usepackage{fancybox}
\usepackage{tabularx}
\newcolumntype{x}[1]{!{\centering\arraybackslash\vrule width #1}}
\renewcommand{\arraystretch}{1.5}
\usepackage{shadow}
\usepackage{Marginnote}
\newcommand\tabrotate[1]{\begin{turn}{90}\rlap{#1}\end{turn}}
\usepackage{varwidth}
\newcommand\tabvarwidth[2][3cm]{\begin{varwidth}[b]{#1}\centering #2\end{varwidth}}
\usepackage[urlcolor=linkcolor=white]{hyperref}
\tikzstyle{mybox}=[draw=black, fill=gray!10, align=left, text width = 0.9\linewidth]
\usepackage{microtype}
\usepackage{mdframed}
\mdfdefinestyle{myquote}
{leftmargin = 1cm, rightmargin = 1cm, hidealllines = true, leftline}
\newmdenv[style=myquote]{myquote}
\usepackage{lipsum}
\newenvironment{Figure}
{\par\medskip\noindent\minipage{\linewidth}}
{\endminipage\par\medskip}
\newcommand*{\spir}[1]{\raisebox{2.5ex}{\scalebox{1}[-1]{`}}#1}
\usepackage{colortbl}
\renewcommand{\thefootnote}{\textit{\alph{footnote}}}
\newfontfamily\NHLight[Mapping=tex-text, Numbers=OldStyle,ItalicFont=MyriadPro-LightIt]{Myriad Pro Light}
\newcommand\textrmlf[1]{{\NHLight#1}}
\newcommand\textitlf[1]{{\NHLight\itshape#1}}
\usepackage{pstricks}
\newsavebox{\IBox}
\usepackage{framed}
\usepackage{mdframed}
\usepackage{arydshln}

\begin{document}
\renewcommand{\figurename}{\textsf{M}} 
Dieser schöne Text ist in Libertinus geschrieben, aber dieses \textfira{[Wort] ^^^^^1f601 ^^^^260e--fish} in Symbol.

Deine erste Antwort hat auch eigentlich gut funktioniert, nur, dass anstatt Symbolen die berühmten Fragezeichenrauten erschienen.

Das Ergebnis Deines letzten Beispiels sah leider aus, wie ein unförmiges, lüsterndes Monster. Ich hoffe, das jetztige Beispiel hilft, dieses leidige Thema zu beenden.

Viele Grüße
Karlo

PS: Dejavu Sans könnte bei der Lösung eine Rolle spielen, da ich weiß, dass jemand diese Schriftart für diese Symbole auf eine mir unbekannte Art und Weise verwendet und, da diese Symbole die einzigen Emoticons in der Schriftart DejaVu Sans Oblique vorkommen (https://www.fileformat.info/info/unicod ... =emoticons) Danke!


MoeWe
Forum-Meister
Forum-Meister
Beiträge: 801
Registriert: Fr 30. Aug 2019, 15:35
Kontaktdaten:

Re: Kann ich eine bestimmte Schriftart (Symbol) für ein Wort benutzen?

Beitrag von MoeWe »

Ich hab das Gefühl, wir reden aneinander vorbei.

In Deinem Eingangspost erwähntest Du, dass Du gerne die Schrift Symbol verwenden würdest, später nennst Du auch Code2003 als Alternative.

In meinem Code habe ich beispielhaft gezeigt, wie man das Ganze mit Libertinus Serif als Hauptschrift, Libertinus Sans als serifenlose Akzentschrift und Fira Sans als "Sonderschrift" anstellt. Ich habe diese Schriften rein aus dem Gesichtspunkt ausgewählt, dass sie frei verfügbar und auf CTAN und auch in MikTeX und TeX live vorhanden sind. Natürlich möchte ich Dich nicht auf die Schriften festnageln. Du kannst die Fira gerne durch Symbol oder Code2003 ersetzen. Ich habe das nur nicht gemacht, da ich nur eine sehr merkwürdige Symbol und keine Code2003 auf meinem Rechner habe. Es ist ein Leichtes, das anzupassen. Nimm den Block

\newfontfamily\fira[Ligatures=TeX, Numbers=OldStyle]{FiraSans-Regular.otf}
\newcommand*{\textfira}[1]{{\fira #1}}

schreib Deine Schrift rein und benenn die Befehle sinnvoll um z.B.

\newfontfamily\kssymbol[Ligatures=TeX]{Symbol}
\newcommand*{\textkssymbol}[1]{{\kssymbol #1}}

wie auch vorhin mit NotoEmoji gezeigt.

Dein erstes Minimalbeispiel funktioniert nicht, da die genutzte Fira Sans eben den Emoji nicht enthält. (Außerdem sollte \usepackage[T1]{fontenc} mit LuaLaTeX und XeLaTeX weg. Unter LuaTeX geht ferner ^^^^^1f601 nicht, anscheinend erwartete LuaTeX eine gerade Anzahl an Hütchen ^^^^^^01f601 geht sowohl in LuaTeX als auch XeTeX einwandfrei.) Es muss eine andere Schrift, die dieses Zeichen hat, her.

Das Maximalbeispiel ist, soweit ich das sehen kann, was das Kernproblem angeht, genau gleich gelagert. Die vielen zusätzlich geladenen Pakete sollten da keinen Unterschied machen (überprüfen konnte ich das nicht, da das Maximalbeispiel nicht vollständig war - es fehlte ein \end{document} - und auch vervollständigt nicht kompilierte). Es fällt aber auf, dass Du sehr viele Pakete lädst. Einige auch doppelt (microtype). Brauchst Du die alle in dem Dokument? Außerdem sind einige ungute Kombinationen dabei: Statt fancyhdr sollte man mit dem KOMA-Script-Klassen besser scrlayer-scrpage nutzen. hyperref sollte eigentlich immer das zuletzt geladene Paket sein. fontenc und inputenc sollte man mit XeLaTeX oder LuaLaTeX nicht nutzen.

Das "lüsterne Monster" erschien in dem Beispiel mit Noto Emoji, da der Emoji in der Schriftart eben so aussieht. Du kannst ja eine andere Schrift wählen, in der der Emoji hübscher ist. Wichtig ist nur, dass Du eine Schrift finden musst, in der der Emoji/das Zeichen wirklich vorhanden ist. LaTeX arbeitet von sich aus nicht mit fallbacks auf andere Schriften, falls ein Zeichen nicht gefunden werden kann.

Wenn Dir die DejaVuSans-Oblique besser gefällt, dann nimm eben die (hab mit der Version von https://dejavu-fonts.github.io/Download.html getestet)

\documentclass[paper=a4,fontsize=11pt,oneside,headings=small,ngerman]{scrartcl}
\usepackage[ngerman]{babel}

\usepackage{fontspec}
\setmainfont[Numbers=OldStyle]{LibertinusSerif-Regular.otf}
\setsansfont[Numbers=OldStyle]{LibertinusSans-Regular.otf}

\newfontfamily\djvuso[Ligatures=TeX]{DejaVuSans-Oblique.ttf}
\newcommand*{\djvusotext}[1]{{\djvuso #1}}

\begin{document}
Dieser schöne Text ist in Libertinus geschrieben,
aber dieses \djvusotext{😀 -- ^^^^^^01f601} in Symbol.
\end{document}

Karlo Scheffholt
Forum-Anfänger
Forum-Anfänger
Beiträge: 14
Registriert: So 17. Mai 2020, 19:20

Re: Kann ich eine bestimmte Schriftart (Symbol) für ein Wort benutzen?

Beitrag von Karlo Scheffholt »

Halleluja!

Danke, das hat hervorragend funktioniert! Ich hoffe, dass ich Deine Nerven damit nicht überstrapaziert habe ... Übrigens: Nein, eigentlich brauche ich nicht alle diese Pakete für mein Dokument, aber will nicht immer wieder herausfinden, welches Paket ich doch gleich für welche Funktion bräuchte und wo ich die außerdem noch finde ...

Viele Grüße

Karlo


MoeWe
Forum-Meister
Forum-Meister
Beiträge: 801
Registriert: Fr 30. Aug 2019, 15:35
Kontaktdaten:

Re: Kann ich eine bestimmte Schriftart (Symbol) für ein Wort benutzen?

Beitrag von MoeWe »

Fein, dass es jetzt geht.

Karlo Scheffholt hat geschrieben:
Fr 22. Mai 2020, 23:20

Nein, eigentlich brauche ich nicht alle diese Pakete für mein Dokument, aber will nicht immer wieder herausfinden, welches Paket ich doch gleich für welche Funktion bräuchte und wo ich die außerdem noch finde ...

Das kann ich schon nachvollziehen. Dann empfehle ich aber stattdessen eine kleine Dokumentation für Dich selbst zu schreiben, wo Du die für Dich wichtigen Pakete und ihre Anwendung kurz zusammenfasst. Wenn Du einfach jedes Paket, das Du jemals genutzt hast, in Deine Präambel zwängst, dann verwächst die schnell zu einem nicht mehr zu bändigen Monster aus doppelt und dreifach geladenen Paketen und zusätzlichem Code. Das sorgt nicht nur dafür, dass Dein Dokument unter Umständen viel länger zum Kompilieren braucht als eigentlich nötig, sondern kann auch zu echten Problemen führen.

Z.B. sollte man fontenc wirklich nicht mit XeLaTeX nutzen

\documentclass[british]{article}
\usepackage{fontspec}
\usepackage[T1]{fontenc}

\begin{document}
Grüße
\end{document}

Je mehr Pakete Du lädst, desto weniger wirst Du selbst durch den Wust durchsteigen. Das führt dann unter Umständen zu merkwürdigen Verhalten, Fehlern oder sonstigem Ärger. Ich weiß nicht, wie es bei Dir ist, aber gerade bei Nutzern, die lange Präambeln als "Vorlage" vorgesetzt bekommen, führen solche langen Listen an Paketen dazu, dass man sich nicht mit der Präambel beschäftigt und zu dem Schluss kommt, dass LaTeX viel zu kompliziert sei.

Daher der Rat: Lade in jedem Dokument nur die Pakete, die Du brauchst. Sorg dafür, dass Du weißt, wfür alle geladenen Pakete in etwa gut sind. Sorg dafür, dass Du Pakete nur einmal lädst. Beachte Warnungen in der .log-Datei zu Inkompatibilitäten.


Karlo Scheffholt
Forum-Anfänger
Forum-Anfänger
Beiträge: 14
Registriert: So 17. Mai 2020, 19:20

Re: Kann ich eine bestimmte Schriftart (Symbol) für ein Wort benutzen?

Beitrag von Karlo Scheffholt »

Hallo MoeWe,

danke für deinen Rat. Ich werde ihn mir zu Herzen nehmen. Nur bei der Vermutung, dass ich irgendwann meinen könnte, LaTeX sei viel zu schwierig etc. pp. kann ich dich beruhigen: Ich habe früher sehr viel mit Word gearbeitet und bin der unzerstörbaren Meinung, dass LaTeX jedes andere Programm um Längen schlägt (ich weiß manchmal selbst nicht warum ...)

Grüße und danke für die Tipps und die nette Diskussion
Karlo


Antworten