Latex Command für verschiedene Modi

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Latex Command für verschiedene Modi

von Gast » Mi 12. Jun 2019, 07:30

RicardoShillyShally hat geschrieben:Ich wollte eigentlich die \figurename ändern.
Wenn du das abhängig von der verwendeten Sprache ändern willst, dann schau in die [d]babel[/d]-Anleitung. Da ist erklärt, wie man die sprachabhängigen Begriffe ändert. Alternativ kann man das auch unabhängig von babel mit KOMA-Script machen, wenn man eine KOMA-Script-Klasse verwendet.

Wenn du hingegen abhängig davon ändern willst, wofür die figure-Umgebung tatsächlich verwendet wird, dann sei darauf hingewiesen, dass man auch weitere Gleitumgebungen definieren kann. Siehe dazu beispielsweise das tocbasic-Kapitel in der KOMA-Script-Anleitung oder die Anleitung zum Paket caption.

Es ist übrigens kontraproduktiv die Helfer hier Rätselraten spielen zu lassen. Es viel zielführender, das eigentliche Problem zu schildern und ein Minimalbeispiel dafür anzugeben.

von rais » Mi 12. Jun 2019, 00:18

RicardoShillyShally hat geschrieben: Könnte man so einen Switch auch für verschiedene \usepackage{} schreiben?
Vermutlich ja.

