Ich habe einen großen Satz von Inhalten für den Benutzer. Einem anderen Benutzer möchte ich andere Inhalte zeigen. Dazu möchte ich eine andere Ausgabe erzeugen, indem ich einige der Inhalte (z. B. Kapitel, Abschnitte, Unterabschnitte) des Dokuments zeige und nicht zeige.
Meine Idee ist: Während ich ein Kapitel/Abschnitt schreibe, deklariere ich, dass es einem bestimmten Benutzer angezeigt werden soll, indem ich das Argument auf true oder false setze. Zum Beispiel:
if (user1 == true) dann sollte es da sein in
user1.pdf
Genauer gesagt etwas wie:
Makro ist: \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]
Wenn ich user1
und user3
als 'True' übergebe, dann sollte meine Ausgabe enthalten
Befehl (Beispiel):\def\arg1=true, arg2=false, arg1=true \input{myfile}
chapterName1
sectionName1
Wie kann ich das machen?
Antwort1
Sie können von hier aus beginnen. Die folgenden Methoden verwenden das environ
Paket zum Überspringen von Inhalten. Sie können jedoch auch versuchen, das comment
Paket für diesen Zweck zu verwenden.
\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}
Eine weitere Möglichkeit mit der Liste der aktivierten Benutzer:
\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: Um alle Dateien auf einmal zu erstellen, können Sie mit den Antworten beginnenHier
Eine weitere Möglichkeit besteht darin, nur diecomment
Paketfür diesen Zweck ohne die Änderungen am chapter
Befehl.