文書の一部をレンダリングしない方法 (純粋な LaTeX)

文書の一部をレンダリングしない方法 (純粋な LaTeX)

大きな LaTeX ファイルがあり、その内容のほとんどを PDF で非表示にしたいのですが、定理などの元の番号は保持したいと思っています。CSSdisplay:noneのものと似たようなものです。

環境commentはコンテンツをまったく処理しないため、役に立ちません。定理の外側のテキストを非表示にするためにのみ使用できます。

\hphantomまたはの\vphantomような環境をラップしないでください\begin{theorem}

より正確に言うと、次のような状況を想定します。

% I want to hide from here ...
\section{Section 1}
\subsection{Subsection 1.1}
\begin{theorem}
First
\end{theorem}
% ... to here
\begin{theorem}
Second
\end{theorem}

元の番号が付いた 2 番目の定理だけを PDF で表示したいです: Theorem 1.1.2

私の質問は、これですただし、その質問の作成者は Sage を使用しており、私の理解する限り、受け入れられた回答は Sage 固有のものです。

この効果を実現する一般的な方法がない場合、次のオブジェクトを非表示にする方法があれば幸いです。

  • セクション/サブセクションのタイトル
  • 定理・補題など
  • 数字

出力を別のファイル(PDF ではない)に「リダイレクト」することも考えましたが、解決策が見つかりませんでした。

最後の選択肢は定理の数を「ハードコード」するですが、それは避けたいのです。

答え1

除外したいものがすべてコマンドの引数内にあるか、環境にラップされている場合に機能する可能性のある単なる試みです。また、除外したいものが正確にわかっている場合にも機能します。

左の画像は非表示なし、右の画像は非表示ありです。

ここに画像の説明を入力してください ここに画像の説明を入力してください

アイデアは、すべてのコマンドと環境を再定義して、引数の内容を取り込みながら、カウンター演算を実行することです。

\documentclass{article}
\usepackage{environ}
\newtheorem{theorem}{Theorem}
\newenvironment{hide}%
  {\renewcommand\section[1]{\refstepcounter{section}}%
   \renewcommand\subsection[1]{\refstepcounter{subsection}}%
   \RenewEnviron{theorem}{\refstepcounter{theorem}}%
  }%
  {}
\begin{document}
% i want to hide from here ...
\begin{hide}
\section{Section 1}
\subsection{Subsection 1.1}
\begin{theorem}
First
\end{theorem}
\end{hide}
% ... to here
\begin{theorem}
Second
\end{theorem}
\subsection{Subsection 1.2}
\section{Section 2}
\begin{theorem}
Third
\end{theorem}
\end{document}

答え2

このドキュメントを実行してから includeonly のコメントを解除し、再度実行すると、ページ 2 に定理 2 だけが記載された 1 ページのドキュメントが生成されます。

ここに画像の説明を入力してください

\begin{filecontents}{zzzz1.tex}
\section{Section 1}
\subsection{Subsection 1.1}
\begin{theorem}
First
\end{theorem}

\end{filecontents}
\begin{filecontents}{zzzz2.tex}
\begin{theorem}
Second
\end{theorem}
\end{filecontents}

\documentclass{article}
\newtheorem{theorem}{Theorem}

%\includeonly{zzzz2}

\begin{document}
% i want to hide from here ...
\include{zzzz1}
% ... to here
\include{zzzz2}
\end{document}

答え3

私は gernot さんの回答が気に入りましたが、彼の回答を見る前にすでにこれに取り組んでいたので、投稿してもいいと思います。

\documentclass{article}
\newif\ifskipstuff

\skipstufffalse
%\skipstufftrue

\usepackage{amsmath}
\begin{document}

\ifskipstuff
    \refstepcounter{section}
    \refstepcounter{subsection}
    \refstepcounter{equation}
\else
    \section{Section 1}
    \subsection{Subsection 1.1}
    \begin{equation}
        First
    \end{equation}
\fi

\section{A Section}
\subsection{Subsection}
\begin{equation}
    Second
\end{equation}

\end{document}

欠点は、常にすべてのカウンターを手動で増やす必要があることです。あまり良いことではありません (特に、句に多くの項目がある場合) \else。おそらく、これはさらに改良される可能性があります (再定義された環境内にチェックを含めて、独自のチェックを行うようにするなど)。利点は、それぞれと を\ifskipstuff変更することで、マテリアルを含めるかどうかをグローバルに設定できることです。まあ、ユースケースによっては、それが利点になるかもしれません。\skipstufffalse\skipstufftrue

\skipstufftrue:

スキップ

\skipstufffalse:

スキップする

関連情報