goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Direktlinks:
Zuletzt aktive Beiträge
Unbeantwortete Beiträge
[Erweitert]

Forenstatistik:
Beiträge: 101745
Top-Poster: Johannes_B (5072)

Wir begrüßen unseren neuesten Benutzer localhorst.

Links:


Mit Unterstützung von DANTE e.V.: Deutschsprachige Anwendervereinigung TeX. Danke den Mitgliedern!





Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Wort beim ersten Auftreten highlighten

 

DEVV
Forum-Fortgeschrittener
Forum-Fortgeschrittener

Beiträge: 89
Anmeldedatum: 31.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.10.2019, 23:17     Titel: Wort beim ersten Auftreten highlighten
  Antworten mit Zitat      
Hallo Leute,

ich möchte, dass ein Befehl beim ersten Auftreten anders funktioniert, als beim zweiten oder dritten.

Dabei handelt es sich um \emph.
Ich möchte, dass \emph{WORT} ein Wort beim ersten Auftreten kursiv und fett schreibt, im folgenden soll es aber nur noch kursiv geschrieben werden.

Ist soetwas möglich?

Viele Grüße
D
Private Nachricht senden Benutzer-Profile anzeigen

DEVV
Forum-Fortgeschrittener
Forum-Fortgeschrittener

Beiträge: 89
Anmeldedatum: 31.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2019, 05:37     Titel:
  Antworten mit Zitat      
Nach viel Googler-Rei hab ichs hinbekommen:

Code

