나는 사용자를 위한 많은 콘텐츠를 가지고 있습니다. 다른 사용자에게는 다른 내용을 표시하고 싶습니다. 이를 위해 문서의 일부 내용(예: 장 섹션 하위 섹션)을 표시하거나 표시하지 않음으로써 다른 출력을 생성하고 싶습니다.
내 생각은 다음과 같습니다. 장/섹션을 작성하는 동안 인수를 true 또는 false로 설정하여 특정 사용자에게 표시할 수 있도록 선언합니다. 예를 들어,
if (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
하고 user3
'True'이면 출력에는 다음이 포함되어야 합니다.
명령(예) :\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}
추신: 한 번에 모든 파일을 생성하려면 답변에서 시작할 수 있습니다여기
또 다른 가능성은comment
패키지이 목적을 위해 명령을 수정하지 않고 chapter
.