goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Bücher:

Schreiben und Publizieren in den Naturwissenschaften


Forenstatistik:
Beiträge: 13950
Seitenaufrufe:
154719 PIs (Jun 2010)

Top-Poster: KOMA (1735)

Wir begrüßen unseren neuesten Benutzer Bill.

Partner:

KOMA-Script



TeXblog



LaTeX Community




Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Variablen in \includegraphics

 

Teddytrombone
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.02.2010, 17:47     Titel: Variablen in \includegraphics
  Antworten mit Zitat      
Hallo zusammen!

Ich hab' mal wieder ein Problem. Ich soll eine Übersicht über Personen machen, samt Bild, Vorname, Nachname und ein wenig Text. Da liegt es doch nahe, ein Makro zu schreiben, dem diese Variablen übergeben werden und dann dementsprechend ausgegeben werden. Alles kein Problem, funktioniert auch wunderbar. Das es aber recht viele Personen sind, und ich die Angabe des Bilds eigentlich redundante Information ist, da der Dateiname des Bilds immer "Nachname_Vorname.jpg" ist, habe ich mir gedacht, dass ich mir diesen Parameter eigentlich sparen könnte. Den bastle ich mir einfach im Makro zusammen. Doch irgendwie klappt das nicht so, wie ich es gerne hätte. Erschwerend kommt hinzu, dass die Namen Umlaute und ß enthalten, was bei Verwendung von UTF-8 nicht so toll ist. Die Dateinamen enthalten daher keine Umlaute, sondern z.B. "ae" statt "ä". Das habe ich mittels xstring gelöst.

Doch hier mal mein bisheriger Code:

Code:

\documentclass[a4paper]{scrreprt}
\usepackage{graphicx}
\usepackage{xstring}

\newcommand{\verzeichnis}{test}

\makeatletter
\newcommand{\replacesonder}[1]{
\StrSubstitute{#1
}{Ü}{Ue}[\@neu]
\StrSubstitute{\@neu}{Ö}{Oe}[\@neu]
\StrSubstitute{\@neu}{Ä}{Ae}[\@neu]
\StrSubstitute{\@neu}{ß}{ss}[\@neu]
\StrSubstitute{\@neu}{ü}{ue}[\@neu]
\StrSubstitute{\@neu}{ö}{oe}[\@neu]
\StrSubstitute{\@neu}{ä}{ae}
}
\makeatother

\newcommand{\demo}[2] {
  \makeatletter
   \def\@bilddatei{bilder/\verzeichnis/\lowercase{#2
}\_\lowercase{#1}.jpg}
   \IfFileExists{\csname @bilddatei\endcsname}{
     \includegraphics[width=\textwidth]{\csname @bilddatei\endcsname
}
   }{
     \PackageWarning{\@bilddatei wurde nicht gefunden
}
   }
  \makeatother
}

\begin{document}
% Das funktioniert
% \includegraphics[width=\textwidth]{bilder/\verzeichnis/mustermann_max.jpg}

% Das nicht
\demo{Max}{Mustehrmann}
\end{document}
 


\IfFileExists gibt offenbar true zurück, weswegen der Compiler dann auch zum includegraphics-Befehl kommt, aber dann wird mir die Fehlermeldung ausgegeben, dass die Datei "\@bilddatei .png" nicht gefunden wurde. Also geh' ich mal davon aus, dass das \csname einfach Unfug ist bzw. ich was bei der Verwendung nicht ganz verstanden habe.

Hat jemand eine Lösung für mich, wie ich das umsetzen kann?

phi
Moderator
Moderator

Beiträge: 344
Anmeldedatum: 06.02.09
Wohnort: ---
Version: MacTeX 2010
     Beitrag Verfasst am: 20.02.2010, 21:02     Titel:
  Antworten mit Zitat      
Es ist zumindest ein recht subtiler Fehler drin: \makeatletter und \makeatother müssen immer auf der äußersten Ebene, d.h. außerhalb von \newcommand, vorkommen. Außerdem: \lowercase ist nicht expandierbar und muss anders verwendet werden. \_ erzeugt kein Unterstrich-Zeichen, sondern dient nur zum Setzen von Text. \replacesonder wird definiert, aber nirgends benutzt. \PackageWarning erwartet zwei Argumente.
Hier eine korrigierte Version:
Code:
\documentclass{article}

\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\newcommand*{\verzeichnis}{test}
\newcommand*{\dateiname}{}

\newcommand*{\demo
}[2]{%
  \begingroup
  \def\IeC##1{##1}%
  \def\"##1{##1e}%
  \def\ss{ss}%
  \edef\x{%
    \lowercase{%
      \def\noexpand\dateiname{bilder/\verzeichnis/#2\string_#1.jpg}%
    }%
  }%
  \x
  \IfFileExists{\dateiname}{%
    \includegraphics[width=\textwidth]{\dateiname}%
  }{%
    \PackageWarning{abc}{\dateiname\space wurde nicht gefunden}%
  }%
  \endgroup
}


\begin{document}

\null

\demo{abcÄÖÜ}{äöü123ß}

\end{document}
 
Private Nachricht senden Benutzer-Profile anzeigen

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


  Impressum | Werbung/Mediadaten | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2010 goLaTeX.de
Partner: LabVIEWforum.de