Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

Here's my best attempt at typesetting the proof that 1+1=2 in Principia Mathematica:

\documentclass[10pt]{article}
\usepackage{amssymb}
\usepackage{amsmath}
\pagestyle{empty} \begin{document}
\noindent $\mathbf{*54\cdot43.} \vdash:.\alpha,\beta\in1.\supset:\alpha\cap\beta=\Lambda.\equiv.\alpha\cup\beta\in2$\\ 
\indent\emph{Dem.}
\begin{flalign}\nonumber
\vdash .*54\cdot26.\supset\vdash:.\alpha=\iota'x.\beta=\iota'y.\supset:\alpha\cup\beta\in2.&\equiv.x\neq y.\\\nonumber
[*51\cdot 231]\hspace{4.7cm}\hspace{1cm} & \equiv.t'x\cap\iota'y=\Lambda.\\
[*13\cdot 12]\hspace{4.88cm}\hspace{1cm} & \equiv.\alpha\cap\beta=\Lambda \\\nonumber
\vdash.(1).*11\cdot11\cdot35.\supset\hspace{2.88cm}\hspace{1cm}\\
\vdash:.(\exists x,y).\alpha=\iota'x.\beta=\iota'y.\supset:\alpha\cup\beta\in2.&\equiv.\alpha\cap\beta=\Lambda\\\nonumber
\vdash.(2).*11\cdot54.*52\cdot1.\supset\vdash.Prop\hspace{1.09cm}\hspace{1cm}\end{flalign}
\indent From this proposition it will follow, when arithmetical addition has been defined, that $1 + 1 = 2$.
\end{document}

Here's the result:

enter image description here

And here's the original:

enter image description here

Things I don't like:

  1. Lot's of manual hspace; How do I force left alignment of the equations?
  2. I don't think the \supset symbol is the most appropriate one for the implication, and it is slightly off the horizontal alignment.
  3. The symbol following the \iota (') is not quite the same as the original one.
  4. I'm also not sure that the usage \cdot is the most appropriate.

Looking for improvements from the TeX wizards out there ;-)


share|improve this question
    
You're missing one term on the 3rd line -- the one starting with \vdash.*54 –  tohecz Feb 3 at 22:27
    
@tohecz: another typo. fixed. thanks :-) –  Hugo S Ferreira Feb 3 at 23:24

2 Answers 2

up vote 7 down vote accepted

The following example tries to mimic many of the symbols and spacings:

  • Macro \leftalign is defined that uses the width of the column, calculated from the previous measurement of environment align. The macro can then put it argument to the left.
  • The logic for the punctuation symbols are explained in "The Notation in Principia Mathematica".
  • The form of the punctuation dots is a square not a circle.
  • The width of the assertion symbol ⊦ (U+22A6) is the half of its height, therefore it is smaller than \vdash.
  • The star before the number is rather an eight spoked asterisk ✳ (U+2733) than an asterisk. Also it is an ordinary math symbol.
  • The dot between the numbers is a little higher than \cdot.
  • The ≠ does not have a slanted line.
  • The existence symbol is a rotated uppercase E.
\documentclass[10pt,fleqn]{article}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{pifont}
\pagestyle{empty}
\setlength{\mathindent}{2\parindent}
\thickmuskip=\medmuskip

