因为我需要一个参考同一脚注,我喜欢使用\footnoteref
定义的这里。
写作
\documentclass[12pt,a4paper]{report}
\usepackage[british]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[bottom,hang]{footmisc}
\usepackage{hyperref}
\usepackage{zref-perpage}
\usepackage[gen]{eurosym}
\usepackage{footnote}
\makesavenoteenv{tabular}
\makesavenoteenv{equation}
\zmakeperpage{footnote}
% Remove counter "footnote" from the reset counter list
% of counter "chapter".
\usepackage{remreset}
\makeatletter
\@removefromreset{footnote}{chapter}
\makeatother
\usepackage[labelfont=bf]{caption}
\makeatletter
\newcommand\footnoteref[1]{\protected@xdef\@thefnmark{\ref{#1}}\@footnotemark}
\makeatother
\begin{document}
\begin{equation}
\begin{tabular}{@{} l r @{}}
Wood\footnote{\label{one}Footnote for wood.}\ \ & 10,000\ \euro\\
Steel\ \ & 25,000\ \euro\\
Coal\ \ & 5,000\ \euro\\
Oil\ \ & 100,000\ \euro\\
\hline
Sum\ \ & 140,000\ \euro
\end{tabular}
\end{equation}
\begin{equation}
\begin{tabular}{@{} l r @{}}
Wood\footnoteref{one}\ \ & 10,000\ \euro\\
Steel\ \ & 25,000\ \euro\\
Coal\ \ & 5,000\ \euro\\
Oil\ \ & 100,000\ \euro\\
\hline
Sum\ \ & 140,000\ \euro
\end{tabular}
\end{equation}
\end{document}
结果是
这是我想要的结果。但是在和第一个\chapter{One}
之间插入将导致\begin{document}
\begin{equation}
这是我所不愿意看到的。
这整件事的错误在哪里?我找不到。我想\footnoteref
必须修改的定义才能解决问题。或者可能需要修改某些章节/公式编号。
答案1
三个问题:
问题 1:
当您加载 footmisc-package 时,您可以使用它的\footref
命令,而不是定义您自己的\footnoteref
命令。
但是您需要调整\footref
命令以正确考虑 hyperref-package。
你很幸运——最近在德语新闻组上就类似问题进行了讨论压缩文本.tex.
主题:“Fussnoten wiederholen”。(重复脚注。)
url:https://groups.google.com/forum/#!topic/de.comp.text.tex/fCIRB-5Fy_A
问题 2:
amsmath 包在方程环境中重新定义了\label
-command,使得它无法在方程中的脚注中使用它。因此,我建议\label
用不同的宏名保存该命令,并在 amsmath 应用其“良好”修改的地方使用它。
问题 3:
您的\makesavenoteenv
条目确保“吐出”脚注将被延迟到某个时间点,此时\label
由于内部宏(如\@currentlabel
和)\@currentHref
已被重新定义,放置将被破坏。
因此,您需要确保在处理命令之前本地恢复这些宏\label
。
\documentclass[12pt,a4paper]{report}
\usepackage[british]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[bottom,hang]{footmisc}
\usepackage{hyperref}
\usepackage{zref-perpage}
\usepackage[gen]{eurosym}
\usepackage{footnote}
\makesavenoteenv{tabular}
\makesavenoteenv{equation}
\zmakeperpage{footnote}
% Remove counter "footnote" from the reset counter list
% of counter "chapter".
\usepackage{remreset}
\makeatletter
\@removefromreset{footnote}{chapter}
\makeatother
\usepackage[labelfont=bf]{caption}
\makeatletter
\@ifpackageloaded{hyperref}{%
\renewcommand\footref[1]{%
\begingroup
\unrestored@protected@xdef\@thefnmark{%
\ref*{#1}%
}%
\endgroup
\ifHy@hyperfootnotes
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\hyperref[#1]{\strut\H@@footnotemark}}{\@footnotemark}%
}%
}{}%
\newcommand\savedlabel{}%
\AtBeginDocument{\let\savedlabel=\label}%
\newcommand\footnotereflabel[1]{%
\@bsphack
\begingroup
\def\@currentHref{Hfootnote.\theHfootnote}\savedlabel{#1}%
\endgroup
\@esphack
}%
\makeatother
\begin{document}
\chapter{One}
\begin{equation}
\begin{tabular}{@{} l r @{}}
Wood\footnote{\footnotereflabel{one}Footnote for wood.}\ \ & 10,000\ \euro\\
Steel\ \ & 25,000\ \euro\\
Coal\ \ & 5,000\ \euro\\
Oil\ \ & 100,000\ \euro\\
\hline
Sum\ \ & 140,000\ \euro
\end{tabular}
\end{equation}
\begin{equation}
\begin{tabular}{@{} l r @{}}
Wood\footref{one}\ \ & 10,000\ \euro\\
Steel\ \ & 25,000\ \euro\\
Coal\ \ & 5,000\ \euro\\
Oil\ \ & 100,000\ \euro\\
\hline
Sum\ \ & 140,000\ \euro
\end{tabular}
\end{equation}
\end{document}