启用和禁用 \chapter 命令的内容

启用和禁用 \chapter 命令的内容

我为用户准备了大量内容。对于不同的用户,我想显示不同的内容。为此,我想通过显示和不显示文档的某些内容(例如章节、部分、子节)来产生不同的输出。

我的想法是:在编写章节/节时,我通过将参数设置为 true 或 false 来声明它以允许向特定用户显示。例如,

如果 (user1 == true) 那么它应该在那里user1.pdf

更具体地说,类似于:

宏是: \chapter <chapterName1> [bool arg1][bool arg2][bool arg3]

\chapter <chapterName1> [user1==true][user2==false][user3==false] 

\chapter <chapterName2> [user1==true][user2==true][user3==false]

\section <sectionName1> [user1==true][user2==true][user3==true]

如果我传递user1并且user3为“True”,那么我的输出应该包含

命令(例如):\def\arg1=true, arg2=false, arg1=true \input{myfile}

chapterName1

sectionName1

我怎样才能做到这一点?

答案1

你可以从这里开始。下面的方法以environ包为特色来跳过内容,但你也可以尝试使用该comment包来实现此目的。

\documentclass[openany]{scrbook}

\usepackage{environ}
\usepackage{pdftexcmds}

\newcommand{\username}{user1}

\makeatletter
\NewEnviron{condchapter}[2][user]{
    \ifnum\pdf@strcmp{#1}{\username}=\z@
        \chapter{#2}
        \BODY
    \else
    \fi
}
\makeatother

\begin{document}

\begin{condchapter}[user1]{Title-1}

Some text.

\end{condchapter}

\begin{condchapter}[user2]{Title-2}

Some text.

\end{condchapter}

\renewcommand{\username}{user2}

\begin{condchapter}[user2]{Title-3}

Some text.

\end{condchapter}

\end{document}

启用用户列表的另一种可能性是:

\documentclass[openany]{scrbook}

\usepackage{environ}
\usepackage{xstring}

\newcommand{\username}{user1}

\makeatletter
\NewEnviron{condchapter}[2][user]{
    \IfSubStr{#1}{\username}{%
        \chapter{#2}
        \BODY
    }{}
    %\else
    %\fi
}
\makeatother

\begin{document}

\begin{condchapter}[user1]{Title-1}

Some text.

\end{condchapter}

\begin{condchapter}[user2]{Title-2}

Some text.

\end{condchapter}

\renewcommand{\username}{user2}

\begin{condchapter}[user2, user3]{Title-3}

Some text.

\end{condchapter}

\end{document}

PS:要一次创建所有文件,您可以从答案开始这里


另一种可能性是仅使用comment包裹为此目的,无需修改命令chapter

相关内容