如何以编程方式在 LaTeX 中创建章节

如何以编程方式在 LaTeX 中创建章节

在我面临的问题的最简单的形式中,我需要定义一个接受两个参数的命令,使用第一个参数将一些内容放入文档中调用命令的确切位置,并保存第二个参数以便稍后在文档中使用。

具体来说,我正在定义一个命令来帮助我填写活动报告。该命令将接受某些活动的描述(第一个参数)和证明已执行该活动的文件的名称(扫描页面或 PDF)(第二个参数)。该命令必须将第一个参数格式化为漂亮的表格,并将 添加到\refPDF,它将自动包含在文档末尾的部分中,并带有相应的\label

现在我使用标签作为第二个参数并手动包含文件,如下例所示。

\documentclass[]{article}

\newcounter{ctannex}

\DeclareRobustCommand{\annex}[1]{%
   \refstepcounter{ctannex}%
   \label{#1} %
    Annex \arabic{ctannex} %
}



\newcounter{ctactivity}

\DeclareRobustCommand{\activity}[3]{%
   \refstepcounter{ctactivity}%
   \label{#1} %
   Activity \arabic{ctactivity}\\ %
   Description: #3\\ %
   Receipt: \ref{#2}
}


\usepackage{graphicx}

\begin{document}

\section{Activities}
\begin{itemize}
 \item \activity{actLabel}{annexLabel}{nothing, really}
\end{itemize}


\section{Annexes}
\begin{itemize}
\item \annex{annexLabel}
      \includegraphics[width=\textwidth]{falta}
\end{itemize}

\end{document}

理想情况下,我会将命令调用为

\activity{actLabel}{file.png}{nothing, really}

答案1

以下代码提供您所需要的功能。

在此处输入图片描述

\documentclass{article}
\usepackage[demo]{graphicx}% http://ctan.org/pkg/graphicx
\usepackage{hyperref}% http://ctan.org/pkg/hyperref

\def\PrintAnnex{}
\newcounter{activityctr}% \renewcommand{\theactivityctr}{\arabic{activityctr}}%
\newcounter{annexctr}% \renewcommand{\theannexctr}{\arabic{annexctr}}%
\makeatletter
\newcommand{\newactivity}[3]{%
  \item\refstepcounter{activityctr}% Increment and mark activity counter
  \label{#1}% Label activity
  Activity:~\theactivityctr\\% Print activity #
  Description:~#3\\% Print description
  Receipt:~\ref{annex-#1}% Reference receipt
  \g@addto@macro{\PrintAnnex}{%
    \item\refstepcounter{annexctr}% Increment and mark annex counter
    \label{annex-#1}% Label annex
    Annex:~\theannexctr\par% Print annex #
    \includegraphics[width=\linewidth,height=2\baselineskip]{#2}% Insert image
  }%
}
\makeatother

\begin{document}

\section{Activities}
\begin{itemize}
  \newactivity{activity1}{tiger}{nothing, really}
  \newactivity{activity2}{tiger}{Rooooaaarrr!}
  \newactivity{activity3}{tiger}{Rooooaaarrr!}
  \newactivity{activity4}{tiger}{Mooaaarrr Rooooaaarrr!}
\end{itemize}

\section{Annexes}
\begin{itemize}
  \PrintAnnex
\end{itemize}
\end{document}

我假设您可能有兴趣引用文档其他部分的活动,因此使用两个计数器(一个用于活动activityctr,一个用于附件annexctr)。

随着每一个

\newactivity{<label>}{<file>}{<description>}

\item创建了一个带有\label{<label>}和 说明 的<description><file>将 添加为并以 的形式\includegraphics附加(使用\g@addto@macro)到宏中。因此,您可以使用 编译活动,并在列表中发出以打印附件列表。\PrintAnnex\item\newactivity\PrintAnnex

我已经添加了hyperref包裹为了证明超引用是可行的,尽管你可能对其他东西感兴趣。此外,demo包选项graphicx仅仅出于可移植性的原因,允许任何人编译 MWE。

相关内容