平均能量损失

平均能量损失

这里有两个小问题:

  • 为什么是子条目3不在\scriptsize
  • 如何安排... 主条目1所以它只会出现在最后一个子条目(无论有多少对),而不是在第一对的末尾(即在子条目2)?

平均能量损失

% !TEX TS-program = lualatexmk

\documentclass{scrreprt}

%%%%%%%%%%%%%%%%%%%%%%
%
%
%
\newenvironment {mainentry} {\mainentryA}{}
\def\mainentryA#1#2#3{%
   \def\subentry##1##2{%
\scriptsize ##1 \space \Huge ##2 ... #1
   }%
#1 #2 #3
}
%
%
%
\def\subentry{\def\subentryS{\def\subentryS{\endgraf}}\futurelet\next\subentryA}
\def\subentryA{\ifx\bgroup\next\expandafter\subentryB\fi}
\def\subentryB#1#2{\subentryS\subentry{#1}{#2}\futurelet\next\subentryA}
%
%
%
%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\begin{mainentry}{
Mainentry1
}{
Mainentry2
}{
Mainentry3
}

\subentry{
Subentry1
}{
Subentry2
}{
Subentry3
}{
Subentry4
}

\end{mainentry}

\end{document}

答案1

你对另一个答案的评论暗示你需要,或许,将一些在 LaTeX 环境开始时声明的数据添加到每个\subentry使用末尾。这意味着

\begin{mainentry}{AAA}{B}{}
\Subentry{C}{D}{E}{F}
\Subentry{U}{V}{W}{X}{Y}{Z}
\end{mainentry}

将会打印如下内容:

AAA B
(sub C, sub D) (sub E, sub F) (end: AAA)
(sub U, sub V) (sub W, sub X) (sub Y, sub Z) (end: AAA)

但我不确定这是否正是您的意图,因为您在此站点上提出了许多有关此主题的问题,但没有一个问题能够准确解释您的意图。

您可以尝试用此代码进行实验:

\documentclass[a4paper]{scrreprt}

\newenvironment {mainentry} {\mainentryA}{}
\def\mainentryA#1#2#3{%
   \def\SubentryE{\endgraf At the end of subentry collection is again (#1).}%
   \def\SubentryC##1##2{%
      Here is external paremater (#1) and second external (#2).
      And internal parameter is (##1) and second internal (##2).
   }
}
\def\Subentry{\def\SubentryS{\def\SubentryS{\endgraf}}\futurelet\next\SubentryA}
\def\SubentryA{\ifx\bgroup\next\expandafter\SubentryB\else\SubentryE\fi}
\def\SubentryB#1#2{\SubentryS\SubentryC{#1}{#2}\futurelet\next\SubentryA}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}
\begin{mainentry}{A}{B}{}
\Subentry{C}{D}{E}{F}
NEXT
\Subentry{U}{V}{W}{X}{Y}{Z}
\end{mainentry}
Some text.
\end{document}

答案2

\subentry{ Subentry1 }{ Subentry2 }{ Subentry3 }{ Subentry4 }

\scriptsize Subentry1 \space \Huge Subentry2 ... mainentry1 (Subentry3}{Subentry4}

所以只有第一个在\scriptsize,所有后面的都在Huge中,标题询问迭代,但这里没有迭代,\subentry只调用一次。

您可以在环境的开始代码中保存 mainentry1,并在结束时使用它

\def\savedmain{#1}

在开始代码中,并\savedmain在子条目后的结束代码中使用。或者(如前面的问题所示)您可以使用expl3允许您#1直接在结束代码中使用的环境声明。

我认为您正在寻找类似的东西,但我永远不会在文档中使用这样的定义。对列表进行迭代{]完全违反了 Latex 语法,其中{}表示强制参数,而在这里您实际使用对,它只会掩盖文档。

我会使用简单的非迭代定义和类似语法

\begin{mainentry}{aa}{bb}{cc}

 \subentry{s1}{sss1}
 \subentry{s2}{sss2}
 \subentry{s3}{sss3}

\end{mainentry}

那么代码和文档就会清晰很多。

然而:

\documentclass{scrreprt}

%%%%%%%%%%%%%%%%%%%%%%
%
%
%
\newenvironment{mainentry}[3]{#1 #2 #3\def\mainentrya{#1}\par}{\mainentrya}
%
\long\def\subentry#1#2{%
\ifx\par#1%
\endgraf\expandafter\end\else
{\scriptsize#1} {\huge#2}\expandafter\subentry
\fi}


%
%
%
%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\begin{mainentry}{
Mainentry1
}{
Mainentry2
}{
Mainentry3
}

\subentry{
Subentry1
}{
Subentry2
}{
Subentry3
}{
Subentry4
}

\end{mainentry}

\end{document}

相关内容