用不同的定义动态改变文本

用不同的定义动态改变文本

我必须PDF经常使用两个选项打印我的文件:A 或 B。

当我更改文件内容时,由于必须更改文档中的很多位置,因此经常容易出错。

现在我想使用动态变化:

例如一些文本定义:

选项A中的定义:

vartitleA.1 = 这是选项 A

vartitleA.2 = 选项 A:ABCDE

vartitleA.3 = 显示选项 A

选项B中的定义:

vartitleB.1 = 没有 A,只有 B

vartitleB.2 = 选项 B:GHJK1238

vartitleB.3 = 显示选项 B - 否 A

在代码中,当我选择选项 = B 时,文件.pdf应在 vartitle1、2、3 的所有位置显示选项 B 的所有定义

我的最小示例代码:

\documentclass{article}
\usepackage{tcolorbox}
\usepackage{colortbl}
%Need definition text of option A & B
% vartitleA.1 = This is option A
% vartitleA.2 = Option A: ABCDE
% vartitleA.3 = Display option A
%...similar for option B

\begin{document}

%here can i set ex. select option = option A and automatic set vartitle1=vartitleA.1, vartitle2 = vartitleA.2, vartitle3 = vartitleA.3...
\begin{tcolorbox}
This is option A %\vartitle1
\tcblower
Option A: ABCDE %\vartitle2
\end{tcolorbox}

\begin{tcolorbox}[title = {Display option A}] %vartitle3 
This is option A %\vartitle1
\tcblower
Option A: ABCDE %\vartitle2
\end{tcolorbox}

Display option A %\vartitle3 

\end{document}

谢谢

答案1

我定义了 6 个宏,分别用于\variantA...\variantB...标题,以及一个\ifoptionA与 切换的宏\SelectOption,可以指定为A或其他任何内容,与B然后相对应。

切换定义了实例\localtitle...中显示的内容tcolorbox

在此处输入图片描述

\documentclass{article}
\usepackage{tcolorbox}
\usepackage{colortbl}
%Need definition text of option A & B
% vartitleA.1 = This is option A
% vartitleA.2 = Option A: ABCDE
% vartitleA.3 = Display option A
%...similar for option B

\newif\ifoptionA

\newcommand{\vartitleAone}{This is option A}
\newcommand{\vartitleAtwo}{option ABCDE}
\newcommand{\vartitleAthree}{Display option A}

\newcommand{\vartitleBone}{No A,only B}
\newcommand{\vartitleBtwo}{option B: GHJK1238}
\newcommand{\vartitleBthree}{Display option B - No A}


\def\localtitleone{}
\def\localtitletwo{}
\def\localtitlethree{}


\newcommand{\SelectOption}[1]{%
  \expandafter\ifstrequal\expandafter{#1}{A}{%
    \global\optionAtrue
  }{%
    \global\optionAfalse
  }%
  \ifoptionA
  \gdef\localtitleone{\vartitleAone}
  \gdef\localtitletwo{\vartitleAtwo}
  \gdef\localtitlethree{\vartitleAthree}
  \else
  \gdef\localtitleone{\vartitleBone}
  \gdef\localtitletwo{\vartitleBtwo}
  \gdef\localtitlethree{\vartitleBthree}
  \fi
}


\newtcolorbox{mynicebox}[1][]{%
  #1%
}


\begin{document}

\SelectOption{A}

\begin{mynicebox}
  \localtitleone
  \tcblower
  \localtitletwo
\end{mynicebox}

\begin{mynicebox}[title={\localtitlethree}]
  \localtitleone
  \tcblower
\localtitletwo
\end{mynicebox}


Display option A %\vartitleA.3 


\SelectOption{B}

\begin{mynicebox}
  \localtitleone
  \tcblower
  \localtitletwo
\end{mynicebox}

\begin{mynicebox}[title={\localtitlethree}]
  \localtitleone
  \tcblower
\localtitletwo
\end{mynicebox}



\end{document}

相关内容