ユーザー向けの大量のコンテンツがあります。異なるユーザーには異なるコンテンツを表示したいと思います。このために、ドキュメントの一部のコンテンツ (章、セクション、サブセクションなど) を表示したり表示しなかったりして、異なる出力を生成したいと思います。
私のアイデアは、章やセクションを書くときに、引数を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
コマンドを変更する必要はありません。