为 graphicx 定义自定义键

为 graphicx 定义自定义键

我想定义一些简写键,includegraphics[]{}如下所示:

fullwidth -> width=\textwidthhalfwidth -> width=0.5\textwidthETC。

对此最好的方法是什么?

答案1

以下将halfwidth和键添加到与(在系列下)fullwidth关联的键集合中。默认情况下相当于(内部设置),而相当于。\includegraphicsGinhalfwidthwidth=0.5\linewidth\Gin@ewidthfullwidthwidth=\linewidth

在此处输入图片描述

\documentclass{article}

\usepackage[hmargin=2in,vmargin=1in,showframe]{geometry}% Just for this example
\usepackage{graphicx}

\makeatletter
% Add halfwidth key (default is 0.5\linewidth)
\define@key{Gin}{halfwidth}[0.5\linewidth]{%
  \def\Gin@ewidth{#1}}
% Add fullwidth key (default is \linewidth)
\define@key{Gin}{fullwidth}[\linewidth]{%
  \def\Gin@ewidth{#1}}
\makeatother

\begin{document}

\begin{figure}
  \centering
  \includegraphics[width=0.5\linewidth]{example-image}
  \caption{Half width via \texttt{width}}
  
  \medskip
  
  \includegraphics[halfwidth]{example-image}
  \caption{Half width via \texttt{halfwidth}}
\end{figure}

\clearpage

\begin{figure}
  \centering
  \includegraphics[width=\linewidth]{example-image}
  \caption{Half width via \texttt{width}}
  
  \medskip
  
  \includegraphics[fullwidth]{example-image}
  \caption{Half width via \texttt{fullwidth}}
\end{figure}

\end{document}

一般来说,向现有系列添加键并不难。你只需要看看它如何适应现有框架。例如,由于和halfwidthfullwidth相关width,搜索如何width处理graphicx.dtx以及如何使用默认值管理密钥(如果没有其他指定)就是我进行此操作的方法。

答案2

我认为最好的简写是一个简单的 LaTeX 宏,它可以简化排版冗长而重复的代码,而不必修补非常常用的命令,也不必接触 LaTeX \@guts,也不必使用外部语言。例如,如果您经常使用图像,只需取文本宽度的 50% 和 100%,您可以使用:

\newcommand\halfimg[1]{\includegraphics[width=0.5\linewidth]{#1}}
\newcommand\fullimg[1]{\includegraphics[width=\linewidth]{#1}}

进而:

\halfimg{example-image-a} \full{example-image-b}

或者,如果您打印大量具有非常不同宽度的图像,则可以只使用一个带有可选参数的宏,而不是为几个“标准”宽度制作宏。MWE:

\documentclass[twocolumn]{article}
\usepackage{graphicx,lipsum,parskip}
\newcommand\img[2][]{\includegraphics[width=#1\linewidth]{#2}}
\begin{document}
\lipsum[1][1-3]
\img{example-image}
\img[.5]{example-image}
\img[.25]{example-image}
\img[.125]{example-image}
\img[.065]{example-image}
\lipsum[2][1-3]
\end{document}

姆韦

您还可以使其更加复杂,使用具有两个以上参数的宏来允许设置另一个变量选项angle,但恕我直言,简写应该简单、易于输入且易于记忆,否则,\includegraphics直接使用更容易。

相关内容