目录格式的自定义假设列表

目录格式的自定义假设列表

上下文: 我正在撰写一份包含多个章节的科学报告,其中包含许多编号的假设。我在序言中创建了一个自定义假设环境:

\newtheorem{hypothesis}{Hypothesis}[chapter]

文档正文中的假设示例如下:

\begin{hypothesis}
\label{HXonY}
There is a positive relationship between X and Y.
\end{hypothesis}

我的问题: 我如何创建自定义假设列表(如列出以下内容的目录):

  • 假设数字(例如 1.1、1.2、2.1 等)
  • 文档中每个假设的文本
  • 记录的页码

例如,

 List of Hypotheses
 1.1 There is a positive relationship between X and Y .................. 32
 1.2 There is a negative relationship between something and Z........... 43

ETC。

答案1

我无法让任何定理包直接生成这样的列表。因此,以下使用 提供的工具生成自己的列表ntheorem。它的工作原理是直接将行添加到定理列表中hypolist

\documentclass{book}

\usepackage{ntheorem}
\newtheorem{hypo}{Hypothesis}[chapter]
\newtheorem{hypolist}{Hypothesis}[chapter]

\newcommand*\hypothesis[1]{%
    \stepcounter{hypolist}%
    \addtheoremline{hypolist}{#1}%
    \begin{hypo}#1\end{hypo}
}

\begin{document}

\chapter*{List of Hypotheses}
\listtheorems{hypolist}

\chapter{foo}

\hypothesis{There is a positive relationship between $X$ and $Y$.}

\chapter{bar}

\hypothesis{There is a positive relationship between $X$ and $Z$.}
\hypothesis{There is a positive relationship between $Z$ and $Y$.}

\end{document}

列表

我定义了一个命令而不是一个环境,因为它更简单,而且无论如何你不能在列表中使用多段落条目。

答案2

ntheorem包可以执行以下操作:

\listtheorems{hypothesis}

答案3

您可以使用thm工具包(注意创建新定理的不同语法)。

\documentclass{book}

\usepackage{amsthm}
\usepackage{thmtools}
\declaretheorem[numberwithin=chapter]{hypothesis}
\declaretheorem[numberwithin=chapter]{theorem}

\begin{document}

\renewcommand{\listtheoremname}{List of Hypotheses}
\listoftheorems[ignoreall,show={hypothesis}]

\chapter{foo}

\begin{hypothesis}[X-Y-relationship]
There is a positive relationship between X and Y.
\end{hypothesis}

\begin{theorem}
Some text.
\end{theorem}

\end{document}

答案4

最后我决定使用斯维夫。即,我有一个包含 tex 和 R 代码块的 Rnw 文件,它充当 LaTeX 文档的预处理器。

我有一个 csv 文件,其中存储假设,每行一个假设:

  hypotheses <- read.csv("hypotheses.csv")

以下 R 函数输出假设环境的乳胶:

outputHypothesis <- function(label, data = hypotheses) {
    result <- c("\\begin{hypothesis}",
            paste("\\label{", label, "}"),
            data[data$label==label, "text"],
            "\\end{hypothesis}")
    cat(result, sep="\n")
}

然后 Rnw 文件有一个插入 tex 的 R 代码块:

<<results=tex>>=
outputHypothesis("H1XcausesY")
@

我仍然需要完成实际创建假设表的下一步,但我想我会在 Sweave 中将其作为 R 代码块来实现。

我已经做过的一件事是使用数据库在讨论部分显示一个表格,该表格使用假设数据库作为来源,并显示(基于数据库)一组研究中的每项研究是否支持这些假设:

\begin{landscape}
\singlespacing
\begin{longtable}[p]{p{2cm}p{10cm}p{2.5cm}p{2.5cm}p{2.5cm}}

\caption{Summary of Support for Hypotheses}
\label{discussionhypotheses}\\
\toprule
Number & Hypothesis & Study 1 & Study 2 & Study 3\\
\midrule
\endfirsthead

\toprule
Number & Hypothesis & Study 1 & Study 2 & Study 3\\
\midrule
\endhead

\multicolumn{5}{r}{\emph{Table continues on next page}} \\
\endfoot

\bottomrule
\endlastfoot
<<hypothesis_table, results=tex>>=
discussionHypotheses <- paste("\\ref{", hypotheses$label, "}",
        "& ", hypotheses$text,
    " & ", hypotheses$support_study1,
    " & ", hypotheses$support_study2,
    " & ", hypotheses$support_study3,
    "\\\\")
cat(discussionHypotheses, sep ="\n") 
@
\end{longtable}
\end{landscape}

相关内容