Включить и отключить содержимое команды \chapter

Включить и отключить содержимое команды \chapter

У меня большой набор контента для пользователя. Для другого пользователя я хотел бы показывать другой контент. Для этого я хотел бы производить разный вывод, показывая и не показывая часть контента (например, главы, разделы, подразделы) документа.

Моя идея: при написании главы/раздела я объявляю, что он должен быть доступен для показа определенному пользователю, устанавливая аргумент в значение 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]

Если я передам user1and 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команду.

Связанный контент