检查 \rightmark 是否为空的另一种方法;使用 babel 包时 \ifstr 不起作用

检查 \rightmark 是否为空的另一种方法;使用 babel 包时 \ifstr 不起作用

我正在尝试使用包来组合我自己的页面样式。该页面样式应该在 中的scrlayer-scrpage内容为,它将部分名称与部分编号分开,以防\vrule\rohead\rightmark

为此,我使用\ifstr{\rightmark}{}{}{\vrule…}只要不使用 babel 包就可以正常工作的版本。但由于 babel 是必需的,我需要使用它,这让我想到了我的问题:

有没有其他方法来检查“空”\rightmark

或者反过来,我怎样才能知道“空”\rightmark扩展为什么?

我试过\ifx\rightmark\empty\relax\else do that \fi但是没有成功。

在我的例子中,我使用了 来\fbox形象化地表示\fbox{\rightmark}似乎像 那样扩展\fbox{}

例子:

\documentclass[twoside]{scrreprt}
\usepackage[automark]{scrlayer-scrpage}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\usepackage{lipsum}

\automark*[section]{}


\renewcommand*{\sectionmarkformat}{}% \rightmark without \thesection

\rohead{%
  \fbox{}% reference for empty fbox
  \fbox{\rightmark}%
  \hspace{2ex}%
  \makebox[3em][l]{%
    \ifstr{\rightmark}{}{}{%
      \vrule width 0.1ex height 2.5ex \hspace{2pt} \hfill \thesection}%
  }%
  \hspace{-3em}
}

\begin{document}
  \chapter{chapter}
  \lipsum[1-17]
  \section{section}
  \lipsum[18-25]
\end{document}

第 3 页\rohead应该是空的(除了\fbox该示例中的两个空的 'es),因为第一部分在第 4 页。屏幕截图显示了使用该包时的输出babel。如果没有 babel 包,它可以按预期工作。

输出:

在此处输入图片描述

答案1

您可以在临时框中排版标记并测量它;如果标记仅包含零宽度框,则此方法将会失败。

\documentclass[twoside]{scrreprt}
\usepackage[automark]{scrlayer-scrpage}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\usepackage{lipsum}

\automark*[section]{}


\renewcommand*{\sectionmarkformat}{}% \rightmark without \thesection

\makeatletter
\newcommand{\ifemptymark}[1]{%
  \begingroup
  \sbox\z@{#1}%
  \expandafter\endgroup
  \ifdim\wd\z@=\z@
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}
\makeatother

\rohead{%
  \fbox{}% reference for empty fbox
  \fbox{\rightmark}%
  \hspace{2ex}%
  \makebox[3em][l]{%
    \ifemptymark{\rightmark}{}{%
      \vrule width 0.1ex height 2.5ex \hspace{2pt} \hfill \thesection}%
  }%
  \hspace{-3em}%
}

\begin{document}
  \chapter{chapter}
  \lipsum[1-17]
  \section{section}
  \lipsum[18-25]
\end{document}

在此处输入图片描述

相关内容