\usepackage{etoolbox}
\renewcommand{\emph}[1]{\ifcsundef{#1}{\csdef{#1}{}\textbf{\textit{#1}}}{\textit{#1}}}
 


Das funktioniert recht gut, leider klappt die Methode nicht, wenn man die \_ Implementierung aus https://golatex.de/normaler-unterstrich-t22350.html verwenden möchte Sad
Private Nachricht senden Benutzer-Profile anzeigen

Bartman
Forum-Meister
Forum-Meister


Beiträge: 2084
Anmeldedatum: 16.07.09
Wohnort: Hessische Provinz
Version: ---
     Beitrag Verfasst am: 20.10.2019, 09:40     Titel:
  Antworten mit Zitat      
Deine Änderung des Befehls \emph führt bei mir nicht zu dem erwarteten Ergebnis und ist außerdem fragwürdig, weil er den Text nicht einfach nur neigt, sondern, bei verschachtelter Anwendung, die Neigung wieder aufheben kann.

Theoretisch müsstest Du eher den Befehl \eminnershape anpassen.

Ich finde es in diesem Zusammenhang besser, einen eigenen Befehl für diese besondere Art der Hervorhebung anzulegen.

Mein Beispiel orientiert sich an der Antwort von Alan Munn.

Code
\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{etoolbox}
\usepackage{relsize}% für \textscale

\newcommand{\wordlist}{}

\newcommand{\emphasize
}[1]{%
    \ifinlist{#1}{\wordlist}{%
        \emph{#1}%
    }{%
        \listadd{\wordlist}{#1}%
        \textbf{\emph{#1}}%
    }%
}

\begin{document}
\emphasize{S.root\_array} \emphasize{S.root\_array} \emphasize{S.root\_array}
\emphasize{S.r[i].lx\_top} \emphasize{S.r[i].lx\_top} \emphasize{S.r[i].lx\_top}

\smallskip
\renewcommand{\wordlist}{}
\renewcommand{\_
}{\textscale{.7}{\textunderscore}}
\emphasize{S.root\_array} \emphasize{S.root\_array} \emphasize{S.root\_array}
\emphasize{S.r[i].lx\_top} \emphasize{S.r[i].lx\_top} \emphasize{S.r[i].lx\_top}

\smallskip
\renewcommand{\wordlist}{}
\renewcommand{\_
}{\rule[-1pt]{5pt}{0.5pt}}
\emphasize{S.root\_array} \emphasize{S.root\_array} \emphasize{S.root\_array}
\emphasize{S.r[i].lx\_top} \emphasize{S.r[i].lx\_top} \emphasize{S.r[i].lx\_top}
\end{document}
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2019, 10:58     Titel:
  Antworten mit Zitat      
DEVV hat Folgendes geschrieben:
Das funktioniert recht gut, leider klappt die Methode nicht, wenn man die \_ Implementierung aus https://golatex.de/normaler-unterstrich-t22350.html verwenden möchte Sad

Wie dort erklärt, ist \_ normalerweise vom verwendeten Font abhängig, weil es das Zeichen aus dem entsprechenden Font verwendet. Definiert man nun \_ zu einer Rule fester Höhe, Tiefe und Breite um, wird das natürlich unabhängig vom Font und daher auch nicht mit dem Font dicker oder dünner und berücksichtigt auch keine Schrägstellung und auch Kerning und in der gezeigten Form nicht einmal die Größe des Fonts. Daher müsste man min. auf Basis der Einheit ex oder em statt pt definieren (um die Abhängigkeit von der Schriftgröße zu bekommen) und ggf. auch noch auf diverse Schriftattribute testen (siehe dazu die \f@…-Makros im fntguide).

Aus all diesen Gründen ist es häufig einfacher (und nicht selten auch besser), sich entweder auf den Fontdesigner zu verlassen und Zeichen zu verwenden, wie der Fontdesigner das vorgesehen hat, oder einen Font zu wählen, bei dem einem alle Zeichen zusagen. In dem Fall zeigt dann Bartman's Antwort sehr schön, wie man die Anforderung einer neuen Hervorhebungsart lösen kann.

DEVV
Forum-Fortgeschrittener
Forum-Fortgeschrittener

Beiträge: 89
Anmeldedatum: 31.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2019, 14:33     Titel:
  Antworten mit Zitat      
Bartman hat Folgendes geschrieben:
Deine Änderung des Befehls \emph führt bei mir nicht zu dem erwarteten Ergebnis und ist außerdem fragwürdig, weil er den Text nicht einfach nur neigt, sondern, bei verschachtelter Anwendung, die Neigung wieder aufheben kann.

Theoretisch müsstest Du eher den Befehl \eminnershape anpassen.

Ich muss zugeben, dass ich deine gesamte Antwort nicht verstehe.
1. Wieso verhält sich \emph bei mir anders, als bei dir? Oder hast du einen Sonderfall gefunden, in dem \emph nicht funktioniert?
2. Wann genau hebt \emph Kursivität wieder auf?

Eine Verarschachtelte Anwendung wäre laut meiner eigenen Definition einfach ein Anwendungsfehler. Ich wüsste nicht, wieso ich schachtelt sollte...
Private Nachricht senden Benutzer-Profile anzeigen

Bartman
Forum-Meister
Forum-Meister


Beiträge: 2084
Anmeldedatum: 16.07.09
Wohnort: Hessische Provinz
Version: ---
     Beitrag Verfasst am: 20.10.2019, 18:56     Titel:
  Antworten mit Zitat      
DEVV hat Folgendes geschrieben:
1. Wieso verhält sich \emph bei mir anders, als bei dir? Oder hast du einen Sonderfall gefunden, in dem \emph nicht funktioniert?


Die Übersetzung mit pdfLaTeX wirft bei meiner MiKTeX-Distribution des 1. Oktober (ein Update scheint gegenwärtig nicht möglich zu sein) ebenso wie bei TeX Live 2017 von Overleaf mit dem Beispiel

Code
\documentclass{scrartcl}
\usepackage{etoolbox}

\renewcommand{\emph}[1]{\ifcsundef{#1}{\csdef{#1}{}\textbf{\textit{#1}}}{\textit{#1}}}

\begin{document}
Text \emph{Te\_xt} Text
\end{document}


die Fehlermeldung

Code
! Missing \endcsname inserted.
<to be read again>
                   \protect
l.7 Text \emph{Te\_xt}
                       Text


DEVV hat Folgendes geschrieben:
2. Wann genau hebt \emph Kursivität wieder auf?


Was ist der Unterschied zwischen \emph{} und \textit{}?

Der Nutzer Mico hat den für den Befehl \emph wesentlichen Quelltext aus dem LaTeX-Kern der Datei latex.ltx entnommen und zusammengefasst:

Code
\DeclareTextFontCommand{\emph}{\em}
\DeclareRobustCommand\em
        {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
                       \eminnershape \else \itshape \fi
}%
\def\eminnershape{\upshape}%


Man findet die Datei im MiKTeX-Ordner unter dem Pfad tex\latex\base.
Private Nachricht senden Benutzer-Profile anzeigen

DEVV
Forum-Fortgeschrittener
Forum-Fortgeschrittener

Beiträge: 89
Anmeldedatum: 31.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2019, 19:35     Titel:
  Antworten mit Zitat      
Ich habe ja bereits angesprochen, dass es ein Problem mit \_ geben könnte.

Aber bisher ist das gefundene die beste Version.

Warum mich jetzt stören sollte, das \textit anders funktioniert als \emph weiß ich nicht ganz, denn ich möchte ja einfach nur erreichen, dass meine getaggten Wörter beim ersten Auftreten fett und kursiv und bei jedem weiteren Auftreten nur noch kursiv geschrieben werden.
Private Nachricht senden Benutzer-Profile anzeigen

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de


  Datenschutzerklärung | Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2020 goLaTeX.de