With the ntheorem package, you use a theoremstyle, that describes the general layout, and specify font characteristics, numbering, position of margin, separator, endtheorem mark, &c. A specification is valid for all subsequently declared "new theorems", until another specification replaces it. You can define new theoremstyles, either with the own syntax of the package or with the help of the mathtoolspackage.
There are 9 predefined theorem styles; plain, break, change, margin, change break, marginbreak, nonumberplain, nonumberbreak and empty. Framed or shaded theorems are also possible
Here is an example, just to show how it works:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath} % Or mathtools
\usepackage[thref,amsmath,endmarks]{ntheorem}
\theoremstyle{plain}
\theoremheaderfont{\bfseries}
\theorembodyfont{\itshape}
\theoremseparator{.}
\newtheorem{Thm}{Theorem}
\newtheorem{Prop}{Proposition}
\theoremheaderfont{\scshape\upshape}
\theorembodyfont{\upshape}
\newtheorem{Def}{Definition}
\theoremstyle{break}
\theoremseparator{:}
\newtheorem{Example}{Example}
\theoremstyle{nonumberplain}
\theoremsymbol{\square}
\newtheorem{Proof}{Proof}
\begin{document}
...................................
amsthm?; How to remove brackets from the optional title inamsthm?; How can I make a custom theorem for a definition? – Werner Feb 27 '14 at 18:02