假设我有一个名为
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
以表明字体更改命令受到尊重。