这里如何在页眉中剪切章节标题我们学习如何使用\StrLeft
titleps 包。
但是,当我的标题中有数学表达式时,LaTeX 会输出错误,例如,
\section{The set $\mathbb{A}$ }
这与第二个缺陷有关:\StrLeft
破坏标题,通常会在三个点之前输出一个字母。像这样,
这些...
是否可以计算单词(包括之间的数学表达式$
$
)而不是字母,以便总是在完整的单词之后剪切标题?
当通过包含 的个人命令输入数学运算时,是否可以执行相同的操作\ensuremath
,例如,
\newcommand{\rr}{\ensuremath{\mathbb{R}}\xspace}
答案1
\StrLeft
并不强大,它不应该用困难的方式扩展其论点。- 牢不可破的东西应该放在花括号里。
基于已接受的示例回答所引用的问题。另外,它还进行了修改,以避免出现不必要的额外点。
\documentclass[12pt]{article}
\usepackage{xstring}
\usepackage{titleps}
\usepackage{amssymb}
\newpagestyle{monstyle}{%
\headrule
\sethead{\thepage}{}{%
\protect\monstyletitle
}%
}
\makeatletter
\newcommand*{\monstyletitle}{%
\begingroup
\protected@edef\sectiontitle{\sectiontitle}%
\noexpandarg
\expandafter\StrLen\expandafter{\sectiontitle}[\mylen]%
\ifnum\mylen>9 % or 10-12, the dots would also need place
\expandafter\StrLeft\expandafter{\sectiontitle}{9}...%
\else
\sectiontitle
\fi
\endgroup
}
\makeatother
\begin{document}
\pagestyle{monstyle}
\section{le tres tres long titre qui prend trop de place sur la ligne}
\section{The set {$\mathbb{A}_0$} and {$\mathbb{B}$}}
\end{document}
通常位置受限于标题,而不是字符数,因此回答对于我来说基于包truncate
确实更有意义。