Ich versuche mir meinen eigenen emph Befehl für Typewriter zu erstellen. Dazu habe ich den Code von „latex.ltx“ verwendet, doch ich schaffe es nicht das Verhalten von \em und \emph zu erzeugen. Eine Antwort von Stefan, wie ich mir ein „fettes“ \emph erstelle hat mir leider nicht weitergeholfen.

Bislang habe ich folgendes:

\documentclass{scrartcl}

\makeatletter
\newcommand\Schreibmaschine{}
\newcommand\Temph{}

\DeclareRobustCommand\Schreibmaschine
        {\@nomath\Schreibmaschine \ifdim \fontdimen\@ne\font >\z@
                       \normalfont \else \ttfamily \fi}

\DeclareTextFontCommand{\Temph}{\Schreibmaschine}
\makeatother

\begin{document}
\Schreibmaschine
Dies ist ein Text mit \Temph{(leider nicht) hervorgehobenen} Teilen.
\end{document}

gefragt 12 Sep '13, 18:50

Epllus's gravatar image

Epllus
620269
Akzeptiert-Rate: 46%

bearbeitet 12 Sep '13, 20:26

saputello's gravatar image

saputello
11.1k174365

Ist das nur bei mir so, dass man auf \@ne draufklicken kann und man weitergeleitet wird?

(13 Sep '13, 10:19) Epllus

@Epl <- Das ist genau dieses Feature, je nach Einstellungen bekommst du dann eine Mail. Wie du siehst reicht schon ein Teil des Namens aus.

(13 Sep '13, 16:04) Johannes

Frage mich gerade, ob man das nicht unterbinden sollte, wenn ein \ direkt davor steht…

(13 Sep '13, 17:43) Epllus

Du versuchst, die Schreibmaschinenschrift an \fontdimen 1 zu erkennen. Allerdings gibt \fontdimen 1 die Schrägheit an. Für eine Dicktengleiche wäre hingegen typisch, dass der Wortzwischenraum nicht gedehnt und nicht geschrumpft werden kann, also \fontdimen 3 und \fontdimen 4 0 sind:

\documentclass{scrartcl}

\makeatletter
\newcommand\Schreibmaschine{}
\newcommand\Temph{}

\DeclareRobustCommand\Schreibmaschine{%
  \@nomath\Schreibmaschine 
  \ifdim \fontdimen\thr@@\font >\z@
    \ifdim \fontdimen 4 \font >\z@ \ttfamily
    \else \normalfont
    \fi
  \else \normalfont
  \fi
}

\DeclareTextFontCommand{\Temph}{\Schreibmaschine}
\makeatother

\begin{document}
\Schreibmaschine
Dies ist ein Text mit \Temph{hervorgehobenen} Teilen.
\end{document}

Ergebnis

Hier noch die Erklärungen zu den einzelnen \fontdimen-Parametern:

Parameter NummerBedeutung
1Schrägheit des Fonts; üblicherweise haben aufrechte Schriften einen Wert von 0pt, während Kursive (\itshape) und Schräge (\slshape) einen Wert größer 0 haben.
2Wortzwischenraum; das ist der Standardzwischenraum, der beispielsweise innerhalb einer \mbox verwendet würde.
3Maximale Dehnbarkeit des Wortzwischenraums; um diesen Wert darf der Wortzwischenraum gedehnt werden, ohne dass dies eine Beeinträchtigung des Satzes darstellt.
4Maximale Schrumpfbarkeit des Wortzwischenraums; um diesen Wert darf der Wortzwischenraum vermindert werden, ohne dass dies eine Beeinträchtigung des Satzes darstellt.
5x-Höhe; der Wert von 1ex bei diesem Font; die tatsächliche Höhe des x darf davon abweichen!
6Geviert; der Wert von 1em bei diesem Font; die tatsächliche Breite des m darf davon abweichen!
7Satzende-Abstand; das ist der Abstand, der bei \nonfrenchspacing nach einem Punkt, der auf einen Kleinbuchstaben folgt, eingefügt wird.

Mathefonts haben statt der angegebenen 7 \fontdimen-Parametern deutlich mehr (min. 22).

Ein Test gegen \f@family wäre – in Anlehnung an die in der Frage erwähnte Antwort – natürlich ebenfalls möglich. Allerdings kann man in dem Fall fast nur testen, ob die aktuelle Familie \ttdefault entspricht, weil man ja unmöglich auf alle Dicktengleichen-Familien, die es gibt, testen kann. Für den Test bietet sich KOMA-Script \ifstr an, weil das auch dann noch funktioniert, falls \ttdefault (wie üblich) \long definiert ist, während \f@family (wie üblich) nicht \long definiert ist:

\documentclass{scrartcl}

\makeatletter
\newcommand\Schreibmaschine{}
\newcommand\Temph{}

\DeclareRobustCommand\Schreibmaschine{%
  \@nomath\Schreibmaschine 
  \ifstr{\ttdefault}{\f@family}{\normalfont}{\ttfamily}%
}

\DeclareTextFontCommand{\Temph}{\Schreibmaschine}
\makeatother

\begin{document}
\Schreibmaschine
Dies ist ein Text mit \Temph{hervorgehobenen} Teilen.
\end{document}

Um das zu verstehen, muss man auch nicht erst TeX studieren, sondern muss nur in »LaTeX2ε font selection« die Abschnitt 2.3, »Internals«, und 2.4, »Parameters«, aufmerksam gelesen haben.

Permanenter link

beantwortet 12 Sep '13, 19:45

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

bearbeitet 12 Sep '13, 20:26

Funktioniert perfekt. Danke!

(13 Sep '13, 10:18) Epllus
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×78
×6
×1

gestellte Frage: 12 Sep '13, 18:50

Frage wurde gesehen: 8,277 Mal

zuletzt geändert: 13 Sep '13, 17:43