定义新环境

定义新环境

我之前问过,但我从未得到我想要的答案。(旧问题在这里:定义新的图形环境

正如标题所示,我正在寻找一种方法,通过定义一个新的环境,而不是命令。

这个例子和老问题一样:我如何定义一个新环境,让两幅图像并排显示

这是我尝试过的但没有效果。

\documentclass[a4paper,11pt,fleqn,twoside,openright]{memoir}
\usepackage{caption}
\usepackage{graphicx,caption}
\usepackage{float}

\newenvironment{sidebyside}[6]{
    \begin{figure}[H]
        \centering
            \begin{subfigure}[b]{0.49\textwidth}
            \includegraphics[width=\textwidth]{Lists/Images/#1}
            \caption{#2}
        \end{subfigure}
        %
        \begin{subfigure}[b]{0.49\textwidth}
            \includegraphics[width=\textwidth]{Lists/Images/#3}
            \caption{#4}
        \end{subfigure}
        \caption{\protect\raggedright #5}
        \label{#6}
    \end{figure}
}

我希望它作为环境的唯一原因是因为我正在与不懂 LaTeX 编码的人一起工作,所以我需要尽可能让他们轻松理解。

编辑澄清:

当用户输入“ \begin{sidebyside}”并按下回车键时,他应该会看到以下代码弹出:

\begin{sidebyside}
    \begin{figure}[H]
        \centering
            \begin{subfigure}[b]{0.49\textwidth}
            \includegraphics{}
            \caption{}
        \end{subfigure}
        %
        \begin{subfigure}[b]{0.49\textwidth}
            \includegraphics{}
            \caption{}
        \end{subfigure}
        \caption{\protect\raggedright }
        \label{}
    \end{figure}
\end{sidebyside}

编辑2:

显然我的问题仍然很难理解。所以我记录了我希望发生的事情:https://youtu.be/vEBT6Z5TwJQ

最终编辑:

我现在明白了,大多数人使用的 LaTex 编辑器显然与在线解决方案不同。这个问题是基于我对编辑器的不熟悉,并且源于在线编辑器 Overleaf,它有一些豪华的快捷方式和自动完成命令和环境,这显然不适用于“常规”编辑器。所以我现在明白为什么很难理解。

答案1

这是一个environment基于的解决方案。

在此处输入图片描述

\documentclass[a4paper,11pt,fleqn,twoside,openright]{memoir}
\usepackage[demo]{graphicx} % remove 'demo' option in real document
\usepackage{subcaption,float}

\newenvironment{sidebyside}[6]{%
   \begin{figure}[H]
   \begin{subfigure}[b]{0.49\textwidth}
      \includegraphics[width=\textwidth]{Lists/Images/#1}
      \caption{#2}
   \end{subfigure}\hspace{\fill}%
   \begin{subfigure}[b]{0.49\textwidth}
      \includegraphics[width=\textwidth]{Lists/Images/#3}
      \caption{#4}
   \end{subfigure}
   \caption{\protect\raggedright #5}
   \label{#6}}{%
   \end{figure}}

\begin{document}
\setcounter{chapter}{2} % just for this example
\begin{sidebyside}%
  {pic1}{Caption of first subfigure}%
  {pic2}{Caption of second subfigure}%
  {Overall caption}{fig:x}
\end{sidebyside}
\end{document}

尽管如此,我同意@TeXnician的观点,即基于宏的解决方案似乎更加自然,并且至少同样易于实现。首先是命令定义:

\newcommand{\sidebyside}[6]{%
   \begin{figure}[H]
   \begin{subfigure}[b]{0.49\textwidth}
      \includegraphics[width=\textwidth]{Lists/Images/#1}
      \caption{#2}
   \end{subfigure}\hspace{\fill}%
   \begin{subfigure}[b]{0.49\textwidth}
      \includegraphics[width=\textwidth]{Lists/Images/#3}
      \caption{#4}
   \end{subfigure}
   \caption{\protect\raggedright #5}
   \label{#6}
   \end{figure}}

二、调用命令的方式:

\sidebyside{pic1}{Caption of first subfigure}%
           {pic2}{Caption of second subfigure}%
           {Overall caption}{fig:x}

相关内容