Я пытаюсь добавить сноску к заголовку вamsart
маленькими заглавными буквами, но постоянно получаются заглавные символы (даже в математическом режиме).
\documentclass{amsart}
\title{ text \footnote{ text }}
\begin{document}
\maketitle
\end{document}
Как сделать так, чтобы в сноске использовались малые заглавные буквы?
решение1
Обходной путь довольно прост, но маркера сноски не будет:
\documentclass{amsart}
\begin{document}
\newcommand\myfootnotetitle{\spaceskip=0pt \scshape I want this in Small Caps}
\title{Title\footnote{\protect\myfootnotetitle}}
\author{A. U. Thor}
\maketitle
\vspace*{\fill}
{\footnotesize\myfootnotetitle\par} % for checking
\end{document}
Возникают две проблемы: одна из них заключается в защите от несвоевременного расширения (аргумент \title
передается в \MakeUppercase
), а также в том, что в тексте \spaceskip
задано ненулевое значение.
Добавление маркера сноски требует более глубокой хирургии. Простой обходной путь для получения звездочки в качестве знака сноски заключается в следующем.
\documentclass{amsart}
\makeatletter
\newcommand{\definetitlefootnote}[1]{%
\newcommand\addtitlefootnote{%
\makebox[0pt][l]{$^{*}$}%
\footnote{\protect\@titlefootnotetext}
}%
\newcommand\@titlefootnotetext{\spaceskip=\z@skip $^{*}$#1}%
}
\makeatother
% Just to make a short page for viewing the result
\setlength{\textheight}{6cm}
\calclayout
\begin{document}
\definetitlefootnote{\scshape I want this in Small Caps}
\title{Title\addtitlefootnote}
\author{A. U. Thor}
\maketitle
Some text with a footnote\footnote{Whatever}
\end{document}
решение2
Вот способ сохранить маркер сноски. Вам нужно сохранить определения и восстановить их непосредственно перед выдачей команды \footnotemark
. Затем нужно немного повозиться, чтобы получить правильные значения счетчика.
Вот название:
А вот сноски, показы \thanks
и т.п. не нарушены.
\documentclass{amsart}
\makeatletter
\let\mymakefnmark\@makefnmark
\let\mythefnmark\@thefnmark
\newcommand{\restorefn}{\let\@makefnmark\mymakefnmark
\let\mythfnmakr\@thefnmark}
\makeatother
\begin{document}
\title{Title text\restorefn\footnotemark}
\author{A. N. Author}
\date{\today}
\thanks{Thanks}
\maketitle
\stepcounter{footnote}\footnotetext{\scshape Footnote.}
\end{document}
решение3
Это решение обеспечивает немного большую автоматизацию и сохраняет пользовательский интерфейс как есть, так что вы можете продолжать писать \title[short text]{text\footnote{text}}
.
Основная идея заключается в том, чтобы отключить внутренний макрос, \@adminfootnotes
отключая обычный механизм сносок через
\xpatchcmd\@adminfootnotes{\let\@makefnmark\relax}{}{}{}
и затем используйте \footnotemark
- \footnotetext
duo.Знак строится через что-то вроде \title{...\fotenotemark}
и \footnotetext
объявляется снаружи, чтобы убедиться, что он не будет затронут заглавными буквами. Последнее достигается с помощью патча простого патча для \maketitle
:
\xapptocmd\maketitle{%
\stepcounter{footnote}
\ifx\@empty\titlefn\else
\footnotetext{\scshape\titlefn}\fi}{}{}
\titlefn
— это хранилище текста сноски, которое собирается \footnote{...}
в переопределенной версии \title
(обратите внимание, что \footnote
здесь служит только разделителем):
\def\title@aux#1\footnote#2#3{%
\global\let\shorttitle\@tempa
\gdef\titlefn{#2}
\ams@title{#1\ifx\@empty\titlefn\else\protect\footnotemark\fi}
\ifx#3\footnote\expandafter\@gobble\else\expandafter#3\fi
}
В этом переопределении, конечно, также \footnotemark
вводится.
Полный код
\documentclass{amsart}
\usepackage{xpatch}
\makeatletter
\xpatchcmd\@adminfootnotes{\let\@makefnmark\relax}{}{}{}
\xapptocmd\maketitle{%
\stepcounter{footnote}
\ifx\@empty\titlefn\else
\footnotetext{\scshape\titlefn}\fi}{}{}
\let\ams@title\title
\def\title{\@dblarg\title@}
\def\title@[#1]#2{\gdef\@tempa{#1}\title@aux#2\footnote{}}
\def\title@aux#1\footnote#2#3{%
\global\let\shorttitle\@tempa
\gdef\titlefn{#2}
\ams@title{#1\ifx\@empty\titlefn\else\protect\footnotemark\fi}
\ifx#3\footnote\expandafter\@gobble\else\expandafter#3\fi
}
\makeatother
\title{text\footnote{text}}
\begin{document}
\maketitle
%for testing purposes
\vfill
\footnotesize\scshape\hskip3.5pt text
\end{document}