
Der Einfachheit halber nehmen wir an, ich habe ein Dokument, das nur Text und Theoreme enthält.
Ich möchte nur den Text anzeigen, der in Theoremen enthalten ist. Zum Beispiel
\documentclass[10pt]{book}
\usepackage{amsthm}
\theoremstyle{definition}
\newtheorem{theorem}{Definition}
\begin{document}
\chapter{One}
\section{One}
blah
\section{Two}
\begin{theorem}
Blo
\end{theorem}
\chapter{Two}
Blih
\end{document}
Ich möchte nur angezeigt bekommen: 1 Eins 1.Eins 2.Zwei Theorem:Bloh" 2.Zwei
Ist dies möglich, ohne den Text in eine zusätzliche Umgebung einschließen zu müssen?
Eine Lösung wäre, die normale Ausgabe irgendwie mit einem Trick zu unterdrücken, z. B. indem man die Schriftgröße auf 0 setzt (das hat nicht geklappt), außer in den Theoremen.
Danke
BEARBEITEN: Eine Möglichkeit wäre vielleicht, mit einigen Paketen automatisch den gesamten Inhalt von Theoremen zu sammeln, nicht das Hauptdokument auszugeben und nur das auszugeben, was gesammelt wurde, aber ich hätte auch gerne Kapitel- und Abschnittsüberschriften …
Antwort1
Der OP legt fest: „Nehmen wir an, ich habe ein Dokument, das nur Text und Theoreme enthält.“
Um das Ergebnis zu erzielen, verwende ich eine tokencycle
Pseudoumgebung namens \shothms...\endshothms
, von der eine Instanz das gesamte Dokument umschließt.
In der aktuellen BEARBEITUNG werden nur Instanzen von \chapter
& \section
(ohne optionale Argumente) und theorem
& proposition
-Umgebungen ausgeführt. Beachten Sie, dass optionale Argumente für diese Makros/Umgebungen übertokcycle
, aber ich hatte keine Lust, hier Zeit und Code zu investieren. SieheArgumente beim Ausführen eingebetteter Makros zeichenweise analysieren, für ein Beispiel, wo es gemacht wird.
Die Makrotests (falls man weitere Makros erfassen möchte) werden vom \testmacros
Makro
\newcommand\testmacros[1]{%
\ifx\chapter#1\addcytoks{#1}\gdef\addarg{T}\else
\ifx\section#1\addcytoks{#1}\gdef\addarg{T}\else
\gdef\addarg{F}\fi\fi
}
Die Umgebungstests (falls weitere erforderlich sind) werden vom \testenvs
Makro durchgeführt, angegeben als
\newcommand\testenvs[1]{%
\ifx\thmchk#1 1\else
\ifx\propchk#1 1\else
0\fi\fi
}
angesichts der Präambeldefinitionen
\def\thmchk{theorem}
\def\propchk{proposition}
Das MWE:
\documentclass{book}
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage{tokcycle}
\def\addarg{F}
\def\checktheorems{F}
\def\charson{F}
\def\thmchk{theorem}
\def\propchk{proposition}
\declaretheorem{theorem}
\declaretheorem{proposition}
\stripgroupingtrue
\tokcycleenvironment\shothms
{\if T\charson\addcytoks{##1}\fi}
{%
\if T\addarg\addcytoks{{##1}}\gdef\addarg{F}\fi
\if F\checktheorems
\if T\charson\addcytoks{{##1}}\fi
\else
\gdef\tmp{##1}%
\ifnum\testenvs{\tmp}=1\relax
\if B\checktheorems
\addcytoks{\begin{##1}}\gdef\charson{T}%
\else
\addcytoks{\end{##1}}\gdef\charson{F}%
\fi
\fi%
\fi
\gdef\checktheorems{F}
}
{%
\ifx\begin##1\gdef\checktheorems{B}\else
\ifx\end##1\gdef\checktheorems{E}\else
\gdef\checktheorems{F}%
\if T\charson\addcytoks{##1}\fi%
\fi
\fi
\testmacros{##1}%
}
{\if T\charson\addcytoks{##1}\fi}
\newcommand\testmacros[1]{%
\ifx\chapter#1\addcytoks{#1}\gdef\addarg{T}\else
\ifx\section#1\addcytoks{#1}\gdef\addarg{T}\else
\gdef\addarg{F}\fi\fi
}
\newcommand\testenvs[1]{%
\ifx\thmchk#1 1\else
\ifx\propchk#1 1\else
0\fi\fi
}
\begin{document}
\shothms
\chapter{My Chapter}
Chapter text
\section{One}
blah blah
\section{Two}
\begin{theorem}
Bloh \textbf{Blah} \today
\end{theorem}
blih blih \textit{blow}
more blah
\begin{proposition}
Blah$^2$
\end{proposition}
Finis
\endshothms
\end{document}
NACHTRAG
Wenn man weniger Formatierung der Abschnitte wünscht, könnte man sie \testmacros
wie folgt umdefinieren:
\newcommand\testmacros[1]{%
\ifx\chapter#1\addcytoks{\stepcounter{chapter}\par\noindent Chapter
\thechapter:~}\gdef\addarg{T}\else
\ifx\section#1\addcytoks{\stepcounter{section}\par\noindent Section
\thesection:~}\gdef\addarg{T}\else
\gdef\addarg{F}\fi\fi
}
ergebend