PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \newcommand um screenshots einzufügen - Kommentare?



heinbloed
12-07-2007, 10:29
Hallo,
ich bezeichne mich noch als Latex-Anfänger, fange aber gerade mit meine Diplomarbeit an, muss mich deswegen jetzt stärker hiermit auseinandersetzen.

Für zahlreiche Screenshots habe ich mir jetzt folgenden Befehl geschrieben - und bin schon fast stolz drauf:


% ================================================== =
% mein Screenshot-Befehl
% ================================================== =
% Input: 4 Parameter
% #1 = Name des Bildes, ohne Extension, muss im richtigen Pfad sein (../screenshots)
% #2 = Caption zum Bild, taucht so auch im Abbildungsverzeichnis auf...
% #3 = Quellenangabe - mit \citet{ ... } angeben, steht nicht im Abbildungsverzeichnis
% #4 = Positionierung entsprechend des WrapFig-Pakets --- Placement is one of r, l, i, o, R, L, I, O, for right, left, inside, outside, (here / FLOAT).
% #5 = Größen-Anteil auf der Seite

\newcommand{\screenshot}[5]
{
\begin{wrapfigure}{#4}{#5\linewidth}
\includegraphics[width=#5\textwidth]{../screenshots/#1}
\caption[#2]{#2 (Quelle: #3)}
\end{wrapfigure}
}
%%%%% End of Screenshot ;-)

Mit dem Aufruf


\screenshot{Bild1}{Testbild-Beschriftung}{\citet{Mustermann:1234uq}}{O}{0.7}

klappt auch alles wunderbar. :)

Ein-zwei-drei kleine Sachen sind da aber noch:
- Wie bekomme ich automatisch ein Label hin, z.B. Grafik1 ... ??
- (Ich dachte, vielleicht könnte ich irgendwas mit einem Counter machen... oder so)
- Ich hätte gerne einen Rahmen um die Screenshots, bzw. würde es gerne mal ausprobieren. Geht da nur Minipage? (da muss man schon wieder ne größenangabe machen.. :(
- es sind doch eine menge angaben, die man machen muss. wie könnte ich z.B. bei fehlender Zitatangabe #3 ganz auf den Quellenhinweis verzichten, oder bei fehlender Größenangabe eine Standardgröße einstellen...
- bestimmt irgendwas mit "If" - traue ich mich aber noch nicht...

So, ich freue mich über Eure Kommentare und Anregungen...
hein

rais
15-07-2007, 10:46
Moin moin,


- Wie bekomme ich automatisch ein Label hin, z.B. Grafik1 ... ??
- (Ich dachte, vielleicht könnte ich irgendwas mit einem Counter machen... oder so)

Du könntest dafür den Abbildungszähler nehmen, also nach der \caption

\label{fig:\thefigure} -- der Haken an der Sache ist, daß sich Deine Marken so verschieben können, wenn Du mal einen \screenshot vor einem anderen einfügst. Besser wäre eine symbolische Auflösung, vllt nach dem Bildnamen? Dann solltest Du jedes Bild nur einmalig per \screenshot darstellen...


- Ich hätte gerne einen Rahmen um die Screenshots, bzw. würde es gerne mal ausprobieren. Geht da nur Minipage? (da muss man schon wieder ne größenangabe machen.. :(
\fbox{...}


- es sind doch eine menge angaben, die man machen muss. wie könnte ich z.B. bei fehlender Zitatangabe #3 ganz auf den Quellenhinweis verzichten, oder bei fehlender Größenangabe eine Standardgröße einstellen...
- bestimmt irgendwas mit "If" - traue ich mich aber noch nicht...

\newcommand erlaubt einen optionalen Parameter für das neue Makro:


\newcommand\bla[2][default]{...}
:
\bla{blubb}% #1=default, #2=blubb
\bla[anders]{blubb} % #1=anders, #2=blubb

Wenn Du die Reihenfolge änderst, also Parameter #1 als Quelle auswertest und #3 als Bildnamen, dann könnte das etwa so aussehen:


\newcommand{\screenshot}[5][\empty]{%
\begin{wrapfigure}{#4}{#5\linewidth}
\includegraphics[width=#5\textwidth]{../screenshots/#3}
\ifx#1\empty%
\caption{#2}%
\else%
\caption[#2]{#2 (Quelle: #1)}%
\fi%
\label{fig:#3}%<--\ref{fig:<Bildname>}
\end{wrapfigure}
}
der Aufruf ändert sich dann entsprechend:


\screenshot{caption}{Bild}{Positionierung}{Bruchte il f. Breite}
%bzw.
\screenshot[Quelle]{caption}{Bild}{Positionierung}{Bruchteil f. Breite}

Wenn Du Positionierung/Bruchteil auch optional haben willst, dann schau hier mal nach "mehrere optionale Parameter" oder so ähnlich.

MfG,

sommerfee
15-07-2007, 11:42
An der Stelle noch ein kleiner Tipp:



\caption[#2]{#2 (Quelle: #3)}


Parameter an optionale Argumente am besten immer mit zusätzlichen geschweiften Klammern übergeben, also so:

\caption[{#2}]{#2 (Quelle: #3)}

Ansonsten bekommt man Probleme, wenn #2 eckige Klammern beinhaltet.

Liebe Grüße,
Axel

Salnic
15-07-2007, 20:35
Hi Heinbloed,


Wie bekomme ich automatisch ein Label hin, z.B. Grafik1 ... ??

Die Frage ist, ob Du überhaupt Labels brauchst? Labels sind nur dazu da, um die Grafik mit \ref{label} im Text referenzieren zu können, also um z.B. "siehe Bild 23" sagen zu können. Wenn Du das nicht brauchst, brauchst Du auch keine Labels definieren.


Du könntest dafür den Abbildungszähler nehmen
finde ich keine gute Idee, wie Du selber hinterher ausführst, hat man hinterher keine Kontrolle, wie denn das Label wirklich heißt und wenn man im Text auf die Grafik verweist, muss man \ref auch ändern, wenn eine Grafik zwischengeschoben wurde. Ist also weniger hilfreich.

Besser wäre es, den Dateinamen als Label zu benutzen.


Salnic

heinbloed
18-07-2007, 09:30
Also, Euch allen vielen Dank,
ich habe mein Macro jetzt so angepasst - und es funktioniert super. Bisher.


\newcommand\screenshot[5][\empty]
{
\begin{wrapfigure}{#4}{#5\linewidth}
\includegraphics[width=#5\textwidth]{../screenshots/#3}
\ifx#1\empty%
\caption{#2}%
\else%
\caption[{#2}]{#2 (Quelle: #1)}%
\fi%
\end{wrapfigure}
}


Statt einen weiteren Parameter aufzunehmen, hab ich einfach einen zweites Makro definiert "screenshotbox", der mir den Screenshot in einem Rahmen darstellt....

jetzt kann ich mich wieder neuen problemen zuwenden...
Danke