如果我的问题标题有歧义,请见谅。
我想编写一个名为“问题”的环境,其工作原理如下。我希望能够编写
\begin{problem}{1}{2}
this is a problem statement \label{myprob}
\end{problem}
Look at problem number \ref{myprob}
并得到以下输出:
Problem 1.2: This is a problem statement.
Look at problem number 1.2.
关于我该如何做到这一点,您有什么想法吗?
答案1
如果仅此而已,那么这样做就可以了:
\documentclass{article}
\makeatletter
\newenvironment{problem}[2]
{\def\@currentlabel{#1.#2}%
\noindent\textbf{Problem~\@currentlabel}:\space\ignorespaces}
{\par}
\makeatother
\begin{document}
\begin{problem}{1}{2}
This is a problem statement. \label{myprob}
\end{problem}
\end{document}
这依赖于使用 进行引用的事实\@currentlabel
。因此,适当设置它。将宏作为参数传递给problem
可能需要一些扩展。
答案2
这是另一种解决方案定理来自包的环境amsthm
。
\documentclass{report}
\usepackage{amsthm}
\newcounter{problemH}
\setcounter{problemH}{1} % set up the first number
\newtheorem{problem}{Problem}[problemH]
\begin{document}
\begin{problem}
this is a problem statement \label{myprob}
\end{problem}
Look at problem number \ref{myprob}
\begin{problem}
this is a problem statement
\end{problem}
\end{document}
用.
冒号代替句号:
%\newtheoremstyle{stylename}{spaceabove}{spacebelow}{bodyfont}{indentamt}{headfont}{headpunct}{headspace}{headspec}
\newtheoremstyle{problemH}{3pt}{3pt}{}{}{\bfseries}{:}{.5em}{}
\theoremstyle{problemH}
\newtheorem{problem}{Problem}[problemH]
获得