goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


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

Forenstatistik:
Beiträge: 99319
Top-Poster: Johannes_B (5059)

Wir begrüßen unseren neuesten Benutzer Ludio.

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

Unterdrücken formaler Argumente innerhalb \newcommand

 

Rolli
Forum-Guru
Forum-Guru

Beiträge: 321
Anmeldedatum: 15.02.17
Wohnort: Mittelfranken
Version: MikTeX 2.9 64-bit
     Beitrag Verfasst am: 23.02.2019, 17:35     Titel: Unterdrücken formaler Argumente innerhalb \newcommand
  Antworten mit Zitat      
Hallo,

ich möchte mir ein Kommando basteln, welches eine Reihe von Einstellungen nach meinem Geschmack ändert. Dabei sind u.a. auch Dinge wie bsp. \emph, welches ja ein Argument hat. Mein untenstehendes Minimalbeispiel erzeugt natürlich einen Fehler beim Übersetzen, weil das formale Argument #1 für \myStandards nicht definiert ist.

Gibt es eine Möglichkeit, beim \renewcommand\emph das formale Argument #1 am Parser so vorbei zu schleusen, dass dieser es nicht expandiert, sondern als #1 an \emph weiter gibt?

Code • Öffne in Overleaf

\documentclass{scrartcl}
\usepackage{xcolor}
\usepackage[fleqn]{amsmath}

\newcommand {\myStandards}
{
   \setlength{\mathindent
} {1cm}
   \setlength{\itemsep}    {0pt}
   % ... und einiges Weiteres
   \renewcommand\emph[1]{{\color{blue}\textit{\textbf{#1}}}}
}  
\begin{document}
   Blablabla
\end{document}
 


Gruß vom Rolli
_________________

Rolli's Korollar:
Jede Aktion führt zu (meist unerwünschten)
Nebeneffekten.
Beweis: Rückführung auf Murphy's Gesetz.
-----------------------------------------------------
Linux ist ein Betriebssystem.
WinDoof ist ein Zustand!
-----------------------------------------------------
Fleißiges Löschen der .AUX-Datei führt oft zum Ziel.
-----------------------------------------------------
Beim Arbeiten mit TeX/LaTeX sollten die Dateipfade
weder Umlaute/ß noch Leerräume noch sonstige
Nicht-ASCII7-Zeichen (wie beispielsweise diakritische
Zeichen) haben.
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.02.2019, 17:57     Titel:
  Antworten mit Zitat      
Wenn ich die etwas umständlich formulierte Frage richtig verstehe, willst du wissen, wie man innerhalb von Befehlen, Befehle mit Argument definieren oder umdefinieren kann.

Bei der Definition von Befehlen innerhalb von Befehlen muss man die Anzahl der # bei jeder Schachtelungstiefe verdoppeln.

Rolli
Forum-Guru
Forum-Guru

Beiträge: 321
Anmeldedatum: 15.02.17
Wohnort: Mittelfranken
Version: MikTeX 2.9 64-bit
     Beitrag Verfasst am: 23.02.2019, 18:07     Titel:
  Antworten mit Zitat      
Danke für den schnellen Tipp, Gast.
Wie kann ich meine Frage einfacher formulieren?

Das mit dem ## kannte ich nicht. Also:
Code • Öffne in Overleaf

\documentclass{scrartcl}
\usepackage{xcolor}
\usepackage[fleqn]{amsmath}

\newcommand {\myStandards}
{
   \setlength{\mathindent
} {1cm}
   \setlength{\itemsep}    {0pt}
   % ... und einiges Weiteres
   \renewcommand\emph[1]{{\color{blue}\textit{\textbf{##1}}}}
}
%\renewcommand\emph[1]{{\color{blue}\textit{\textbf{#1}}}}
\begin{document}
   Blablabla
   \emph{Blablabla}
\end{document}
 

Das übersetzt zwar ohne Fehler, tut aber nicht das Gewünschte - es ist lediglich kursiv, jedoch nicht fett und nicht blau.
Auskommentieren des \renewcommand\emph... außerhalb meines \myStandard hingegen funktioniert wie beabsichtigt.

???

Gruß vom Rolli
_________________

Rolli's Korollar:
Jede Aktion führt zu (meist unerwünschten)
Nebeneffekten.
Beweis: Rückführung auf Murphy's Gesetz.
-----------------------------------------------------
Linux ist ein Betriebssystem.
WinDoof ist ein Zustand!
-----------------------------------------------------
Fleißiges Löschen der .AUX-Datei führt oft zum Ziel.
-----------------------------------------------------
Beim Arbeiten mit TeX/LaTeX sollten die Dateipfade
weder Umlaute/ß noch Leerräume noch sonstige
Nicht-ASCII7-Zeichen (wie beispielsweise diakritische
Zeichen) haben.
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.02.2019, 18:31     Titel:
  Antworten mit Zitat      
Naja, so wie Du es jetzt definierst und nutzt, würde \myStandards den Befehl \emph umdefinieren, wenn \myStandards selbst aufgerufen wird.

Code • Öffne in Overleaf
\documentclass{scrartcl}
\usepackage{xcolor}
\usepackage[fleqn]{amsmath}

\newcommand {\myStandards}
{
   \setlength{\mathindent
} {1cm}
   \setlength{\itemsep}    {0pt}
   % ... und einiges Weiteres
   \renewcommand\emph[1]{{\color{blue}\textit{\textbf{##1}}}}
}

\begin{document}
   Blablabla
   \emph{Blablabla}

\myStandards

   Blablabla
   \emph{Blablabla}
\end{document}


Solange das noch nicht passiert ist, wird auch an \emph nicht geschraubt.

TeX ist ja eine Makro-Expansions-Sprache. Die Effekte von Code passieren erst, wenn er (im richtigen Kontext) ausgeführt wird, in der Definition mit \newcommand wir kein Code ausgeführt, Du teilst LaTeX damit nur mit, dass jedes Vorkommen von \myStandards durch den Definitionscode ersetzt wird.

Rolli
Forum-Guru
Forum-Guru

Beiträge: 321
Anmeldedatum: 15.02.17
Wohnort: Mittelfranken
Version: MikTeX 2.9 64-bit
     Beitrag Verfasst am: 23.02.2019, 18:44     Titel:
  Antworten mit Zitat      
...
Wald und Bäume ...
vollkommen klar. Manche Dinge sind halt viel einfacher, als gedacht.
DANKE!
Gruß vom Rolli
_________________

Rolli's Korollar:
Jede Aktion führt zu (meist unerwünschten)
Nebeneffekten.
Beweis: Rückführung auf Murphy's Gesetz.
-----------------------------------------------------
Linux ist ein Betriebssystem.
WinDoof ist ein Zustand!
-----------------------------------------------------
Fleißiges Löschen der .AUX-Datei führt oft zum Ziel.
-----------------------------------------------------
Beim Arbeiten mit TeX/LaTeX sollten die Dateipfade
weder Umlaute/ß noch Leerräume noch sonstige
Nicht-ASCII7-Zeichen (wie beispielsweise diakritische
Zeichen) haben.
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 - 2019 goLaTeX.de