Sowohl in normalem Fließtext, als auch in durch Makros erzeugten oder aus Datei eingelesenen Texten möchte ich bestimmte Wörter hervorheben, ohne dass ich sie alle durch Makros ersetzen muss.

An einem einfachen Beispiel:

Open in Online-Editor
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{xcolor}
\begin{document}
\blindtext
\end{document}

Hierin möchte ich alle Vorkommen des Wortes "ist" rot und fett markiert haben. Das nutze ich z.B. um meine zu oft wiederkehrenden Ausdrücke zu erkennen, um sie im Anschluss zu variieren. XeTeX und LuaTeX-Lösungen sind auch willkommen.

Wie schaffe ich, im Fließtext vorkommende Wörter automatisch hervorheben zu lassen?

gefragt 07 Mär '14, 20:50

Student's gravatar image

Student
5807779104
Akzeptiert-Rate: 82%

bearbeitet 14 Apr '15, 17:40

saputello's gravatar image

saputello
11.1k174365

Die Frage ist zum Archivieren gedacht, kein Support benötigt. Antworten sind jedoch sehr willkommen! Ich werde ein XeTeX-xesearch-Beispiel posten, was ich gefunden habe, zu Archivzwecken. Ich setze gern 300 Punkte aus für eine andere Lösung, z.B. mit LuaTeX oder pdfTeX.

(07 Mär '14, 20:52) Student

Wenn man XeTeX bzw. XeLaTeX einsetzt, gibt es eine sehr einfache Möglichkeit mit dem cleveren xesearch-Paket. Hier suche und färbe ich alle Vorkommen von "ist" sowie "und" ein:

Open in writeLaTeX
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{xcolor}
\usepackage{xltxtra}
\usepackage{xesearch}
\SearchList{eins}{\textbf{\textcolor{red}{#1}}}{ist}
\SearchList{zwei}{\textbf{\textcolor{blue}{#1}}}{und}
\begin{document}
\blindtext
\end{document}

Ausgabe Text mit formatierten Wörtern

Das xesearch-Handbuch gibt weitere Informationen, wie es funktioniert und wie man es einsetzen noch kann. Xesearch funktioniert auch mit ConTeXt und plain XeTeX.

Permanenter link

beantwortet 07 Mär '14, 21:02

Student's gravatar image

Student
5807779104
Akzeptiert-Rate: 82%

Basiert ConTeXt (zumindest Mk IV) auf LuaTeX? Funktioniert da xesearch trotzdem?

Übrigens: xltxtra kann überraschende Effekte haben und ist meistens nicht nötig. fontspec reicht üblicherweise völlig.

(07 Mär '14, 21:45) cgnieder

@Clemens Ich habe nur von ConTeXt-Support im xesearch-Handbuch gelesen, dass man es mit \usemodule[xesearch] dort lädt. Probiert habe ich das nie, da ich ConTeXt nie verwendet habe.

(07 Mär '14, 22:44) Student

@Student Ich hab's ausprobiert: \usemodule[xesearch] führt auf ! Undefined control sequence. ConTeXt beschwert sich, weil \XeTeXinterchartoks nicht definiert ist. xesearch geht also zumindest mit Mk IV nicht.

(09 Mär '14, 17:31) cgnieder

Mit LuaTeX gibt es ebenfalls Lösungen:

Open in writeLaTeX
% arara: lualatex
\documentclass{article}
\usepackage[ngerman]{babel}

\usepackage{fontspec,xcolor}
\usepackage{luacode,luatexbase}

\begin{luacode}
local function emphistund ( line )
  line = string.gsub(line, " ist " , " \\textbf{\\textcolor{red}{ist}} ")
  line = string.gsub(line, " Ist " , " \\textbf{\\textcolor{red}{Ist}} ")
  line = string.gsub(line, " und " , " \\textbf{\\textcolor{blue}{und}} ")
  return line
end
luatexbase.add_to_callback( "process_input_buffer",  emphistund, "emph_ist_und")
\end{luacode}

\usepackage{blindtext}

\begin{document}
\blindtext
\end{document}

alt text

Nun bin ich ein völliger Lua-Anfänger (das war mein allererster direkter Kontakt damit), was bedeutet, das es mit Sicherheit noch einen effizienteren Einsatz gibt (@Mico?, @topskip?), aber es zeigt zumindest, dass das Prinzip funktioniert.

Permanenter link

beantwortet 14 Mär '14, 11:10

cgnieder's gravatar image

cgnieder
22.1k253463
Akzeptiert-Rate: 60%

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:

×117
×49
×28
×9
×3

gestellte Frage: 07 Mär '14, 20:50

Frage wurde gesehen: 15,064 Mal

zuletzt geändert: 14 Apr '15, 17:40