Eu tenho um grande conjunto de conteúdos para o usuário. Para um usuário diferente, gostaria de mostrar conteúdos diferentes. Para isso, gostaria de produzir resultados diferentes, mostrando ou não alguns dos conteúdos (digamos, subseção de seções de capítulos) do documento.
Minha ideia é: ao escrever o capítulo/seção, declaro que permite a exibição a um usuário específico, definindo o argumento como verdadeiro ou falso. Por exemplo,
if (user1 == true) então deveria estar lá em
user1.pdf
Mais especificamente, algo como:
Macro é: \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]
Se eu passar user1
e user3
como 'True', minha saída deverá conter
comando (ex):\def\arg1=true, arg2=false, arg1=true \input{myfile}
chapterName1
sectionName1
Como posso fazer isso?
Responder1
Você pode começar daqui. Os métodos abaixo apresentam o environ
pacote para pular conteúdo, mas você também pode tentar usar o comment
pacote para essa finalidade.
\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}
Outra possibilidade com a lista de usuários habilitados:
\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: para criar todos os arquivos de uma vez você pode começar pelas respostasaqui
Outra possibilidade é usar apenas ocomment
pacotepara este propósito sem as modificações no chapter
comando.