У меня большой набор контента для пользователя. Для другого пользователя я хотел бы показывать другой контент. Для этого я хотел бы производить разный вывод, показывая и не показывая часть контента (например, главы, разделы, подразделы) документа.
Моя идея: при написании главы/раздела я объявляю, что он должен быть доступен для показа определенному пользователю, устанавливая аргумент в значение true или false. Например,
если (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
and user3
как «True», то мой вывод должен содержать
команда (ex):\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
команду.