一些背景信息:我使用 Inkscape 生成 pdf 格式的图片,然后使用常用函数将其导入 latex \includegraphics{pdffile}
。除了将图片保存为矢量格式外,它还可以设置图片的正确尺寸,无需我进行任何干预。
问题是,有时我不得不制作一个尺寸超出页面宽度的 PDF。这可以很容易地手动纠正,使用
\includegraphics[width=\pagewidth]{pdffile}
但是我想要的是,使用一些技巧来告诉乳胶,如果超出页面宽度,则自动将所有图形设置为页面宽度,如果没有超出,则保留原始尺寸。
以下是 MWE:
\documentclass[10pt,a4paper]{article}
\usepackage{fontspec,graphicx}
\usepackage[left=2cm,right=5cm,top=5cm,bottom=2cm]{geometry}
\begin{document}
Some text.
\begin{figure}[h]
\begin{center}
\includegraphics{example-image-a.pdf}
\end{center}
\caption{Some too long PDF.}
\end{figure}
\end{document}
答案1
这定义了一个新命令\includeimage[]{}
。它的工作原理与 类似\includegraphics[]{}
,只是它会在需要时限制宽度\textwidth
,并且如果在选项中没有手动设置宽度以覆盖它。也就是说,如果您选择,您仍然可以覆盖最大值。
\includegraphics{example-image-a.pdf}
这显示了和之间的区别\includeimage{example-image-a.pdf}
:
代码:
\documentclass[a5paper]{article}
\usepackage[showframe]{geometry}
\usepackage{graphicx,xparse}
\makeatletter
\newlength\img@width
\NewDocumentCommand\includeimage { O {} m }{%
\settowidth\img@width{\includegraphics[#1]{#2}}%
\ifdim\img@width > \textwidth \includegraphics[width=\textwidth, #1]{#2}%
\else \includegraphics[#1]{#2}5
\fi}
\makeatother
\begin{document}
Some text.
\begin{figure}
\centering
\includegraphics{example-image-a.pdf}
\caption{Some too long PDF.}
\end{figure}
\begin{figure}
\centering
\includeimage{example-image-a.pdf}
\caption{Some too long PDF.}
\end{figure}
\end{document}
笔记:
大多数情况下最好
\includegraphics{example-image-a}
不要使用扩展名。 也是一样\includeimage{example-image-a}
。不要使用
center
环境,因为figure
它会增加额外的垂直空间。不要使用
\begin{figure}[h]
。如果你真的想要一些东西这里,根本不要使用figure
。(如果您想要标题,请使用支持浮动外部标题的caption
或capt-of
。)