1

I would like to have variants of assumptions (sub-assumptions, if you like) labeled and referenced as 1a, 2b, etc., without using the amsthm package which is known to conflict with the publisher's house style (INFORMS Management Science style file). MWE:

MWE

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Author template for Management Science (mnsc) for articles with no e-companion (EC)
%% Mirko Janc, Ph.D., INFORMS, mirko.janc@informs.org
%% ver. 0.95, December 2010
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[mnsc,blindrev]{informs3}
%\documentclass[mnsc,nonblindrev]{informs3} % current default for manuscript submission

\OneAndAHalfSpacedXI
%%\OneAndAHalfSpacedXII % Current default line spacing
%%\DoubleSpacedXII
%%\DoubleSpacedXI

% If hyperref is used, dvi-to-ps driver of choice must be declared as
%   an additional option to the \documentclass. For example
%\documentclass[dvips,mnsc]{informs3}      % if dvips is used
%\documentclass[dvipsone,mnsc]{informs3}   % if dvipsone is used, etc.

% Private macros here (check that there is no clash with the style)


%% Setup of theorem styles. Outcomment only one.
%% Preferred default is the first option.
\TheoremsNumberedThrough     % Preferred (Theorem 1, Lemma 1, Theorem 2)
%\TheoremsNumberedByChapter  % (Theorem 1.1, Lema 1.1, Theorem 1.2)
\ECRepeatTheorems

%% Setup of the equation numbering system. Outcomment only one.
%% Preferred default is the first option.
\EquationsNumberedThrough    % Default: (1), (2), ...
%\EquationsNumberedBySection % (1.1), (1.2), ...

% For new submissions, leave this number blank.
% For revisions, input the manuscript number assigned by the on-line
% system along with a suffix ".Rx" where x is the revision number.
\MANUSCRIPTNO{MS-0001-1922.65}

%%%%%%%%%%%%%%%%
\begin{document}
%%%%%%%%%%%%%%%%

\begin{assumption}
    The first assumption.
\end{assumption}

Some text\ldots

\begin{assumption}
    I want this to be displayed and referenced as ``Assumption~2a''.
\end{assumption}

Some text\ldots (If the text here interferes with the solution, it can be omitted.)

\begin{assumption}
    I want this to be displayed and referenced as ``Assumption~2b''.
\end{assumption}

Some text\ldots

\begin{assumption}
    I want this to be displayed and referenced as ``Assumption~3''.
\end{assumption}

%%%%%%%%%%%%%%%%%
\end{document}
%%%%%%%%%%%%%%%%%

The answer to a related question uses the amsthm package. I also tried the answer here but it didn't work either.

*Probably unrelated to the solution: Eventually I would also like to add a prime(') to some of the assumption variants (e.g., Assumption~2b') with this method; so I hope the solution is compatible with it as well.

tvk
  • 1,637
  • Can you use the ntheorem package? – Bernard Nov 13 '18 at 20:25
  • @Bernard I just tried loading ntheorem; errors came up. I think the INFORMS style file already defines theorem-related commands so such packages are usually incompatible without first disabling some of the commands in the style file; but that could be tricky to make work. – tvk Nov 13 '18 at 20:31
  • In your numbering system (e.g. Assumption 2b) the 2 would be the number of what? A main assumption of a higher level? – Bernard Nov 13 '18 at 20:54
  • Are you sub-assumptions meant toi best nested assumption environments? If your MWE can you say what you want the numbering to be? It is easy enough to do this it is just not clear to me what you actually want. –  Nov 13 '18 at 22:22
  • @Bernard The same "2" would indicate the 2a, 2b, etc. assumptions are in the same "series". I'm actually thinking of alternative assumptions: Assumption 2a. $a > b$. Assumption 2b. $a = b$. Assumption 2c. $a < b$. Something like that. It would be best if the sub-assumptions can automatically count using the alphabet. Similar to subsections counting using Arabic numerals. – tvk Nov 14 '18 at 02:22
  • @Bernard Short of that, it would also help if one can define separate theorem-like environments that are "Assumption #a", "Assumption #b", etc., where the # would come from the normal assumption counter but without adding to the counter until this "series" ends. – tvk Nov 14 '18 at 02:23
  • @Andrew I not quite sure what nested assumption environments are? Do you think my responses to @Bernard help? – tvk Nov 14 '18 at 02:25

2 Answers2

1

Perhaps I misunderstand the question, it seems that this requires two different environments: one for assumptions and one for subassumptions. Under the hood, all of the theorem-like environments use \trivlist so the natural thing to do here is to define new environments that use the same mechanism.

The code below defines two environments, assumption and assumption*, for assumptions and subassumptions. As with the standard theorem-like environments, both of these environments accept an optional argument. Adapting the MWE above, the output is:

enter image description here

Here is the code:

\documentclass{article}

