我做了以下修改:
\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
\@makefntext
article
book
\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
将不同的脚注系列分开。