\makeatletter
\newcommand*{\leftalign}[1]{%
  \ifmeasuring@
    #1%
  \else
    \begingroup
      \advance\column@ by\@ne
      \hbox to \expandafter\maxcol@width\column@{$#1\m@th$\hfill}%
    \endgroup
  \fi
}

\DeclareRobustCommand*{\pmstar}{%
  \text{%
    \resizebox{!}{.75\height}{\ding{107}}%
  }%
}
\newcommand*{\pmcdot}{%
  \mathpalette{\pm@cdot}{}%
}
\newcommand*{\pm@cdot}[2]{%
  \sbox0{$\m@th#1\cdot$}%
  \sbox2{$#11$}%
  \raise.6\dimexpr\ht2-\ht0\relax\copy0 %
}
\newcommand*{\pmand}{\mathbin{\pmdot{.}}}
\newcommand*{\pmgrave}{\text{\bfseries`}}
\newcommand*{\pmimplies}{\boldsymbol{\supset}}
\newcommand*{\pmcup}{%
  \mathbin{%
    \mathchoice
      {\scriptstyle\boldsymbol{\cup}}%
      {\scriptstyle\boldsymbol{\cup}}%
      {\scriptscriptstyle\boldsymbol{\cup}}%
      {\boldsymbol{\cup}}%
  }%
}
\newcommand*{\pmcap}{%
  \mathbin{%
    \mathchoice
      {\scriptstyle\boldsymbol{\cap}}%
      {\scriptstyle\boldsymbol{\cap}}%
      {\scriptscriptstyle\boldsymbol{\cap}}%
      {\boldsymbol{\cap}}%
  }%
}

\newcommand*{\pmvdash}{\mathord{\@pmvdash\,}\mathopen{}}
\newcommand*{\@pmvdash}{%
  \mathpalette{\pm@vdash}{}%
}
\newcommand*{\pm@vdash}[2]{%
  \sbox0{$\m@th#11\Lambda\mid$}%
  \sbox0{\vrule height\ht0 width.5pt}%
  \copy0
  \sbox2{\vbox to 0pt{\vss\hbox to.5\ht0{}\hrule height.5pt\vss}}%
  \raise.5\ht0\copy2 %
}

\newcommand*{\pmneq}{%
  \mathrel{\mathpalette{\pm@neq}{}}%
}
\newcommand*{\pm@neq}[2]{%
  \sbox0{$\m@th#1=$}%
  \hbox to \wd0{%
    \hss$\m@th#1\mid$\hss
  }%
  \kern-\wd0 %
  \copy0 %
}

\newcommand*{\pmexists}{%
  \mathord{\mathpalette{\pm@exists}{}}%
}
\newcommand*{\pm@exists}[2]{%
  \sbox0{$#1y$}%
  \raisebox{\dimexpr-\dp0+\depth\relax}{%
    \rotatebox{180}{$\m@th#1\mathrm{E}$}%
  }%
}

\catcode`\:=\active
\catcode`\.=\active
\newcommand*{\pmdot}[1]{%
  \mathinner{%
    \mathcode`\.="8000 %
    \mathcode`\:="8000 %
    \let.=\@pmdot
    \let:=\@pmcolon
    #1%
  }%
}
\@makeother\:
\@makeother\.
\newcommand*{\@pmcolon}{%
  \mathpalette\pm@colon{}%
}
\newcommand*{\@pmdot}{%
  \mathpalette\pm@dot{}%
}
\newcommand*{\pm@dot}[2]{%
  \sbox0{$\m@th#1\mathchar`\.$}%
  \hbox to 1.15\wd0{\hfill\vrule width1.35\ht0 height1.35\ht0 \hfill}%
}
\newcommand*{\pm@colon}[2]{%
  \sbox0{\pm@dot{#1}{}}%
  \sbox2{$\m@th#1\pm@vdash{#1}{}$}%
  \rlap{%
    \raisebox{.5\dimexpr\ht2-\ht0\relax}{\copy0}%
  }%
  \copy0 %
}
\makeatother

\begin{document}
  \setlength{\abovedisplayskip}{0pt}
  \setlength{\belowdisplayskip}{0pt}
  \paragraph{\boldmath$\pmstar54\pmcdot43$.}
  $\pmvdash
  \pmdot{:.}\alpha,\beta\in1\pmdot{.}
  \pmimplies
  \pmdot{:}\alpha\pmcap\beta=\Lambda\pmdot{.}
  \equiv
  \pmdot{.}\alpha\pmcup\beta\in2$\\
  \indent\emph{Dem.}
  \begin{align}
    \nonumber
    \pmvdash
    \pmdot{.}\pmstar54\pmcdot26\pmdot{.}
    \pmimplies
    \pmvdash
    \pmdot{:.}\alpha=\iota\pmgrave y\pmand
    \beta=\iota\pmgrave y\pmdot{.}
    \pmimplies
    \pmdot{:}\alpha\pmcup\beta\in2\pmdot{.}
    &
    \equiv
    \pmdot{.}x\pmneq y\pmdot{.}
  \\
    \nonumber
    \leftalign{[\pmstar51\pmcdot231]}
    &
    \equiv
    \pmdot{.}t\pmgrave x\pmcap\iota\pmgrave y=\Lambda\pmdot{.}
  \\
    \leftalign{[\pmstar13{\pmcdot}12]}
    &
    \equiv
    \pmdot{.}\alpha\pmcap\beta=\Lambda
  \\
    \nonumber
    \leftalign{%
      \pmvdash
      \pmdot{.}(1)\pmand\pmstar11\pmcdot11\pmcdot35\pmdot{.}
      \pmimplies
    }
  \\
    \pmvdash
    \pmdot{:.}(\pmexists x,y)\pmand\alpha=\iota\pmgrave x\pmand\beta
    =\iota\pmgrave y\pmdot{.}\pmimplies\pmdot{:}\alpha\pmcup\beta\in2\pmdot{.}
    & \equiv\pmdot{.}\alpha\pmcap\beta=\Lambda
  \\
    \nonumber
    \leftalign{%
      \pmvdash\pmdot{.}(2)\pmand
      \pmstar11\pmcdot54\pmand
      \pmstar52\pmcdot1\pmdot{.}
      \pmimplies\pmvdash\pmdot{.}\text{Prop}
    }
  \end{align}
  \indent From this proposition it will follow, when arithmetical addition
  has been defined, that $1 + 1 = 2$.
\end{document}

Result

share|improve this answer

Perhaps this is nearer to the original, but the spacing used in Principia Mathematica is nowhere similar to what's used in real mathematics.

\documentclass[10pt]{article}
\usepackage{textcomp}
\usepackage{amssymb}
\usepackage{amsmath}

\DeclareMathSymbol{`}{\mathord}{operators}{``}

\newcommand{\prop}[3]{%
  \par\addvspace{\topsep}\noindent
  #1\textbf{#2}\textperiodcentered\textbf{#3}. \ignorespaces
}
\newenvironment{dem}
  {\par\emph{Dem.}\abovedisplayskip=0pt \belowdisplayskip=0pt }
  {\par\addvspace{\topsep}}

\pagestyle{empty}

\begin{document}
\prop{*}{54}{43} 
  ${\vdash}{:}.\alpha,\beta\in1.\supset:\alpha\cap\beta=\Lambda.\equiv.\alpha\cup\beta\in2$

\begin{dem}
\begin{alignat}{2}
\nonumber
&{\vdash} .{*}54{\cdot}26.\supset{\vdash}:.\alpha=\iota`y.\supset:\alpha\cup\beta\in2.
  && \equiv.x\neq y.\\
\nonumber
&[{*}51{\cdot}231] && \equiv.t`x\cap\iota`y=\Lambda.\\
&[{*}13{\cdot}12]   && \equiv.\alpha\cap\beta=\Lambda \\
\nonumber
&{\vdash}.(1).{*}11{\cdot}11{\cdot}35.\supset{}\\
&{\vdash}:.(\exists x,y).\alpha=\iota`x.\beta=\iota`y.\supset:\alpha\cup\beta\in2.
  &&\equiv.\alpha\cap\beta=\Lambda\\
\nonumber
&{\vdash}.(2).{*}11{\cdot}54.{*}51{\cdot}1.\supset{\vdash}.\textit{Prop}
\end{alignat}
\end{dem}

From this proposition it will follow, when arithmetical addition has been defined, 
that $1 + 1 = 2$.

\end{document}

enter image description here

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.