\chapterコマンドの内容を有効または無効にする

\chapterコマンドの内容を有効または無効にする

ユーザー向けの大量のコンテンツがあります。異なるユーザーには異なるコンテンツを表示したいと思います。このために、ドキュメントの一部のコンテンツ (章、セクション、サブセクションなど) を表示したり表示しなかったりして、異なる出力を生成したいと思います。

私のアイデアは、章やセクションを書くときに、引数をtrueまたはfalseに設定して特定のユーザーに表示できるようにすることです。たとえば、

if (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を「True」として渡すとuser3、出力には次の内容が含まれるはずです。

コマンド(例):\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コマンドを変更する必要はありません。

関連情報