如何在不使用 \makeatletter 和 \makeother 的情况下更改脚注的定义

如何在不使用 \makeatletter 和 \makeother 的情况下更改脚注的定义

我想更改脚注的定义,以便能够更改某些脚注(与论文作者对应的脚注)的脚注符号。我尝试了此主题的第一个答案的建议: 对所有脚注进行顺序编号,但有一个脚注带有符号

我使用论文类(https://github.com/suchow/Dissertate),并且此代码不起作用,因为 Latex 抱怨使用\@

Use of \@ doesn't match its definition.

答案1

对于类或包中的代码@已经是一个字母了,所以如果你去

\makeatletter
... new code
\makeatother
... rest of original code

那么原始代码的其余部分就被破坏了,因为@不再是一个字母。

\makeatletter旨在用于前言对于较短的代码段,以避免需要制作包或类文件,因此

\documentclass{yourclass}
\makeatletter
... new code
\makeatother

 ... rest of _document_ with @ not a letter

答案2

我认为没有必要不使用\makeatletter...\makeatother但如果真的有必要的话:这是一个基于包的环绕(我从给定链接中的 Werner 的答案中偷了完整的代码对所有脚注进行顺序编号,但有一个脚注带有符号;-)——但分割是由我进行的)

withoutatletter.sty:

\NeedsTeXFormat{LaTeX2e}

\ProvidesPackage{withoutatletter}


\def\@xfootnote[#1]{%
  \protected@xdef\@thefnmark{#1}%
  \@footnotemark\@footnotetext}

\endinput

这里foo.tex

\documentclass{article}
\usepackage{withoutatletter}
\begin{document}
This is a\footnote{Regular footnote} piece of text.
This is a\footnote[*]{Different footnote} piece of text.
This is a\footnote{Regular footnote} piece of text.
This is a\footnote{Regular footnote} piece of text.
This is a\footnote[$\dagger$]{Different footnote} piece of text.
This is a\footnote{Regular footnote} piece of text.
This is a\footnote[$\star$]{Different footnote} piece of text.
\end{document}

相关内容