啟用並停用 \chapter 指令的內容

啟用並停用 \chapter 指令的內容

我為用戶提供了大量內容。對於不同的用戶我想顯示不同的內容。為此,我想透過顯示和不顯示文件的某些內容(例如章節、小節)來產生不同的輸出。

我的想法是:在編寫章節/部分時,我聲明它可以透過將參數設為 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]

如果我透過user1anduser3作為“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}

PS:要一次建立所有文件,您可以從答案開始這裡


另一種可能性是僅使用comment包裹為此目的,無需修改命令chapter

相關內容