切换案例Latex中的条件输出

时间:2017-10-14 22:41:26

标签: switch-statement latex

全部 我想写一个结构如下的报告:

   \begin{document}
     \input[option=a]{class}
     \input[option=b]{class}
     \input[option=c]{class}
     \input[option=d]{class}
   \end{document}

class.tex的内容如下:

   here are some shared content

   switch(option)
     case a
       some text a
     case b
       some text b
     case c
       some text c
     case d
       some text d
   endswitch

   Here maybe more shared content.

在Latex中有没有办法做到这一点?

谢谢。

3 个答案:

答案 0 :(得分:0)

据我了解,您想要的是更新文本的每个不同部分的功能,同时在一个地方定义功能。

执行此操作的简单方法是在每个部分的开头更新变量命令。

开始时: \ newcommand {\ VARIABLENAME} {VARIABLE_1}

在以下部分: \ renewcommand {\ VARIABLENAME} {variable_2的}

还有更多高级方法可以做到这一点,包括定义变量,但总而言之,它更具可读性,更易于实现。

注意:如果你打算创建一些比一个类更动态的东西,我建议用另一种语言(如python)实现一些东西来在LaTex中编写文件,因为它通常会给修改提供更多的空间。 / em>的

答案 1 :(得分:0)

您可以使用以下(粗略)方法识别要从文件中提取内容的文本组件:

enter image description here

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents*}{class.tex}
   switch(option)
     case a
       some text a
     case b
       some text b
     case c
       some text c
     case d
       some text d
   endswitch
\end{filecontents*}

\usepackage{catchfile}

% \inputclass{<file>}{<from>}{<to>}
\newcommand{\inputclass}[2]{%
  \CatchFileDef{\class}{class.tex}{}%
  \long\def\classsegment##1#1 ##2 #2##3\relax{##2}%
  \show\classsegment
  \expandafter\classsegment\class\relax
}

\begin{document}

\inputclass{case c}{case d}

\inputclass{case a}{case b}

\inputclass{case d}{endswitch}

\inputclass{case b}{case c}

\end{document}

相关:

最后一个是使用catchfilebetweentags package的更具适应性的方法。这需要在您的代码中插入适当的标记,这可能没有用处。您还可以使用listings包含外部文件中的特定代码行。

答案 2 :(得分:0)

这样做的简化方法可以是使用if else fi逻辑

的逻辑语句

.tex文件的顶部设置了一个带

的开关
\newif\ifswitch

默认值为false。要将值设置为true,请使用

\switchtrue

然后在文档的文本中使用

\ifswitch

   <<text to include if switch is true>>

\else

   <<text to include if switch is false>>

\fi % ends the if statement

因此,对于您的特定问题,您可以拥有一组开关

\newifConditionA
\newifConditionB
\newifConditionC
\newifConditionD

这不如使用switch语句那么优雅,但允许例如同时需要来自A和C的文本的条件。

此处讨论此处的参考资料 two versions of a document with 'if else' logic statements