\newcounter{assumption}
\newcounter{subassumption}
\renewcommand\theassumption{Assumption~\arabic{assumption}}
\renewcommand\thesubassumption{\theassumption\alph{subassumption}}
\makeatletter
\@addtoreset{subassumption}{assumption}
\newenvironment{assumption}[1][]{%
  \refstepcounter{assumption}%
  \def\@currentlabel{Assumption~\arabic{assumption}}%
  \if\relax\detokenize{#1}\relax\let\@assumptionextra\relax%
  \else\def\@assumptionextra{\space(#1)}%
  \fi%
  \trivlist\item[\textsc{Assumption}~\arabic{assumption}\@assumptionextra\space]%
    \ignorespaces\itshape%
  }{\endtrivlist}%
\newenvironment{assumption*}[1][]{%
  % change the assumption counter if this is the first subassumption
  \ifnum\value{subassumption}=0\refstepcounter{assumption}\fi%
  \refstepcounter{subassumption}%
  \def\@currentlabel{Assumption~\arabic{assumption}\alph{subassumption}}%
  \if\relax\detokenize{#1}\relax\let\@assumptionextra\relax%
  \else\def\@assumptionextra{\space(#1)}%
  \fi%
  \trivlist\item[\textsc{Assumption}~\arabic{assumption}\alph{subassumption}%
    \@assumptionextra\space]\ignorespaces\itshape%
  }{\endtrivlist}%
\makeatother

\begin{document}

    \begin{assumption}
        The first assumption.
        \label{Assumption1}
    \end{assumption}

    Some text\ldots

    \begin{assumption*}
        I want this to be displayed and referenced as ``Assumption~2a''.
        \label{Assumption2a}
    \end{assumption*}

    Some text\ldots (If the text here interferes with the solution, it can be omitted.)

    \begin{assumption*}
        I want this to be displayed and referenced as ``Assumption~2b''.
        \label{Assumption2b}
    \end{assumption*}

    \begin{assumption*}[$c>a$]
        I want this to be displayed and referenced as ``Assumption~2b''.
        \label{Assumption2c}
    \end{assumption*}

    Some text\ldots

    \begin{assumption}
        I want this to be displayed and referenced as ``Assumption~3''.
        \label{Assumption3}
    \end{assumption}

    Labels: \ref{Assumption1}, \ref{Assumption2a}, \ref{Assumption2b}
    and \ref{Assumption3}

\end{document}
1

Some fighting against small caps, but for the rest quite straightforward.

If you need different consecutive groups of subassumptions, you can just issue \stepcounter{assumption} between the groups.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Author template for Management Science (mnsc) for articles with no e-companion (EC)
%% Mirko Janc, Ph.D., INFORMS, mirko.janc@informs.org
%% ver. 0.95, December 2010
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[mnsc,blindrev]{informs3}
%\documentclass[mnsc,nonblindrev]{informs3} % current default for manuscript submission

\OneAndAHalfSpacedXI
%%\OneAndAHalfSpacedXII % Current default line spacing
%%\DoubleSpacedXII
%%\DoubleSpacedXI

% If hyperref is used, dvi-to-ps driver of choice must be declared as
%   an additional option to the \documentclass. For example
%\documentclass[dvips,mnsc]{informs3}      % if dvips is used
%\documentclass[dvipsone,mnsc]{informs3}   % if dvipsone is used, etc.

% Private macros here (check that there is no clash with the style)


%% Setup of theorem styles. Outcomment only one.
%% Preferred default is the first option.
\TheoremsNumberedThrough     % Preferred (Theorem 1, Lemma 1, Theorem 2)
%\TheoremsNumberedByChapter  % (Theorem 1.1, Lema 1.1, Theorem 1.2)
\ECRepeatTheorems

%% Setup of the equation numbering system. Outcomment only one.
%% Preferred default is the first option.
\EquationsNumberedThrough    % Default: (1), (2), ...
%\EquationsNumberedBySection % (1.1), (1.2), ...

% For new submissions, leave this number blank.
% For revisions, input the manuscript number assigned by the on-line
% system along with a suffix ".Rx" where x is the revision number.
\MANUSCRIPTNO{MS-0001-1922.65}

\newtheorem{subassumption}{Assumption\normalfont}[assumption]
\renewcommand{\thesubassumption}{\theassumption\alph{subassumption}}}

\newenvironment{assumption*}
 {\ifnum\value{subassumption}=0 \stepcounter{assumption}\fi\subassumption}
 {\endsubassumption}
\newenvironment{assumption+}[1]
 {\renewcommand{\thesubassumption}{#1}\subassumption}
 {\endsubassumption}

%%%%%%%%%%%%%%%%
\begin{document}
%%%%%%%%%%%%%%%%

\begin{assumption}\label{a1}
    The first assumption.
\end{assumption}

Some text\ldots

\begin{assumption*}\label{a2a}
    I want this to be displayed and referenced as ``Assumption~2a''.
\end{assumption*}

Some text\ldots (If the text here interferes with the solution, it can be omitted.)

\begin{assumption*}\label{a2b}
    I want this to be displayed and referenced as ``Assumption~2b''.
\end{assumption*}

Some text\ldots

\begin{assumption+}{\ref{a2b}$'$}\label{a2b'}
    I want this to be displayed and referenced as ``Assumption~2b''.
\end{assumption+}

Some text\ldots

\begin{assumption}\label{a3}
    I want this to be displayed and referenced as ``Assumption~3''.
\end{assumption}

References: \ref{a1}, \ref{a2a}, \ref{a2b}, \ref{a2b'}, \ref{a3}.

%%%%%%%%%%%%%%%%%
\end{document}
%%%%%%%%%%%%%%%%%

enter image description here

Different version, introducing a subassumptions environment, modeled on subequations.

I define the auxiliary environment fixedassumption in order to avoid the label 2a printed in small caps.

Note that in this version assumption* is used instead of assumption+ of the previous version.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Author template for Management Science (mnsc) for articles with no e-companion (EC)
%% Mirko Janc, Ph.D., INFORMS, mirko.janc@informs.org
%% ver. 0.95, December 2010
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[mnsc,blindrev]{informs3}
%\documentclass[mnsc,nonblindrev]{informs3} % current default for manuscript submission

\OneAndAHalfSpacedXI
%%\OneAndAHalfSpacedXII % Current default line spacing
%%\DoubleSpacedXII
%%\DoubleSpacedXI

% If hyperref is used, dvi-to-ps driver of choice must be declared as
%   an additional option to the \documentclass. For example
%\documentclass[dvips,mnsc]{informs3}      % if dvips is used
%\documentclass[dvipsone,mnsc]{informs3}   % if dvipsone is used, etc.

% Private macros here (check that there is no clash with the style)


%% Setup of theorem styles. Outcomment only one.
%% Preferred default is the first option.
\TheoremsNumberedThrough     % Preferred (Theorem 1, Lemma 1, Theorem 2)
%\TheoremsNumberedByChapter  % (Theorem 1.1, Lema 1.1, Theorem 1.2)
\ECRepeatTheorems

%% Setup of the equation numbering system. Outcomment only one.
%% Preferred default is the first option.
\EquationsNumberedThrough    % Default: (1), (2), ...
%\EquationsNumberedBySection % (1.1), (1.2), ...

% For new submissions, leave this number blank.
% For revisions, input the manuscript number assigned by the on-line
% system along with a suffix ".Rx" where x is the revision number.
\MANUSCRIPTNO{MS-0001-1922.65}

% not to be used directly
\newcounter{subassumption}
\theoremstyle{TH}
\newtheorem{fixedassumption}[assumption]{Assumption\normalfont}
\newenvironment{subassumptions}
 {%
  \refstepcounter{assumption}%
  \edef\theassumption{\theassumption\noexpand\alph{assumption}}%
  \setcounter{subassumption}{\value{assumption}}%
  \setcounter{assumption}{0}%
  \let\assumption\fixedassumption
  \let\endassumption\endfixedassumption
  \ignorespaces
 }
 {\setcounter{assumption}{\value{subassumption}}\ignorespacesafterend}

\newenvironment{assumption*}[1]
 {\renewcommand{\theassumption}{#1}\fixedassumption}
 {\endfixedassumption}

%%%%%%%%%%%%%%%%
\begin{document}
%%%%%%%%%%%%%%%%

\begin{assumption}\label{a1}
    The first assumption.
\end{assumption}

Some text\ldots

\begin{subassumptions}
\begin{assumption}\label{a2a}
    I want this to be displayed and referenced as ``Assumption~2a''.
\end{assumption}

Some text\ldots (If the text here interferes with the solution, it can be omitted.)

\begin{assumption}\label{a2b}
    I want this to be displayed and referenced as ``Assumption~2b''.
\end{assumption}
\end{subassumptions}

Some text\ldots

\begin{assumption*}{\ref{a2b}$'$}\label{a2b'}
    I want this to be displayed and referenced as ``Assumption~2b''.
\end{assumption*}

Some text\ldots

\begin{assumption}\label{a3}
    I want this to be displayed and referenced as ``Assumption~3''.
\end{assumption}

References: \ref{a1}, \ref{a2a}, \ref{a2b}, \ref{a2b'}, \ref{a3}.

%%%%%%%%%%%%%%%%%
\end{document}
%%%%%%%%%%%%%%%%%
egreg
  • 1,121,712
  • This looks great! The only issue I realized (which was not explicitly requested in the question) is that if I write two groups of subassumptions consecutively, the assumption counter does not increase for the second group. Hence I defined the following in the preamble: \newcommand{\StartSubassumptions}{\stepcounter{assumption}}; then use \StartSubassumptions before each group of subassumptions and use the subassumption environment as defined directly (without needing the assumption* environment). – tvk Nov 14 '18 at 14:40
  • 1
    @FangJing I should have thought of that. I added a simpler trick, but also a new version that does the business with a subassumptions environment. – egreg Nov 14 '18 at 15:53