Da außer Dir hier niemand wissen kann, um welche Pakete es Dir geht, und was konkret Du eigentlich verändern willst, ist eine `bessere' Antwort kaum möglich...

VG
Rainer

von RicardoShillyShally » Di 11. Jun 2019, 07:53

Danke für die Beispiele. Es klappt nun.

rais hat recht. Ich wollte eigentlich die \figurename ändern. Es funktioniert jetzt auch mit \renewcommand nach \begin{dokument}.

Könnte man so einen Switch auch für verschiedene \usepackage{} schreiben?

LG

von Gast » So 9. Jun 2019, 12:23

Wenn die Umschaltung mehrere Befehle betreffen soll und die Umschaltung nur einmal in der Präambel stattfinden soll, würde ich das dort direkt machen, also beispielsweise:
\documentclass{article}
\newif\ifvarianteA
\varianteAtrue
%\varianteAfalse
\ifvarianteA
  \newcommand*{\TestA}{A}
  \newcommand*{\testA}{a}
\else
  \newcommand*{\TestA}{B}
  \newcommand*{\testA}{b}
\fi
\begin{document}
Variante \TestA{} mit \textA.
\end{document}
Wenn es dagegen im Dokument mehrfach umgeschaltet werden soll oder sogar mehr als zwei Varianten geben soll, würde ich das eher so machen:
\documentclass{article}
\newcommand*{\TestA}{A}
\newcommand*{\testA}{a}
\newcommand*{\TestB}{B}
\newcommand*{\testB}{b}
\newcommand*{\TestC}{C}
\newcommand*{\testC}{c}
\newcommand*{\Test}{unknown}
\newcommand*{\test}{unknown}
\newcommand*{\Variante}[1]{%
  \def\Test{\csname Test#1\endcsname}%
  \def\test{\csname test#1\endcsname}%
}
\begin{document}
\Variante{A}Test \Test{} mit \test{}.
\Variante{B}Test \Test{} mit \test{}.
\Variante{C}Test \Test{} mit \test{}.
\end{document}
oder wie bei \captions<Sprache>:
\documentclass{article}
\newcommand*{\VarianteA}{%
  \def\Test{A}%
  \def\test{a}%
}
\newcommand*{\VarianteB}{%
  \def\Test{B}%
  \def\test{b}%
}
\newcommand*{\VarianteC}{%
  \def\Test{C}%
  \def\test{c}%
}
\newcommand*{\Test}{unknown}
\newcommand*{\test}{unknown}
\makeatletter
\newcommand*{\Variante}[1]{%
  \@nameuse{Variante#1}%
}
\makeatother
\begin{document}
\Variante{A}Test \Test{} mit \test{}.
\Variante{B}Test \Test{} mit \test{}.
\Variante{C}Test \Test{} mit \test{}.
\end{document}
Es hängt also etwas davon ab, wie das ganze dann tatsächlich angewendet werden soll.

von rais » So 9. Jun 2019, 11:59

RicardoShillyShally hat geschrieben:Leider bekomme ich noch eine Fehlermeldung, wenn ich versuche z.B. durch A oder B die Bildbeschriftung entweder auf Abbildung oder Figure zu ändern. Wahrscheinlich, weil der \renewcommand nicht nach \begin{dokument} auftauchen darf.
nö, \renewcommand darf auch nach \begin{document} auftauchen.
Das, was Du da umzudefinieren versuchst (\thefigure), gibt normalerweise nur den Zähler selbst (ggf. mit vorgestelltem, übergeordnetem Zähler) aus und \arabic erwartet einen Zählernamen (in Deinem fall `figure'), anders ausgedrückt willst Du `\thefigure' gar nicht ändern, vermutlich eher `\figurename'.

Das Aktivieren könnte auch einfach ein Schalter machen, in etwa
%Präambel
\newif\ifonlysecond
\onlysecondtrue

%in Deinem \befehl z.B.
\ifonlysecond#2\else#1\fi
VG
Rainer

von RicardoShillyShally » So 9. Jun 2019, 10:13

Danke, das hilft schon weiter. Leider bekomme ich noch eine Fehlermeldung, wenn ich versuche z.B. durch A oder B die Bildbeschriftung entweder auf Abbildung oder Figure zu ändern. Wahrscheinlich, weil der \renewcommand nicht nach \begin{dokument} auftauchen darf. Gibt es aber eine Möglichkeit, das irgendwie zu lösen, wie ich das vorhabe? Leider kann ich den \befehl{}{}{B} auch nicht vor \begin{dokument} setzen...

Ich weiß, dass man das auch mit den Spracheinstellungen schaffen kann, was ich vorhabe. Ich würde aber gerne wissen, ob man mit einem solchen Makro generell vor dem \begin{dokument} durch Parameter gewisse Einstellungsmöglichkeiten aktivieren und deaktivieren kann.


\documentclass[preview]{standalone}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand\befehl{ m m m }
{
\str_case:nn { #3 }
{
{A}
{
\renewcommand{\thefigure}{\arabic{Abbildung}}
}
{B}
{
\renewcommand{\thefigure}{\arabic{Figure}}
}
}
}
\ExplSyntaxOff


\begin{document}
\befehl{}{}{B}
\end{document}

von Bartman » So 9. Jun 2019, 07:14

Als Pseudonym für den Kollegen eines verhaltensauffälligen theoretischen Physikers :wink: bestimmst Du einen Befehl mit sechs Argumenten und verwendest aber nur zwei davon.

Aber wie wählst Du aus, welches Argument aktiviert werden soll?

Eine Möglichkeit mit einem dritten Argument für die Auswahl könnte so aussehen:
\documentclass[preview]{standalone}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand\befehl{ m m m }
{
    \str_case:nn { #3 }
    {
        { Text } 
        {
            #1\ Text\
            #1 \newpage
            #1\ Text
        }
        { Test } 
        { 
            #2\ Test\
            #2 \newpage
            #2\ Test
        }
    }
}
\ExplSyntaxOff

\begin{document}
\befehl{erstes Argument}{zweites Argument}{Text}\par
\befehl{erstes Argument}{zweites Argument}{Test}
\end{document}
Eine andere Möglichkeit wäre, mit dem Befehl \ifstrequal des Pakets etoolbox zu arbeiten.

Latex Command für verschiedene Modi

von RicardoShillyShally » So 9. Jun 2019, 03:53

Hallo,

ich würde gerne einen eigenen Command schreiben, der folgendes können soll:

Durch den \befehl{}{} hier mit zwei Variablen, sollen entweder die Variablen #1 aktiviert werden, die dann alle Zeilen mit #1 zu Beginn ausführen und alle Variablen #2 rauskommentieren. Natürlich soll das ganze auch umgekehrt funktionieren. D.h. wenn #2 aktiviert wird, werden alle Zeilen mit #1 ignoriert.

In den Zeilen stehen später verschiedene Befehle. Kann mir jemand behilflich sein?

Um zum Beispiel #1 zu aktivieren, habe ich folgendes ausprobiert. Funktioniert aber nicht:
\befehl{\ }{%
}

\newcommand{\befehl}[6]
{
#1 Text
#1 \newpage
#1 Text
#2 Test
#2 \newpage
#2 Test
}

Nach oben