Begriffe die Wiederholt werden. Abstand danach flexibel?

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Trauminsel
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 69
Registriert: Mi 13. Apr 2016, 10:21

Begriffe die Wiederholt werden. Abstand danach flexibel?

Beitrag von Trauminsel »

Guten Tag

Ich habe mehre Begriffe die in meiner Arbeit wiederholt werden. Da sich diese Begriffe zudem in ihrer exakten Formulierung leicht verändern können habe ich für diese Begriffe eigene Befehle definiert:

\newcommand*{\StrategieMoral}{\wichtig{Strategie der moralischen Verpflichtung }}

Wenn ich diese nun in einem normalen Text einsetzt ist alles wunderbar

Doch wenn hinter das Wort ein Komma soll macht es natürlich zwischen dem Begiff und dem Komma einen Leerschlag.

Das Problem habe ich händisch gelöst in dem ich bei den wenigen Punkten wo dies vorkommt einfach

\hspace*{-4pt}: einfüge.

Nun gibt es eine Möglichkeit, den Befehl so umzugestalten, dass er in einem normalen Text einen Leerschlag macht. Aber wenn direkt ein Komma oder Doppelpunkt etc. daran angeschlossen werden soll nicht oder muss ich hier weiter händisch verfahren?

Minimalbeispiel:
\documentclass[a4paper,12pt, draft]{report} 
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage{lmodern} 
\usepackage[ngerman]{babel} 

\newcommand*{\wichtig}[1]{\textit{#1}}

\newcommand*{\StrategieMoral}{\wichtig{Strategie der moralischen Verpflichtung }} 

\begin{document} 

Das ist ein Beispiel hier geht alles so wie es soll \StrategieMoral 
aber hier eben leider nicht \StrategieMoral: 
und diese Lösung hier scheint mir ungünstig, da händisch: 
\StrategieMoral\hspace*{-4pt}: 

\end{document} 


Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag von cgnieder »

Nimm das Leerzeichen aus der Definition raus und füge es wo nötig im Text per Backslash ein:
\documentclass[a4paper,12pt, draft]{report} 
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage{lmodern} 
\usepackage[ngerman]{babel} 

\newcommand*{\wichtig}[1]{\textit{#1}}

\newcommand*{\StrategieMoral}{\wichtig{Strategie der moralischen Verpflichtung}}% Leerzeichen entfernt 

\begin{document} 

Das ist ein Beispiel hier geht alles so wie es soll \StrategieMoral\
aber hier eben leider nicht \StrategieMoral: 
und diese Lösung hier scheint mir ungünstig, da händisch: 


\end{document}
Siehe hier für ein paar Hintergrundinfos: http://texwelt.de/wissen/fragen/17/waru ... n-befehlen

Grüße
Clemens
Paketauthor

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag von cgnieder »

Ansonsten xspace.

Grüße
Clemens
Paketauthor

Trauminsel
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 69
Registriert: Mi 13. Apr 2016, 10:21

Beitrag von Trauminsel »

Ja aber wenn ich das Leerzeichen rausnehme, habe ich überall das Problem wo es ein Leerzeichen benötigt.

\StrategieMoral ist

Dann macht es dazwischen keinen Leerschlag. Die Überlegung war eher ob es möglich ist zu sagen:

immer wenn nach Befehl x ein , oder : dann verzichte auf den Leerschlag

Das verschiebt das Problem nur.

EDIT: Sorry ich habe den Tipp mit Xspace überlesen. Schaue ich mir mal an. Danke.

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag von cgnieder »

Die beste Lösung ist es, das Leerzeichen aus der Definition herauszunehmen. Das ist normale Praxis und Dein Makro wird sich verhalten, wie man das von einem Makro erwartet (siehe Link in meinem ersten Post). Für alle, die das partout nicht wollen, gibt es wie bereits erwähnt xspace.

Grüße
Clemens
Paketauthor

Trauminsel
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 69
Registriert: Mi 13. Apr 2016, 10:21

Beitrag von Trauminsel »

Ja ich habe den Beitrag gelesen und sehe auch die Nachteile von xspace

Vielen Dank.

Antworten