Tengo un gran conjunto de contenidos para el usuario. Para un usuario diferente me gustaría mostrar contenidos diferentes. Para esto, me gustaría producir resultados diferentes mostrando y no mostrando algunos de los contenidos (por ejemplo, subsección de secciones de capítulos) del documento.
Mi idea es: mientras escribo un capítulo/sección, lo declaro para permitir mostrarlo a un usuario específico estableciendo el argumento en verdadero o falso. Por ejemplo,
si (usuario1 == verdadero) entonces debería estar ahí en
user1.pdf
Más específicamente, algo como:
Macro es: \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]
Si paso user1
y user3
como 'Verdadero', entonces mi salida debería contener
comando (ej.):\def\arg1=true, arg2=false, arg1=true \input{myfile}
chapterName1
sectionName1
¿Cómo puedo hacer esto?
Respuesta1
Puedes empezar desde aquí. Los métodos siguientes incluyen el environ
paquete para omitir contenido, pero también puede intentar utilizar el comment
paquete para este propósito.
\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}
Otra posibilidad con la lista de usuarios 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}
PD: para crear todos los archivos a la vez puedes comenzar desde las respuestasaquí
Otra posibilidad es utilizar sólo elcomment
paquetepara este propósito sin las modificaciones al chapter
comando.