Seite 1 von 1

newcommand bild einfügen, vervollständiger verweist auf #1

Verfasst: Fr 20. Jan 2017, 14:05
von LaTeX beginner
Hallo liebe Community,

ich habe mir einen newcommand für das Einfügen von Bilder geschrieben damit jedes Bild gleich eingefügt wird und ich mir die Eingabe der Befehle spare.
Leider passiert es, wenn ich im Text mit\ref auf das Bild verweisen möchte, dass mir der Vervollständiger #1 anzeigt und nicht das Label(Bildname) des Bildes.

Mein newcommand sieht folgendermaßen aus:
% Bild Befehle
% #1 Bildname im Speicherordner
% #2 Bildbreite in Prozent von der Blattbreite
% #3 Bildunterschrift
% #4 Bildbezeichnung für das Verweisen im Text
\newcommand{\bild}[4]
{
\begin{figure}[htb]
\centering
\includegraphics[width={#2}\textwidth]{Bildspeicherordner/#1}
\caption{#3}
\label{fig: #4}
\end{figure}
}

Das Bild füge ich wie folgt ein:
\bild{Pendelschlag}{0.75}{Versuchsaufbau für den Pendelschlagversuch.}{Pendelschlag}

Wenn ich mich im Text nun auf das Bild referenzieren möchte kommt beim Vervollständiger "fig: #1" und nicht "fig: Pendelschlag". Ich kann "fig: Pendelschlag" natürlich manuell eingeben, aber genau das möchte ich eben vermeiden.

Woran kann das liegen?

Mein vollständiger Code lautet:
\documentclass[
	fontsize=12pt,
	a4paper,
	bibliography=totoc]{scrartcl}
	
\usepackage[T1]{fontenc}				
\usepackage[utf8]{inputenc}				
\usepackage[ngerman]{babel} 			
\usepackage{csquotes}					
\usepackage{nameref}					
\usepackage{geometry} 	 				
\usepackage{wallpaper}					
\usepackage[export]{adjustbox}			
\usepackage{float}						
\usepackage{caption}					
\usepackage{colortbl}					
\usepackage{placeins}					
\usepackage{textcomp}					
\usepackage[backend=biber]{biblatex} 	
\usepackage{multirow}					
\usepackage{tabu}						
\usepackage{amsmath}					
\usepackage{graphicx}


% Bild Befehle
% #1 Bildname im Speicherordner Bild
% #2 Bildbreite in Prozent von der Blattbreite
% #3 Bildunterschrift
% #4 Bildbezeichnung für das Verweisen im Text
\newcommand{\bild}[4]
{
	\begin{figure}[htb]
	\centering
	\includegraphics[width={#2}\textwidth]{Bild/#1}
	\caption{#3}
	\label{fig: #4}
	\end{figure}
}

\begin{document}

Der Versuchsaufbau ist in der Abbildung~\ref{fig: #1} zu sehen. Darin beschreibt c die Fallhöhe des Pendels in Millimeter.

\bild{Pendelschlag}{0.75}{Versuchsaufbau für den Pendelschlagversuch.}{Pendelschlag}

\end{document}
Lg LaTeX beginner

Verfasst: Fr 20. Jan 2017, 14:13
von LaTeX beginner
beim Vervollständiger kommt natürlich "fig: #4" und nicht 1[/img]

Verfasst: Fr 20. Jan 2017, 14:27
von esdd
Du musst bei \ref schon angeben auf welches Deiner Bilder verwiesen werden soll, also den Inhalt des Arguments, welches bei dem entsprechenden Bild für \label verwendet wird. Im konkreten Fall also
\ref{fig: Pendelschlag}

Verfasst: Fr 20. Jan 2017, 14:33
von LaTeX beginner
Das ist mir bewusst, jedoch muss ich dies manuell machen, da mir der Vervollständiger lediglich "fig: #4" vorschlägt und nicht gleich "fig: Pendelschlag".
Wenn ich aber ein Bild ohne newcommand normal einfüge, schlägt mir der Vervollständiger automatisch den Namen des Bildes mit "fig: Pendelschlag" vor und ich muss diese leidlich auswählen und nicht manuell eingeben.

Verfasst: Fr 20. Jan 2017, 14:42
von Bartman
@LaTeX beginner

Die geschweiften Klammern um #2 im optionalen Argument von \includegraphics erzeugen bei Dir keine Fehlermeldung?

Verfasst: Fr 20. Jan 2017, 14:44
von esdd
Dein Vervollständiger, der Teil Deines Editors ist, ist also so schlau Dir alles, was er in einem Argument von \label findet, als mögliche Referenzen anzubieten.

Durch die Verwendung Deines Befehls versteckst Du sozusagen die möglichen Referenzen vor Deinem Editor. LaTeX ersetzt beim Kompilieren den Platzhalter durch das entsprechende Argument. Dein Editor findet aber nur einen einzigen \label Befehl im Quelltext und da steht halt fig: #4.

Verfasst: Fr 20. Jan 2017, 15:25
von Gast
Das ist also eine Editor-Frage und gehört daher in das LaTeX-Editor-Forum und natürlich gehört angegeben, welcher Editor das ist. :roll:

Wobei die wenigsten Editoren sich diesbezüglich sonderlich beeinflussen lassen.