检测是否在 \section 内

检测是否在 \section 内

我如何制作一个条件来检查它当前是否在\part\chapter或内部\section

IF inside sectioning = TRUE
    DO "This text is inside a section."
ELSE
    DO "This text is not inside a section."

答案1

ConTeXt 提供系统模式 *section在节标题内处于活动状态的、*subsection等。例如

\def\CheckSection
    {\doifmodeelse{*section}
        {inside section}
        {outside section}}

\def\CheckSubSection
    {\doifmodeelse{*subsection}
        {inside subsection}
        {outside subsection}}

\setuppapersize[A7]
\starttext

\section{Test \CheckSection\ \CheckSubSection}

Test \CheckSection\ \CheckSubSection

\subsection{Test \CheckSection\ \CheckSubSection}

Test \CheckSection\ \CheckSubSection

\stoptext

给出

输出

请注意,这些模式不活跃显示目录时。如果您想检查是否位于目录(或 ConTeXt 术语中的列表)内,请检查*list模式。同样,您可以检查*marking模式以查看是否位于标记(页眉或页脚)内,并检查以*register查看是否位于寄存器(索引等)内。

答案2

\documentclass{article}
\newcount\Level
\let\Part=\part\def\part{\global\Level=0\Part}
\let\Chapter=\chapter\def\chapter{\global\Level=1\Chapter}
\let\Section=\section\def\section{\global\Level=2\Section}
\let\Subsection=\subsection\def\subsection{\global\Level=3\Subsection}
\let\Subsubsection=\subsubsection\def\subsubsection{\global\Level=4\Subsubsection}

\def\levelText{i am inside a 
  \ifcase\the\Level part
  \or chapter
  \or section
  \or subsection
  \or subsubsection
  \else default text \fi}
\begin{document}

\part{foo}
\levelText
\section{bar}
\levelText
\subsection{baz}
\levelText

\end{document} 

在此处输入图片描述

答案3

如果你的问题与你的另一个问题并自动提供\protect之前\fbox,你可以简单地说

\usepackage{etoolbox}
\robustify{\fbox}

这样以后的任何使用\fbox都不需要\protect内部移动参数(例如章节标题)。

相关内容