4

I'm using the ntheorem package to display endmarks on my examples/defns, etc. The problem is that it creates lots of bad boxes when the titles on theorems etc. are too long. I found a solution overfull-hbox-produced-by-ntheorem-subtitles, which is to define the following in the preamble bit:

\makeatletter
\newtheoremstyle{Myplain}%
{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\theorem@separator]}%
{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2]\theorem@headerfont (##3)\theorem@separator\newline\normalfont\itshape}
\newtheoremstyle{nonumberMyplain}%
{\item[\theorem@headerfont\hskip\labelsep ##1\theorem@separator]}%
{\item[\theorem@headerfont\hskip \labelsep ##1]\theorem@headerfont (##3)\theorem@separator\newline\normalfont}
\makeatother

\theoremstyle{Myplain}
\theoremsymbol{$\bigcirc$}
\newtheorem{example}{Example}

And I use it with:

\begin{defn}[Definition of function]This is a definition of $f(x) = p_i(x^2)$.
\end{defn}

in my document to get this:

enter image description here

I don't want the math stuff to be in bold and italics. If I remove the label/title of the definition (Definition of function), the problem's solved. How do I change it so it looks normal even with a label? I know I have to mess around with the stuff after the \makeatletter but I don't understand it. Someone help please :(

2
  • Is there some reason not to switch to using amsthm and thmtools (as the accepted answer in your link suggests) to change the endmark display?
    – Alan Munn
    May 11, 2011 at 22:27
  • Yep, unfortunately those two have endmarks (for non-proof environments) that work poorly when you finish with a displayed equation.
    – P.A
    May 12, 2011 at 7:05

1 Answer 1

4

For some reason, the declaration \boldmath is in force when the optional argument is typeset (this might depend on settings in ntheorem). Solution:

\makeatletter
\newtheoremstyle{Myplain}%
{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\theorem@separator]\normalfont}%
{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2]{\theorem@headerfont (##3)}\theorem@separator\newline\normalfont}
\newtheoremstyle{nonumberMyplain}%
{\item[\theorem@headerfont\hskip\labelsep ##1\theorem@separator]\normalfont}%
{\item[\theorem@headerfont\hskip \labelsep ##1]{\theorem@headerfont (##3)}\theorem@separator\newline\normalfont}
\makeatother
3
  • Thanks once again. I changed the \itshape to \upshape and it got rid of the italics in the text for defns. with labels. It had no effect for definitions without labels -- still italics (but the math stuff is fine), but if I add \normaltext to each such definition it looks fine. Thank you again.
    – P.A
    May 11, 2011 at 22:39
  • @P.A. Look at the changes in the proposed solution, that will give upright text in the environment's body.
    – egreg
    May 11, 2011 at 22:45
  • the reason for the \boldmath is that ntheorem has a \theorem@checkbold macro which automatically switches \boldmath on when bold is used. May 11, 2011 at 22:47

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .