如何将多分支案例结构导入 LaTeX 文档。

如何将多分支案例结构导入 LaTeX 文档。

我能否为几种情况建立一个结构,以便我能够得到一个 TeX 命令分支,行为如下:


如果情况A

  • 如果情况 A1

\cmdAi{arg1}

  • 否则,如果情况 A2

\cmdAii{arg2}

  • 否则,如果情况 A3

\cmdAiii{arg3}

  • 万一

否则,如果情况 B

  • 否则,如果情况 B1

\cmdBi{arg4}

  • 否则,如果情况 B2

\cmdBii{arg5}

  • 万一

万一


情况 A1~情况 B2 是预先给出的,比如,来自有序集合(可能其形式是{\a,\'a,\^a,`A,\^A}`)。

我知道这个ifthen包,但是它太简单(或者太复杂?)不方便使用。

直观的解释:

这一需求与模态逻辑和语义有关。考虑给定的字母链n位(n 小于 16),例如,

TxFxyxxTyxTFyT

zTyxTzzxxTyxF

等等。表示“True”或常量的字符T值为 1,F表示“False”或常量的字符值为 0,其他字符xyz等表示值介于 0 和 1 之间的变量(不必相等)。在为变量赋值后,我想打印如下结果:

上面给出的链中有贵重物品 [#1] (@1) 次(或打印 [#1] 出现在哪些地方),[#2] (@2) 次,[#3] (@3) 次,... 它们的权重总和是...

[#1], [#2], [#3] 等分别为x, y, z; (@1), (@2), (@3), 等意思同前。

答案1

我不太清楚你想要什么,但既然你提到了有序列表,这里有一种方法。使用“TeX”作为计算机语言的困难之一是它缺乏内置数据结构。但是一旦你有了列表,你就可以构建你想要的任何类型的数据结构,我认为这就是你所需要的。然而,一些常见的编程范式的转变是必要的,所以这里有一个传统的 TeX 解决方案。

考虑以下列表中的关键字列表:

\def\alist{A--,A+,A++,A-,A=,A==,}

其有序列表如下:A+,A++,A--,A---,A=,A==,

列表中的每个元素都将充当一个“对象”并保存一些信息,true或者false您可能希望的任何其他信息。

我们定义一个合适的宏来将元素及其定义添加到列表中,然后对列表进行排序。

\def\AddElementToList#1#2#3{%
  \lst@lAddTo#1{#2,}
  \expandafter\def\csname#2\endcsname{#3}
  \lst@BubbleSort{\alist}
}

@for我们可以使用LaTeX 内核的命令循环列表并扩展所有元素的含义。

\@for \i:=\alist \do{%
  \texttt{%
  \expandafter\csname\i\endcsname}\par    
}

任何单个元素都可以通过其名称访问\@nameuse{A==}

从命令中可以看出,您可以object在列表中存储任何类型的。它可以是一个数字,也可以存储一本书的整章,甚至可能是整本书!下面显示的 MWE 有一个警告,如果您用土耳其语编写,请将更改\i为其他内容或在组中运行代码。

\documentclass{article}
\usepackage{lstdoc}
\begin{document}
\makeatletter
%% define a list for demo purposes
\def\alist{A--,A+,A++,A-,A=,A==,}
%% typeset the unsorted list
\texttt\alist

The ordered list
%% the sorted list
\lst@BubbleSort{\alist}
\texttt\alist

%% empty the list
\let\alist\empty
%% add element and define the element macro
\def\AddElementToList#1#2#3{%
  \lst@lAddTo#1{#2,}
  \expandafter\def\csname#2\endcsname{#3}
  \lst@BubbleSort{\alist}
}

%Consider adding some elements
\AddElementToList{\alist}{A+}{True}
\AddElementToList{\alist}{A++}{False}
\AddElementToList{\alist}{A-}{False}
\AddElementToList{\alist}{A=}{0}
\AddElementToList{\alist}{A==}{1}
\AddElementToList{\alist}{A--}{1}
\AddElementToList{\alist}{A---}{$a^2+33=f_2$}

\texttt\alist

%% loop over the list
\@for \i:=\alist \do{%
  \texttt{%
  \expandafter\csname\i\endcsname}\par    
}
\makeatother
\end{document}

你可以认为这alist是你的case陈述。

相关内容