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, 06:28

Mike_Rohsoft's gravatar image

Mike_Rohsoft
392
Akzeptiert: 66%

bearbeitet 29 Nov, 07:38

Ijon%20Tichy's gravatar image

Ijon Tichy
5.9k1919

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, 10: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, 15:25

Henri's gravatar image

Henri
11.7k42235

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

(29 Nov, 07: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, 03:35

esdd's gravatar image

esdd
15.6k53753

bearbeitet 29 Nov, 07:36

Ijon%20Tichy's gravatar image

Ijon Tichy
5.9k1919

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×47
×26
×9
×7

Frage gestellt: 28 Nov, 06:28

Frage wurde angeschaut: 147 Mal

Zuletzt aktualisiert: 29 Nov, 07:41