使用数学模式

使用数学模式

假设我有一个名为

My_very_long_document_name_that_does_not_fit_in_the_left_footer.tex

现在我想将这个长字符串包含到文档的左页脚中。为此,我在以下简单示例中使用了 \jobname:

\documentclass{article}

\usepackage[english]{babel}
\usepackage[T1]{fontenc}

\usepackage{fancyhdr}
\pagestyle{fancy}
\lfoot{\tiny\jobname}

\begin{document}
Some text
\end{document}

由于文档名称很大,它与剩余页脚中的任何其他元素(如页码等)重叠。对于我的真实文档,不可能将文本放在剩余页脚的上方或下方,所以我确实需要将字符串分成两行(或更多行)。

我非常感谢你的帮助。

答案1

一些策略。

使用数学模式

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage[english]{babel}

\newcommand{\breakjobname}{%
  $\begingroup\lccode`\~=`\_
   \lowercase{\endgroup\def~}{\_\penalty0 }%
   \mathcode`\_=\string"8000 \mathgroup=0
   \jobname$}

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyfoot[C]{\thepage}
\fancyfoot[L]{\parbox[t]{.45\textwidth}{\raggedright\tiny\breakjobname.tex}}

\begin{document}
Some text
\end{document}

\mathgroup=0我们利用默认罗马字体这一事实。

在此处输入图片描述

使用\scantokens

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage[english]{babel}

\newcommand{\breakjobname}{%
  \begingroup\lccode`\~=`\_
  \lowercase{\endgroup\def~}{\_\penalty0 }%
  \catcode`\_=\active\scantokens\expandafter{\jobname\noexpand}}

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyfoot[C]{\thepage}
\fancyfoot[L]{\parbox[t]{.45\textwidth}{\raggedright\tiny\ttfamily\breakjobname.tex}}

\begin{document}
Some text
\end{document}

我已添加\ttfamily以表明字体更改命令受到尊重。

在此处输入图片描述

相关内容