Ich habe einen neuen Befehl erstellt mit 4 Argumenten. Der Befehlt klappt auch super.

Öffne in Overleaf
\newcommand{\insImage}[4]
{
    \begin{figure}[hbt]
    \centering
    \includegraphics[width=#4\textwidth]{#1}
    \caption{#2}
    \label{fig:#3}
\end{figure}
}

Nun möchte ich aber bei #4 eine Defaultwert setzen. z.B.: .5 .

Öffne in Overleaf
\insImage{arg1}{arg2}{arg3}{.5}

So dass ich nur, wenn ich einen anderen Wert brauche, diesen ersetzten kann.

Ist das möglich?

gefragt 28 Nov '17, 12:28

Mike_Rohsoft's gravatar image

Mike_Rohsoft
3935
Akzeptiert-Rate: 0%

bearbeitet 29 Nov '17, 13:38

gast3's gravatar image

gast3
(ausgesetzt)

Bitte wirf uns nicht nur einen Codeschnipsel wie dem Hund einen Knochen vor. Gibt immer ein vollständiges Minimalbeispiel an! Ohne das, kann ich nur darauf hinweisen, dass optionale Argumente per Konvention in eckige statt geschweifte Klammern gesetzt werden und dass \newcommand nur für das erste Argument die Möglichkeit eines optionalen Arguments mit Defaultwert bietet. xparse dagegen bietet ein optionales Argument mit optionalem Defaultwert an beliebiger Stelle.

(28 Nov '17, 16:59) saputello

Öffne in Overleaf
\documentclass{article}
\usepackage{graphicx}
\usepackage{xparse}

\NewDocumentCommand\insImage{mmmO{.5}}{%
  \begin{figure}[hbt]
    \centering
    \includegraphics[width=#4\textwidth]{#1}
    \caption{#2}
    \label{fig:#3}
  \end{figure}%
}

\begin{document}

\insImage{example-image-a}{Example Image A}{ex-a}

\insImage{example-image-b}{Example Image B}{ex-b}[.2]

\end{document}

alt text

Permanenter link

beantwortet 28 Nov '17, 21:25

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

Perfekt. Das ist genau das was ich gesucht habe. Werde nun mal ein wenig mit xparse "herumspielen" Dankeschoen Henri

(29 Nov '17, 13:12) Mike_Rohsoft

Da Du nur ein optionales Argument benötigst, kannst Du auch einfach die Reihenfolge der Argumente ändern.

Dabei würde ich dann als Voreinstellung des optionalen Arguments auch nicht .5, sondern width=.5\textwidth wählen. Das hat den Vorteil, dass Du bei Nutzung des Befehls auch anderen Schlüsseln von \includegraphics Werte zu weisen kannst, also beispielsweise statt der Breite mal die Höhe vorgeben kannst.

Öffne in Overleaf
\documentclass{article}
\usepackage{graphicx}

\newcommand\insImage[4][width=.5\textwidth]{%
  \begin{figure}[hbt]
    \centering
    \includegraphics[#1]{#2}
    \caption{#3}
    \label{fig:#4}
  \end{figure}%
}

\begin{document}

\insImage{example-image-a}{Example Image A}{ex-a}

\insImage[width=5cm]{example-image-b}{Example Image B}{ex-b}

\insImage[height=1cm]{example-image}{Example Image C}{ex-b}

\end{document}
Permanenter link

beantwortet 29 Nov '17, 09:35

esdd's gravatar image

esdd
17.7k254256
Akzeptiert-Rate: 62%

bearbeitet 29 Nov '17, 13:36

gast3's gravatar image

gast3
(ausgesetzt)

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:

×52
×33
×13
×7

gestellte Frage: 28 Nov '17, 12:28

Frage wurde gesehen: 5,616 Mal

zuletzt geändert: 29 Nov '17, 13:41