summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/begriff/begriff.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/begriff/begriff.sty')
-rw-r--r--macros/latex/contrib/begriff/begriff.sty203
1 files changed, 203 insertions, 0 deletions
diff --git a/macros/latex/contrib/begriff/begriff.sty b/macros/latex/contrib/begriff/begriff.sty
new file mode 100644
index 0000000000..24360d5031
--- /dev/null
+++ b/macros/latex/contrib/begriff/begriff.sty
@@ -0,0 +1,203 @@
+% begriffHeck.sty - a LaTeX2e package for typesetting begriffsschrift
+
+% Copyright (C) 2003 by Josh Parsons <josh@coombs.anu.edu.au>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+% General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111,
+% USA.
+
+% Changes made in October 2004 by Richard Heck <heck@fas.harvard.edu>
+% Purpose of changes: To make the format of the formulae closer to how
+% they are set in Frege's published works.
+%
+% Minor changes by Josh Parsons to fix problem with linespacing (May 2005)
+
+%%% identification
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{begriff}
+
+%%% initial code
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% thickness of lines
+\newlength{\BGthickness}
+\setlength{\BGthickness}{0.4pt}
+
+% additional length after a quantifier, conditional, negation, or assertion
+\newlength{\BGafterlen}
+\setlength{\BGafterlen}{2pt}
+
+% additional length before a quantifier, conditional, or negation
+\newlength{\BGbeforelen}
+\setlength{\BGbeforelen}{2pt}
+
+% space inserted before a formula
+\newlength{\BGspace}
+\setlength{\BGspace}{3pt}
+
+% total width of diagram
+% Heck (10/2004): Due to changes below, this is the total width of the DIAGRAM
+% and does not include the width of the terminal formulae. In previous versions,
+% it did include them.
+\newlength{\BGlinewidth}
+\setlength{\BGlinewidth}{\linewidth}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% options
+%\DeclareOption{nothanks}{
+% \renewcommand{\mythanks}[1]{}
+% \let\@mythanks\relax
+%}
+\ProcessOptions
+
+%%% package dependencies
+
+%%% main code
+\typeout{Begriffsschrift: 20 May 2005}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% variable-sized parenthesis
+\newcommand{\BGbracket}[1]{%
+\setbox0=\hbox{\ensuremath{#1}}%
+\dimen0=\dp0%
+\addtolength{\dimen0}{.5\baselineskip}%
+\left(\vbox to \dp0 {\vskip.5\baselineskip\box0\vss}\right)%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% generate a terminal node with fill-line to the left
+\newcommand{\BGterm}[1]{\unskip%
+\setbox0=\hbox{%
+\setlength{\BGlinewidth}{0pt}%
+\vrule height \baselineskip depth 0pt width 0pt% strut
+\vrule height \BGthickness width \BGafterlen depth 0pt%
+\ensuremath{\hskip\BGspace #1}%
+}%
+% Heck (10/2004): Removed the following line, so that the terminal formulae will
+% be left-aligned, as in Frege's published works.
+%\addtolength{\BGlinewidth}{-\wd0}%
+\vrule height \BGthickness width \BGlinewidth depth 0pt%
+\box0%
+\setlength{\BGlinewidth}{0pt}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% box up some maths and subtract its width from linewidth
+% Heck (10/2004): Because of the changes above, this should no longer be needed.
+% It remains for compatibility with previous versions.
+\newcommand{\BGstem}[1]{\unskip%
+\setbox0=\hbox{%
+\setlength{\BGlinewidth}{0pt}%
+\ensuremath{\hskip\BGspace #1}%
+}%
+\addtolength{\BGlinewidth}{-\wd0}%
+\box0%
+\hskip\BGspace%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% generate a conditional \BGconditional{antecedent}{consequent}
+\newcommand{\BGconditional}[2]{\unskip%
+\addtolength{\BGlinewidth}{-\BGbeforelen}%
+\setbox0=\hbox{%
+\addtolength{\BGlinewidth}{-\BGafterlen}%
+\vrule height \baselineskip depth 3pt width 0pt% strut
+\vrule height \BGthickness width \BGafterlen depth 0pt%
+\ensuremath{\hskip\BGspace #1}%
+}%
+\setbox1=\hbox{%
+\addtolength{\BGlinewidth}{-\BGafterlen}%
+\vrule height 0pt depth .3\baselineskip width 0pt% strut
+\vrule height \BGthickness width \BGafterlen depth 0pt%
+\ensuremath{\hskip\BGspace #2}%
+}%
+\dimen0=0pt%
+\addtolength{\dimen0}{\dp1}%
+\addtolength{\dimen0}{\ht0}%
+\addtolength{\dimen0}{\lineskip}%
+\hbox{%
+\vrule width \BGbeforelen height \BGthickness depth 0pt%
+\kern-\BGthickness%
+\vrule width \BGthickness height \BGthickness depth \dimen0%
+\vtop{\box1\box0}%
+}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% generate an assertion sign
+\newcommand{\BGassert}[0]{%
+\addtolength{\BGlinewidth}{-\BGafterlen}%
+\addtolength{\BGlinewidth}{-\BGthickness}%
+\vrule width \BGthickness height 5pt depth 5pt%
+\vrule depth 0pt height \BGthickness width \BGafterlen%
+\hskip \BGspace%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% generate a content stroke
+\newcommand{\BGcontent}[0]{%
+\addtolength{\BGlinewidth}{-\BGafterlen}%
+\vrule depth 0pt height \BGthickness width \BGafterlen%
+\hskip \BGspace%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% generate a negation
+\newcommand{\BGnot}[0]{\unskip%
+\addtolength{\BGlinewidth}{-\BGbeforelen}%
+\addtolength{\BGlinewidth}{-\BGafterlen}%
+\vrule width \BGbeforelen height \BGthickness depth 0pt%
+\kern-\BGthickness%
+\vrule width \BGthickness height \BGthickness depth 3pt%
+\vrule depth 0pt height \BGthickness width \BGafterlen%
+\hskip \BGspace%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% generate a universal quantifier
+\newcommand{\BGquant}[1]{\unskip%
+\addtolength{\BGlinewidth}{-\BGbeforelen}%
+\addtolength{\BGlinewidth}{-8pt}%
+\addtolength{\BGlinewidth}{-\BGafterlen}%
+\hbox{%
+\vrule width \BGbeforelen height \BGthickness depth 0pt%
+\setlength{\unitlength}{1pt}%
+\kern-\BGthickness%
+\begin{picture}(8,0)(0,0)%
+\linethickness{\BGthickness}%
+\qbezier(0,0)(4,-4)(8,0)%
+\end{picture}%
+\kern-8pt%
+% Heck (10/2004): Added "\mathfrak", since variables are always fraktur over quantifiers
+\vbox{\hbox to 8pt {\hskip1pt\hskip\BGthickness\hss$_{\mathfrak{#1}}$\hss}\vskip1pt}%
+\vrule width \BGafterlen height \BGthickness depth 0pt%
+}%
+\hskip\BGspace%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Heck (10/2004): Convenience functions
+% Heck: What I'd like to do is add another (optional) argument to
+% \BGif, so that if it is p, the premise is treated as \BGterm;
+% if it is c, the conculsion is; if it is d, both are. But this will
+% do for now.
+\newcommand{\BGif}[2]{\BGconditional{#1}{#2}}
+% Treat premise as a terminal node
+\newcommand{\BGifp}[2]{\BGconditional{\BGterm{#1}}{#2}}
+% Treat conclusion as a terminal node
+\newcommand{\BGifc}[2]{\BGconditional{#1}{\BGterm{#2}}}
+% Treat both as terminal nodes
+\newcommand{\BGifb}[2]{\BGconditional{\BGterm{#1}}{\BGterm{#2}}}
+\newcommand{\BGneg}[0]{\BGnot}
+\newcommand{\BGall}[1]{\BGquant{#1}}