Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Funktion erstellen um sich ständig wiederholende LatexCodeZeilen zu Vermeiden

  1. #1
    Registrierter Benutzer
    Registriert seit
    22.07.2010
    Beiträge
    8

    Funktion erstellen um sich ständig wiederholende LatexCodeZeilen zu Vermeiden

    Hallo zusammen,
    ich habe folgendes "Problem" in mein Dokument kommen doch einige Bilder rein. Die ich wie folgt einbinde.
    Code:
    \begin{figure}[htb]
     \begin{center}%
      \sbox\bildbox{\includegraphics[width=\ScaleIfNeeded]{PFAD_ZUM_BILD}}
      \settowidth\bildboxbreite{\usebox\bildbox}
      \addtolength\bildboxbreite{\zusatzbreite}
      \color{\boxcolor}
      \shadowbox{%
       \begin{minipage}{\bildboxbreite}%
        \usebox\bildbox
        \caption{BILD_UNTERSCHRIFT}
        \label{pic:REFERENZ}%		
       \end{minipage}}
     \end{center}%
    \end{figure}
    Das Funktioniert auch ganz gut. Nun frage ich mich wie ich mir das ständige Copy&Paste ersparen kann? Ich dachte da an eine "Funktion", der die drei Parameter BILD_PFAD, BILD_UNTERSCHRIFT und REFERENZ mit geben werden? Wie müsste das den gemacht werden, ich bin ein totaler Latex Neuling.

    Vielen Dank schon mal im Voraus

  2. #2
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Hallo,

    aus dem Codeschnipsel ist nicht ersichtlich, welche Pakete geladen werden müssen und wie der Befehl \ScaleIfNeeded definiert ist. Mache bitte immer ein vollständiges Minimalbeispiel wie bei deiner Frage unter http://www.mrunix.de/forums/showthread.php?t=68898

    Folgendes funktioniert bei mir (basiert auf dem Beispiel im angegebenen Link):
    Code:
    \documentclass{scrbook}
    
    \usepackage[ngerman]{babel}
    \usepackage[latin1]{inputenc}
    \usepackage[T1]{fontenc}
    
    \usepackage{graphicx}
    \usepackage{xcolor}
    \usepackage{fancybox}
    \usepackage[font=scriptsize,labelfont=bf, justification=raggedright, singlelinecheck=false]{caption}
    
    \newsavebox\bildbox
    \newlength\bildboxbreite
    \newcommand\zusatzbreite{0.5cm}
    \renewcaptionname{ngerman}{\figurename}{Abb.:}
    \definecolor{light-gray}{rgb}{0.7, 0.7, 0.7}
    
    % Folgende Zeilen sollte ein zu großes Bild 
    % entsprechend passend skallieren so das es auf die Seite Passt 
    \makeatletter
    \def\ScaleIfNeeded{%
      \ifdim\Gin@nat@width>\dimexpr\linewidth-\zusatzbreite-\shadowsize-2\fboxsep-0.5pt\relax
        \dimexpr\linewidth-\zusatzbreite-\shadowsize-2\fboxsep-0.5pt\relax
      \else
        \Gin@nat@width
      \fi
    }
    
    \newcommand\Bild[3]{%
      \sbox\bildbox{\includegraphics[width=\ScaleIfNeeded]{#1}}%
      \settowidth\bildboxbreite{\usebox\bildbox}%
      \addtolength\bildboxbreite{\zusatzbreite}%
      \color{light-gray}%
      \shadowbox{%
        \begin{minipage}{\bildboxbreite}%
          \centering\usebox\bildbox%
          \caption{#2}%
          \label{pic:#3}%
        \end{minipage}%
      }%
    }
    
    \begin{document}
    
    \begin{figure}[htb]
      \begin{center}%
        \Bild{Bilddatei}{Bildtext}{Bildlabel}
      \end{center}%
    \end{figure}
    
    \end{document}
    Gruß
    Elke
    Geändert von esdd (25-05-2011 um 17:19 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    31.03.2010
    Beiträge
    1.039
    Ersetze:
    Zitat Zitat von esdd Beitrag anzeigen
    Code:
    \begin{figure}[htb]
      \begin{center}%
        \Bild{Bilddatei}{Bildtext}{Bildlabel}
      \end{center}%
    \end{figure}
    durch:
    Code:
    \begin{figure}% das optionale Argument braucht man nur im Ausnahmefall.
            % Für den Regelfall siehe Dante-FAQ.
      \centering% Die center-Umgebung fügt zusätzlichen vertikalen Abstand ein,
            % den man in Gleitumgebungen normalerweise nicht haben will.
            % Siehe dazu auch l2tabu
        \Bild{Bilddatei}{Bildtext}{Bildlabel}
    \end{figure}

  4. #4
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Hi,
    Bezugnehmend auf die Zeile:
    Zitat Zitat von esdd Beitrag anzeigen
    Code:
    \renewcaptionname{ngerman}{\figurename}{Abb.:}}
    möchte ich noch folgende Hinweise geben.

    Der Separator ist bei einer KOMA-Klasse
    Zitat Zitat von esdd Beitrag anzeigen
    Code:
    \documentclass{scrbook}
    im Makro \captionformat hinterlegt.

    Durch das Laden des Paketes caption:
    Zitat Zitat von esdd Beitrag anzeigen
    Code:
    \usepackage[font=scriptsize,labelfont=bf, justification=raggedright, singlelinecheck=false]{caption}
    }
    ist das Trennzeichen ebenfalls definierbar über die Option labelsep.

    Gruß
    Marco

  5. #5
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Hallo,

    \centering lässt sich dann noch in den Befehl einbauen.

    @Marco: Danke fürs Finden des mitgeschleppten Tippfehlers. Der Doppelpunkt hinter Abb. musste einfach nur gelöscht werden, da ja nicht Abb.: 0.1: da stehen soll.

    Code:
    \documentclass[captions=nooneline]{scrbook}
    
    \usepackage[ngerman]{babel}
    \usepackage[latin1]{inputenc}
    \usepackage[T1]{fontenc}
    
    \usepackage{graphicx,blindtext}
    \usepackage{xcolor}
    \usepackage{fancybox}
    
    \renewcaptionname{ngerman}{\figurename}{Abb.}
    \addtokomafont{captionlabel}{\scriptsize\bfseries}
    \addtokomafont{caption}{\scriptsize}
    
    
    \newsavebox\bildbox
    \newlength\bildboxbreite
    \newcommand\zusatzbreite{0.5cm}
    
    \definecolor{light-gray}{rgb}{0.7, 0.7, 0.7}
    
    % Folgende Zeilen sollte ein zu großes Bild 
    % entsprechend passend skalieren, das es auf die Seite passt 
    \makeatletter
    \def\ScaleIfNeeded{%
      \ifdim\Gin@nat@width>\dimexpr\linewidth-\zusatzbreite-\shadowsize-2\fboxsep-0.5pt\relax
        \dimexpr\linewidth-\zusatzbreite-\shadowsize-2\fboxsep-0.5pt\relax
      \else
        \Gin@nat@width
      \fi
    }
    
    \newcommand\Bild[3]{%
      \centering
      \sbox\bildbox{\includegraphics[width=\ScaleIfNeeded]{#1}}%
      \settowidth\bildboxbreite{\usebox\bildbox}%
      \addtolength\bildboxbreite{\zusatzbreite}%
      \color{light-gray}%
      \shadowbox{%
        \begin{minipage}{\bildboxbreite}%
          \centering\usebox\bildbox%
          \caption{#2}%
          \label{pic:#3}%
        \end{minipage}%
      }%
    }
    
    \begin{document}
    \begin{figure}
        \Bild{Bilddatei}{Bildtext}{Bildlabel}
    \end{figure}
    \end{document}
    Gruß
    Elke

  6. #6
    Registrierter Benutzer
    Registriert seit
    22.07.2010
    Beiträge
    8
    Vielen Dank, das hat super geklappt und das mit dem Minibeispiel hatte ich vergessen,
    ich gelobe Besserung.
    Noch mal vielen Dank euch dreien.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •