我想将一些浮点数(特别是代码清单)放在文档末尾的某个部分中,而不影响编号。目前,我已在各部分内对它们进行了编号,因此在第 1 部分中,所有清单都被称为程序 1.1,计划 1.2ETC。
有没有办法在末尾创建一个部分(如附录),将所有程序浮点放在其中,而不改变它们的编号?理想情况下,我希望有
第 1 部分
第 1 节中的部分文本以及对计划 1.1 和 1.2 的引用。第 2 部分
显然,程序 2.1 是本节中显示的唯一代码。...
附录 A
程序1.1:对于 i = 1:n 做东西(); 结尾计划1.2:
% 这个程序不做任何事情ETC...
更新:
在有人因为我没有准确说明程序是如何定义的而枪毙我之前,我先来介绍一下它的工作原理:
% In the preamble
\usepackage{listings}
\usepackage{float}
\newfloat{program}{tbphH}{lop}
\floatname{program}{Program}
\newcommand{\codefrom}[2][Matlab]
{
\begin{program}[hbt]
\lstinputlisting[language=#1]{#2}
\caption{#2}
\label{#2}
\end{program}
}
% In the document
\codefrom{alocalfile.m}
答案1
因此,这是我的候选解决方案,其基本内容是手动将所有浮点数移动到末尾,然后暂时侵入计数器section
以显示所需的数字。
\documentclass{article}
\usepackage{float}
\newfloat{program}{tbphH}{lop}[section]
\floatname{program}{Program}
\newcounter{savesection}
\newenvironment{fromsection}[1]{%
\setcounter{savesection}{\value{section}}%
\setcounter{section}{#1}%
\renewcommand{\thesection}{\arabic{section}}}
{\setcounter{section}{\value{savesection}}}
\newcommand{\codefrom}[1]{%
\begin{program}[hbt]
\caption{#1}
\label{#1}
\end{program}}
\begin{document}
\section{Introduction}
Please see Program~\ref{dostuff} and \ref{donothing}.
\section{Another thing}
Also see Program~\ref{onlyone}.
\appendix
\section{Appendix}
\begin{fromsection}{1}
\codefrom{dostuff}
\codefrom{donothing}
\end{fromsection}
\begin{fromsection}{2}
\codefrom{onlyone}
\end{fromsection}
\section{Yet another appendix}
\end{document}
由于浮动元素实际上不再需要“浮动”,因此我建议将其位置改为“H”,而不是“hbt”。此外,如果您尝试将其与 hyperref 一起使用,我不知道这会导致什么可怕的事情。
答案2
这里有一个技巧可能适合您的需要。希望您不介意浮动出现在自己的页面上。请参阅常见问题解答关于浮点数的解释,请参见此处。代码未注释,但您应该能够理解其要点。另外,请注意,使用此技术,您无法拥有超过 36 个浮点数。
\documentclass{article}
\usepackage{morefloats}
\usepackage{chngcntr}
\counterwithin{figure}{section}
\newcommand\allowfloats{%
\renewcommand{\topfraction}{.85}
\renewcommand{\bottomfraction}{.7}
\renewcommand{\textfraction}{.15}
\renewcommand{\floatpagefraction}{.66}
\setcounter{topnumber}{0}
\setcounter{bottomnumber}{0}
\setcounter{totalnumber}{0}
}
\newcommand\dontallowfloats{%
\renewcommand{\topfraction}{.01}
\renewcommand{\bottomfraction}{.01}
\renewcommand{\textfraction}{.99}
\renewcommand{\floatpagefraction}{.99}
\setcounter{topnumber}{9}
\setcounter{bottomnumber}{9}
\setcounter{totalnumber}{20}
}
\usepackage{lipsum}
\newcommand\textandfloat{%
\lipsum[1-2]
\par
\begin{figure}[p]
\centering\rule{5cm}{5cm}
\caption{Black square.}
\end{figure}
}
\begin{document}
\dontallowfloats
\section{Begin document}
\textandfloat\textandfloat
\textandfloat\textandfloat
\section{Middle}
\textandfloat\textandfloat
\textandfloat\textandfloat
\section{End document}
\textandfloat\textandfloat
\textandfloat\textandfloat
\allowfloats
\section{Floats}
Here are all the floats.
\end{document}
答案3
Juan A. Navarro,我该如何修改您的解决方案,使其适用于数字,包括数字列表?我已经尝试了该包端浮点但遇到了一些问题;这就是为什么我正在寻找一种替代方法,将所有图表放在文档末尾但在补充之前的单独章节中。