Vor einiger Zeit habe ich diesen Codeschnippsel aus graphics.sty verändert. Dadurch kann man alle Bilder auf dieselbe Größe skalieren. Bei DVI klappt das, bei PDF nicht. Weiß jemand warum? Hat das mit \ifGin@bbox zu tun? (Zum Ausprobieren eine test. ps und test. pdf bereitstellen.) Habe nun die Leerzeichen für den Umbrucn gegeben, nun sind als backslashes weg(??) In der Vorschau sind sie noch da

\makeatletter  
\newdimen\stdheight   %ctansearch
\newdimen\stdwidth     %ctansearch
\stdwidth=3cm       %ctansearch
\stdheight=0.66\stdwidth     %ctansearch
\def\Gin@setfile#1#2#3{%  
  \ifx\\#2\\\Gread@false\fi  
  \ifGin@bbox\else  
    \ifGread@  
      \csname Gread@%  
         \expandafter\ifx\csname Gread@#1\endcsname\relax  
           eps%  
         \else  
           #1%  
         \fi  
      \endcsname{\Gin@base#2}%  
    \else  
      \Gin@nosize{#3}%  
    \fi  
  \fi
  \Gin@viewport@code  
  \Gin@nat@height\Gin@ury bp%  
  \advance\Gin@nat@height-\Gin@lly bp%  
  \Gin@nat@width\Gin@urx bp%  
  \advance\Gin@nat@width-\Gin@llx bp%  
  \Gin@req@sizes  
  \expandafter\ifx\csname Ginclude@#1\endcsname\relax  
    \Gin@drafttrue  
    \expandafter\ifx\csname Gread@#1\endcsname\relax  
      \@latex@error{Can not include graphics of type: #1}\@ehc  
      \global\expandafter\let\csname Gread@#1\endcsname\@empty  
    \fi  
  \fi  
  \leavevmode  
\Gin@req@height=\stdheight     %ctansearch
\Gin@req@width=\stdwidth      %ctansearch
  \ifGin@draft  
      \hb@xt@\Gin@req@width{%  
        \vrule\hss  
        \vbox to \Gin@req@height{%  
           \hrule \@width \Gin@req@width  
           \vss  
           \edef\@tempa{#3}%  
           \rlap{ \ttfamily\expandafter\strip@prefix\meaning\@tempa}%  
           \vss  
           \hrule}%  
        \hss\vrule}%  
  \else  
    \@addtofilelist{#3}%  
    \ProvidesFile{#3}[Graphic file (type #1)]%  
    \setbox\z@\hbox{\csname Ginclude@#1\endcsname{#3}}%  
    \dp\z@\z@  
    \ht\z@\Gin@req@height  
    \wd\z@\Gin@req@width  
  \box\z@  
  \fi}  
\makeatother

gefragt 18 Jun '13, 21:47

ctansearch's gravatar image

ctansearch
(ausgesetzt)
Akzeptiert-Rate: 18%

bearbeitet 18 Jun '13, 22:34

Sieht kompliziert aus, evtl. kriegt man es einfacher raus, wenn Du markiert was genau verändert wurde, vllt. auch Beispiele zum direkten Nachvollziehen angibst. Ich würde die Prüfung und Skalierung auf LaTeX-Level mit Paket-Features machen, das ist vermutlich formatübergreifend sicherer als nahe TeX-Ebene zu redefinieren.

(18 Jun '13, 22:24) stefan ♦♦

Mit „Bei DVI klappt das, bei PDF nicht“ meinst Du damit das eingebundene Format oder den Kompiliermodus?

(18 Jun '13, 22:32) cgnieder

Den Kompiliermodus latex pdflatex

(18 Jun '13, 22:35) ctansearch

Meine Veränderungen habe ich mit %ctansearch markiert

(18 Jun '13, 22:38) ctansearch

Das scheint dann ja am Engine-Level zu liegen. Mit Wissen darüber kann ich leider nicht dienen :(

(18 Jun '13, 22:50) cgnieder

Man kann auch durch global gesetzte Optionen alle Bilder skalieren ohne im Code con graphicx.sty rumzufriemeln.

(19 Jun '13, 16:22) Herbert

Ja, aber pfriemeln macht mehr Spass und man findet heraus, wie es funktioniert (oder wie nicht).

(19 Jun '13, 22:17) ctansearch
Ergebnis 5 von 7 show 2 more comments

Leider fehlen in Deiner Frage einige wichtige Informationen wie die beteiligten Grafikformate und auf welchem Weg die PDF-Datei erzeugt wurde. Daher kann es leider sein, dass die folgende Antwort zwar korrekt aber auf Deinen Fall nicht anwendbar ist. Ein VM und zusätzliche Angaben der genannten Art wären daher für etwaige weitere Antworten oder Präzisierungen dieser Antwort von Vorteil.

Bei Verwendung von PostScript-Specials für externe Abbildungen ist für die Darstellung nicht der Skalierungsfaktor, sondern die Breite und Höhe einer Abbildung für deren Darstellung entscheidend.

Für die direkte PDF-Ausgabe mit pdflatex wird für die verkleinerte oder vergrößerte Darstellung eines PDF in einem PDF jedoch ein Skalierungsfaktor benötigt (siehe beispielsweise \convertPDFtoPDF im Treiber pdftex.def bzw. dessen dokumentiertem Quelltext).

Tatsächlich wird bei Deinem Code die Grafik für die Sicht von LaTeX auf dieselbe auch bei der PDF-Ausgabe in der Größe verändert, wie man mit einem \frame{\includegraphics{foo}} feststellen kann. Allerdings ist die Skalierung in der Objektinfo nicht vorhanden, so dass das eingebettete Objekt in seiner natürlichen Größe angezeigt wird. Tatsächlich müsstest Du also zusätzlich zu der internen, gewünschten Größe auch noch die interne Skalierung berechnen. Dies könnte beispielsweise wie folgt aussehen:

\Gscale@div\Gin@scaley\Gin@req@height\Gin@nat@height
\Gscale@div\Gin@scalex\Gin@req@width\Gin@nat@width

wobei auch dies nur eine Lösung ist, die bei einigen Ausgabetreibern und Grafikformaten genügen mag, bei anderen eventuell auch nicht.

Wenn Dir diese Antwort nicht genügt, bitte ich um ein VM, damit ich zum Testen etwas in der Hand habe und auch weiß, in welchem Format die Grafik für die PDF-Ausgabe vorliegt. Dies kann nämlich durchaus eine Rolle spielen.

Im übrigen empfehle ich bei solchen Low-Level-Experimenten nicht nur den dokumentierten Quelltext von graphics.sty und graphicx.sty, sondern auch den dokumentierten Quelltext der Ausgabetreiber gründlich zu studieren.

Und hier noch eine einfache Lösung, die unabhängig vom jeweiligen Treiber funktionieren sollte und die ich an Stelle der Low-Level-Eingriffe empfehle:

\documentclass{article}
\usepackage{graphicx}
\setkeys{Gin}{width=3cm,height=1.98cm}
\begin{document}
\frame{\includegraphics{foo}}
\end{document}

Als Grafikdatei foo kann dabei jede beliebige Grafik in jedem Format verwendet werden, das der jeweilige Ausgabetreiber versteht, beispielsweise a.ps aus der Anleitung der graphics-Sammlung oder ein daraus mit epstopdf erzeugtes a.pdf.

Permanenter link

beantwortet 24 Aug '13, 15:07

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

bearbeitet 26 Aug '13, 07:56

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×21
×18
×3

gestellte Frage: 18 Jun '13, 21:47

Frage wurde gesehen: 10,714 Mal

zuletzt geändert: 27 Aug '13, 00:27