如何在同一文档中输入不同的页面布局?

如何在同一文档中输入不同的页面布局?

我目前正在尝试改编我为“烹饪书”找到的模板,我想包含不同的页面布局以使文档略有变化。我知道 Latex 不是此类项目的最佳工具,而像 Canva 这样的工具肯定会更好。出于某些原因,我决心继续使用 Latex,我希望您能帮助解决我遇到的一个问题。

我的一般文档设置如下:我有一个包含模板的文件夹,我在其中定义一般命令并包含包。其他命令包括“样式选择器”

\newcommand{\Style}[1]{
\ifthenelse{#1=1}{\input{templates/template_s1}}{}
\ifthenelse{#1=2}{\input{templates/template_s2}}{}
\ifthenelse{#1=3}{\input{templates/template_s3}}{}
\ifthenelse{#1=4}{\input{templates/template_s4}}{}
}

我也有概述模板 s1 到 s4 的文档,问题就出在这里。在原始模板中,您会将 \Style 直接输入到主文档中,因此与其相关的所有命令对于整个文档都是通用的。我希望能够为每个单独的食谱选择一个 \Style,但一些命令名称在模板之间重叠。例如,我有这两种成分环境,具体细节无关紧要,只是为了说明目的。

\newenvironment{ingredient}
  {\noindent\begingroup\edef\x{\endgroup\noexpand\includegraphics[width=1\linewidth,height=2.5cm,clip,viewport=\@ImageDim]{\@ImagePath}}\x
  \maketitle
  
  \begin{footnotesize}
    \noindent
    \begin{tabular}{L{0.62\linewidth}L{0.33\linewidth}}
        \vspace{-0.21cm}
        \textcolor{red!60}{\textbf{{\normalsize Ingredients}}} & \\ % here is the "Ingredients" row
        \begin{minipage}{\linewidth}
            \vspace{0.2cm}
            }
            {\vspace{-0.2cm}
        \end{minipage}
        & \vspace{-1.8cm}Prep time: \@PrepTime \,min % here began tikzpicture
        \par \vspace{0.2cm} Cooking: \@CookingTime min -- \@CookingTempe 
        \par \vspace{0.2cm} %Type of cooking: \@TypeCooking \vspace{0.2cm} 
        \par Utensiles: \@Utensiles \\
    \end{tabular}
    \vspace{0.5cm}
    \end{footnotesize}
    }

\newenvironment{ingredient}
    {\noindent\begingroup\edef\x{\endgroup\noexpand}\x
    \maketitle
    
    \begin{footnotesize}
        \noindent
        \begin{tabular}{L{0.3\linewidth}L{0.2\linewidth}c}
            \vspace{-0.21cm}
            \textcolor{red!60}{\textbf{{\normalsize Zutaten}}} & \\ % here is the "Ingredients" row
            \begin{minipage}{\linewidth}
                \vspace{0.2cm}
                }
                {\vspace{-0.2cm}
            \end{minipage} 
            & \begin{minipage}{\linewidth}
                \vspace{0.2cm}
                Prep-Zeit: \@PrepTime min % here began tikzpicture
                \par \vspace{0.2cm} Kochen: \@CookingTime min,     \@CookingTempe 
                \par \vspace{0.2cm}  
                \par Geräte: \@Utensiles 
            \end{minipage}
            & \begin{minipage}{0.4\linewidth}
            \includegraphics[width=210pt]{\@ImagePath}
        \end{minipage} \\ 
        \end{tabular}
        \vspace{0.5cm} 
    \end{footnotesize}
    }

由于我定义了两次环境,一次在 \Style a 中,一次在 \Style b 中,因此我遇到了大量错误,有时代码无法编译。有没有办法定义一个“父”环境,根据样式选择器选择正确的样式?

答案1

这里的一个常见做法是,用不同的名称全局定义所有样式,以便

\newenvironment{ingredientA}{..}{...}
..
\newenvironment{ingredientsB}{..}{...}

然后在你的风格切换中

\ifthenelse{#1=1}{\let\ingredientA\ingredient \let\endingredient\endingredientA}{}

这将\begin{ingredient}在本地使用定义\begin{ingredientA}

LaTeX 在很多地方使用这种结构,例如,\\通常 \@normalcrtabular它是\@tabularcr,在longtable它是\LT@tabularcr

相关内容