在 LaTeX 中定义“myFootnote”

在 LaTeX 中定义“myFootnote”

我做了以下修改:

\makeatletter
\long\def\@makefntext#1{%
#1  \noindent \hb@xt@ .8em {\hss \@textsuperscript{\normalfont\@thefnmark}}}
\makeatother 

但我希望代码可以作为一个新的独立命令使用;例如,如果我输入myFootnote基于默认footnote命令行为的命令,我希望我的自定义脚注出现在页面底部。

正如您在代码中看到的,以下是我希望代码执行的操作:将位于脚注文本左侧和之前的脚注编号(或符号)转换到右侧。实际上,我希望具有\myFootnote{Hello}与命令中相同的间距和字体大小以及所有其他规范\footnote{Hello},但数字和计数器(它的符号)应放置在脚注文本的右侧。

我已经更改了上述代码中的 LaTeX 中的默认脚注模块,这就是我想要!我希望保留默认的 LaTeX 行为,并让新的独立命令(基于默认行为)通过该\myFootnote{Hello}命令适用。那么,我该怎么做呢?

答案1

为了将脚注与默认结构分开,我会考虑使用包manyfoot,您可以在其中拥有多个脚注系列。但是,现在来回答这个问题。据我所知,您想要与默认脚注相同的系列。您已重新定义\@makefntext用于\footnote设置脚注中文本的。要拥有自己的外观,\MyFootnote您需要先定义自己的脚注。从\footnote它使用开始\@footnotetext,它又使用。从和中定义的\@makefntext默认定义开始,并创建新命令,得到以下内容。latex.ltx\@makefntextarticlebook

\documentclass{article}
\usepackage{geometry}
\geometry{body={5cm,5cm}}%% A very small page

\makeatletter
\def\MyFootnote{\@ifnextchar[\@xfootnote{\stepcounter\@mpfn
     \protected@xdef\@thefnmark{\thempfn}%
     \@footnotemark%
     \@MyFootnotetext%  %%%% New comand
   }}
%%%
\long\def\@MyFootnotetext#1{\insert\footins{%
    \reset@font\footnotesize
    \interlinepenalty\interfootnotelinepenalty
    \splittopskip\footnotesep
    \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
    \hsize\columnwidth \@parboxrestore
    \protected@edef\@currentlabel{%
       \csname p@footnote\endcsname\@thefnmark
    }%
    \color@begingroup
      \@makeMyFntext{%  %%%% New command
        \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
    \color@endgroup}}%
%%%%
\long\def\@makeMyFntext#1{%
  \rule{1.8em}{0pt}% %% Added to get same spacing as default
  #1  \noindent \hb@xt@ 1.8em {\@textsuperscript{\normalfont\@thefnmark}\hss }}%% \hss moved to get left alignment
\makeatother

\begin{document}
\noindent
Text text\footnote{Test.}.
More text\MyFootnote{Test again.}.
Even More text\footnote{Yet another footnote.}.

\end{document}

在此处输入图片描述

但是,顺便说一句,我确实认为它看起来有点奇怪,更像是一个新的脚注,而且我认为它不会对读者有帮助。我再次建议manyfoot将不同的脚注系列分开。

相关内容