当编号完全是手动的时候,排版定理等的最直接的方法是什么?

当编号完全是手动的时候,排版定理等的最直接的方法是什么?

我正在使用 LaTeX 排版一些家庭作业,由于我们分配的问题分散在教科书中,所以我必须为我排版的每个问题输入问题编号。我希望这些问题看起来像这样:

问题 4.15。证明对于每个素数,…

据我所知,所有直接使用的方法amsthm都会产生类似

问题(4.15)

或者

4.15. 问题。

这两种方法都不是我真正想要的。我在网上找到的大多数示例都比较复杂,因为它们支持自动编号,但这对我来说不是必需的(甚至不是很有用)。我想出了这个:

\newenvironment{myproblem}[1][]
    {\vspace{1em} \noindent \textbf{Problem #1.}}
    {\vspace{1em}}

它产生了我想要的输出,给出或带去难以察觉的间距,但这感觉像是一个临时解决方案。有没有办法使用amsthmntheorem或类似的东西来获得我想要的东西?

答案1

您可以使用该包作为定义您自己的定理样式thmtools的前端。您可以使用选项来抑制自动编号,并使用附加注释字段手动引入编号。但请注意,这种方法有两个缺点:1) 您失去了交叉引用问题的可能性。2) 手动编号容易出错。amsthmnumbered=no

这是一个简单的例子:

\documentclass{article}
\usepackage{amsthm}
\usepackage{thmtools}

\declaretheoremstyle[
notefont=\bfseries, notebraces={}{},
bodyfont=\normalfont,
postheadspace=0.5em,
numbered=no,
]{mystyle}
\declaretheorem[style=mystyle]{problem}

\begin{document}

\begin{problem}[4.15]
Prove that for every prime $p$,
\end{problem}

\begin{problem}[3.12]
Prove that every integer
\end{problem}

\end{document}

在此处输入图片描述

正如我已经提到的,先前的解决方案消除了交叉引用。这是另一种允许您交叉引用问题的方法。我假设问题的双重计数器的第一个组件(您示例中的“4”)与已定义的计数器(按惯例为分段单元的计数器)相关联,并且只有第二个组件(您示例中的“15”)将被手动引入(再次可能是错误来源)。

在下面的例子中,我amsthm定义了一个新的类定理结构definition;这个新结构将在各节内按从属顺序编号。然后我使用一个带有强制参数的新环境包装了这个定义,该参数将用于为计数器的第二个组件设置适当的值。

\documentclass{article}
\usepackage{amsthm}

\theoremstyle{definition}
\newtheorem{prob}{Problem}[section]

\newenvironment{problem}[1]
  {\setcounter{prob}{\numexpr#1-1\relax}\begin{prob}}
  {\end{prob}}

\begin{document}

\section{Test}
\begin{problem}{15}\label{test1}
Prove that for every prime $p$,
\end{problem}
\section{Test}
\begin{problem}{8}\label{test2}
Prove that for every ring $R$,
\end{problem}
We see in Problems~\ref{test1} and~\ref{test2}

\end{document}

在此处输入图片描述

答案2

这是一个更简单的解决方案,它也可以处理交叉引用。

\documentclass[a4paper]{article}
\usepackage{amsthm}

\makeatletter
\newtheorem*{probleminn}{Problem \@currentlabel}
\newenvironment{problem}[1]
  {\def\@currentlabel{#1}\probleminn}{\endprobleminn}
\makeatother

\begin{document}
\begin{problem}{4.14} 
Prove that $2$ is prime.
\end{problem}

\begin{problem}{4.15}\label{bigproblem}
Prove that $2+2=4$.
\end{problem}

\begin{problem}{5.5}\label{easyone}
Prove that every even integer greater than $2$ is the sum of two primes.
\end{problem}

I can solve \ref{easyone}, but I'm stuck with \ref{bigproblem}.
\end{document}

定义\@currentlabel是为 分配正确值所需要的\label

答案3

这个怎么样:

    \documentclass{book}
    \usepackage{thmtools}
    \declaretheorem[numberwithin={}]{theorem}

    \begin{document}
    \begin{theorem}
        something
    \end{theorem}
     \begin{theorem}
        something
    \end{theorem}
   \end{document}

在此处输入图片描述

相关内容