![向预览添加附加信息](https://linux22.com/image/253097/%E5%90%91%E9%A2%84%E8%A7%88%E6%B7%BB%E5%8A%A0%E9%99%84%E5%8A%A0%E4%BF%A1%E6%81%AF.png)
以下示例在显示源 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}
结果: