向预览添加附加信息

向预览添加附加信息

以下示例在显示源 latex 文件中的图像并忽略其他所有内容的情况下有效。是否有某种方法可以执行相同的任务,同时还列出有关每个图像的信息,例如其尺寸、文件大小和每个图像下方的文件名?只有预览应该有这些。

我希望我不仅可以做到这一点,而且不必亲自手动输入文件大小和其他信息——尽管如果没有办法自动获取信息,那么下一个最佳方法是手动添加信息。无论哪种方式,我都想知道如何实现这一点。

\documentclass{article}
\usepackage{graphicx}
\usepackage{lipsum}
\usepackage[active,tightpage,pdflatex,graphics,showlabels]{preview}

\begin{document}

\lipsum[1]

\begin{center}
\includegraphics{elephant}
\end{center}

\lipsum[1]

\end{document}

结果(图像周围的灰色部分不是输出的一部分,而是我捕获过程的产物,因此可以忽略该部分):

截屏

(有关大象图片的知识共享信息这里

答案1

以下解决方案重新定义\includegraphics(以带有一个可选参数的形式)并在预览已加载并处于活动状态时在图像下方打印额外数据。自 1.30 版以来,pdfTeX 有一些很好的命令可以提取文件修改日期、文件大小或文件的 MD5 和。

图像尺寸由 graphics\Gin@nat@width和获得\Gin@nat@height。但是它们可以通过选项 进行修改trim,例如。也许更清楚的是“最终图像尺寸”。它只是图像在纸张上占据的尺寸。它是通过将\includegraphics放入一个框中来测量的。

\documentclass{article}
\usepackage{graphicx}
\usepackage{lipsum}

% Store the old meaning of \includegraphics
\usepackage{letltxmacro}% safer variant
\LetLtxMacro\OldIncludegraphics\includegraphics

% \FileName{<file>} prints the file name
\usepackage{url}
\DeclareUrlCommand\FileName{\urlstyle{sf}}

% Packages for extracting and printing file meta data
% (for pdfTeX and LuaTeX in both modes)
\usepackage{pdftexcmds}
\usepackage{filemod}

\makeatletter
\newsavebox{\graphics@box}
\newcommand*{\NewIncludegraphics}[2][]{%
  \begingroup
    % catch the right file name by hooking into \@addtofilelist
    % that is called by \includegraphics
    \gdef\graphics@filename{#2}% default
    \gdef\graphics@natsize{\textit{unknown}}%
    \let\org@addtofilelist\@addtofilelist
    \renewcommand*{\@addtofilelist}[1]{%
      \org@addtofilelist{##1}%
      \xdef\graphics@filename{##1}%
      \xdef\graphics@natsize{%
        \the\Gin@nat@width\,$\times$\,\the\Gin@nat@height
      }%
    }%
    \sbox{\graphics@box}{\OldIncludegraphics[{#1}]{#2}}%
    \begin{tabular}{@{}l@{ }l@{}}%
      \multicolumn{2}{@{}l@{}}{\usebox{\graphics@box}}\tabularnewline
      \LaTeX\ name: & \FileName{#2}\tabularnewline
      File name: &
      \expandafter\FileName\expandafter{\graphics@filename}\tabularnewline
      File date: &
      \filemodprint{\graphics@filename}\tabularnewline
      File size: &
      \pdf@filesize{\graphics@filename}\tabularnewline
      File MD5 sum: &
      \pdf@filemdfivesum{\graphics@filename}\tabularnewline
      Natural image size: & \graphics@natsize\tabularnewline
      Final image size: &
      \the\wd\graphics@box\,$\times$\,%
      \the\dimexpr\ht\graphics@box + \dp\graphics@box\relax
      \tabularnewline
    \end{tabular}%
  \endgroup
}
\renewcommand*{\includegraphics}{\NewIncludegraphics}
\makeatother

\usepackage[active,tightpage,pdflatex,graphics,showlabels]{preview}

% if package preview is loaded and active,
% \ifPreview is defined and true.
\ifx\ifPreview\iftrue
\else
  % otherwise switch to unchanged behaviour of \includegraphics
  \let\includegraphics\OldIncludegraphics
\fi

\begin{document}

\lipsum[1]

\begin{center}
\includegraphics[scale=.5]{elephant}
\end{center}

\lipsum[1]

\end{document}

结果:

在此处输入图片描述

相关内容