Seite 1 von 1

Renewcommand soll Optionen UND Parameter setzen

Verfasst: Fr 22. Sep 2017, 16:11
von tomtex
Hallo,

ich möchte gerne, dass pdflatex das Kommando
\includegraphics[width=6cm]{my_graphic_name}
wie dieses Kommando behandelt:
\includegraphics[width=6cm]{\detokenize{my_graphic_name}}
Mein Ansatz (einer von vielen) war so:
\renewcommand{\includegraphicsss}[2][]{\includegraphics[#1]{\detokenize{#2}}
pdflatex brach ab:
! File ended while scanning use of \@xargdef.
<inserted text> 
                \par 
<*> page.tex
Ferner möchte, beim Aufruf von includegraphics ohne Optionen,
das neue Kommando auch ohne Optionen aufrufen:

Aus:
\includegraphics{my_graphic_name}
wird:
\includegraphics{\detokenize{my_graphic_name}}
Was habe ich oben falsch gemacht/gedacht.

Gruß
Tom

Verfasst: Sa 23. Sep 2017, 09:02
von Gast
Wozu? Unterstriche in den Dateinamen von \includegraphics sind auch ohne explizites \detokenize kein Problem.

Re: Renewcommand soll Optionen UND Parameter setzen

Verfasst: Mo 25. Sep 2017, 07:10
von markusv
Moin.

Unabhängig von Gasts Kommentar fehlt bei
\renewcommand{\includegraphicsss}[2][]{\includegraphics[#1]{\detokenize{#2}}
eine schließende geschweifte Klammer }, die zum erwähnten Fehler führt.

Verfasst: Mo 25. Sep 2017, 09:26
von tomtex
Aus dem mrunix Forum:

Ändere
\usepackage{graphicx}
in
\usepackage{graphicx}
\usepackage{grffile}
damit ging es ohne renewcommand

Verfasst: Mo 25. Sep 2017, 14:29
von Gast
Ich habe das Gefühl, du verheimlichst uns hier wesentliches. Wie oben bereits erwähnt: \includegraphics{my_graphic_name} funktioniert ohne \detokenize und ohne grffile.

In der Regel ist es natürlich zielführender, das tatsächliche Problem auch zu benennen und zu zeigen. :roll:

Ich setze die Frage jetzt trotzdem mal auf beantwortet. Wenn du anderer Meinung bist, kannst du das ja wieder ändern.

Verfasst: Do 28. Sep 2017, 09:58
von tomtex
Ich habe eine autogernerierten Latex-Output in ein Dokument eingebunden.
Mit einigen Bildernamen kam Latex nicht zurecht.
Ein manuelles beheben mit \detokenize{} hatte funktioniert.

Ersatzweise hat sich durch \usepackage{grffile} mein Problem erledigt.

Daher könnte man diese Anfrage schließen.
Allerdings wäre für mich die Beantwortung meiner eigentlichen Fragestellung
auf abstrakter Ebene Interessant.
Also, wie implementiere ich mit renewcommand, dass aus
\a[x]{y}
dieser Befehl abgebildet wird:
\a[x]{\b{y}}
?

Gruß
Tom

Verfasst: Do 28. Sep 2017, 10:54
von Gast
Beachte bitte, dass verlinkte Seiten integrale Bestandteile von Kommentaren sind.

Verfasst: Do 28. Sep 2017, 12:48
von markusv
Hier mal ein Beispiel mit \textbf{} bzw. \textcolor{}{}.
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\newcommand\wichtig[2][red]{\textcolor{#1}{#2}}
\let\wichtiger\wichtig
\renewcommand{\wichtiger}[2][red]{\textcolor{#1}{\textbf{#2}}}
\begin{document}
nicht wichtig

\wichtig{wichtig}

\wichtig[green]{wichtig aber grün}

\wichtiger{wichtiger}

\wichtiger[green]{wichtiger aber grün}
\end{document}

Verfasst: Do 28. Sep 2017, 16:10
von Gast
Vorsicht mit \let in LaTeX. → letltxmacro

Verfasst: Do 28. Sep 2017, 16:13
von Gast
Wobei das \let\wichtiger\wichtig in obigem Beispiel eher sinnlos ist, da \wichtiger anschließend ohnehin umdefiniert wird.