Snippets

Below a quick reference for various useful code snippets…

  1. Forth
  2. LaTeX
  3. HTML


Forth snippets

Forth has many dialects. I use GForth for general purpose Forth, as it is available for both Linux and Windows (including Win8) and has a floating point stack which is convenient for scientific programming. I use Win32Forth for its Win32 facilities and easy integration with assembly language. I use F-PC for its simple design and compatibility with 16-bit i-x86 assembly language, though it needs to run in a 16-bit emulator such as DosBox.

Floating Point

\ extra stack operations
: f2dup ( fa fb -- fa fb fa fb ) fover fover ;
: funder ( fa fb -- fb fa fb ) fswap fover ;

\ useful scaffolding within loops
: fshowstack ( -- ) cr f.s key drop ;
: fshowtop ( -- ) cr fdup f. ;

\ float ops
: f2* ( fa -- 2fa ) fdup f+ ;
: f^2 ( fa -- fa^2 ) fdup f* ;

\ float equality
: feps 1e-12 ; \ proxy for machine epsilon
: f=eps ( fa fb -- bool ) f- fabs feps f< ; \ true if fa and fb within neighborhood of feps



LaTeX snippets

Downloadable Templates
Packages
  1. \usepackage{amsfonts} allows $\mathbb{R}$ for reals, $\mathbb{Z}$ for integers, $\mathbb{R}^n$ for n-dim. spaces.
  2. \usepackage{amsmath} gives \eqref, \binom, \eqrefm, and more
  3. \usepackage{amssymb} gives full AMS mathematics symbology
  4. \usepackage{graphicx} allows incorporating images. EPS format is required though; png2eps is a useful conversion utility.
    graphicx Reference
    Example: \includegraphics[scale=0.4]{file}

  5. \usepackage[pass]{geometry} allows changing margins within the document
Whitespace and Margins
  1. \newgeometry{top=2.5cm,bottom=2.3cm,left=2.5cm,right=2.3cm}

What is the right text block size for comfortable reading? Conventional guidance is 60 characters per line, 80 characters upper limit. Yet 90-100 characters is comfortable for technical material. The 'right' number probably depends on content type (fiction, news, technical, mathematics) and reader experience. For example, experienced mathematicians either skim headings, formulas, theorems, figures or carefully read every word in a subsection of interest. In the first case, having more on the page (vertical compression) is a benefit: fewer pages to turn, easier to refer to previous statements. In the second case, the reading is deliberate enough that slightly longer lines don't matter; they are not long enough to cause 'doubling' (accidentally reading the same line twice).

Text Format

Verbatim / Code Formatting

  1. \texttt{sqrt} for verbatim style on a phrase
  2. for verbatim code block, using a smaller font size:
    {\footnotesize\begin{verbatim}
    : f2dup ( fa fb -- fa fb fa fb ) fover fover ;
    : funder ( fa fb -- fb fa fb ) fswap fover ;
    \end{verbatim}
    }
Referring to Labelled / Numbered blocks
  1. \begin{lemma} your lemma name here \label{theorem_trivial}\end{lemma}
    your lemma text here
    sets label

  2. \ref{theorem_trivial} refers to named label internal numbering.
  3. \pageref{theorem_trivial} refers to named label page number.
  4. Note run LaTeX twice to get refs correct.
  5. \begin{equation} formula_text \label{labelname}\end{equation} numbers equations and sets reference.
  6. Equation \eqref{labelname} refers to labelled equation's number
Equations
  1. Text inside math equations: $\epsilon_{\text{machine}}$
  2. Numbered equations: \begin{equation} formula_text \label{labelname}\end{equation} numbers equations and sets reference.
  3. Multi-line numbered equations : \begin{align} line 1 ... \\
    line 2 ... \end{align}

    1. use \nonumber to suppress line numbers
    2. end a line with \\
    3. use align* to suppress all line numbers
    4. use & to align at a character
  4. Cases:
    \begin{equation}
    x_{ij} =
    \begin{cases}
    0& \text{if $i \neq j$},\\
    1& \text{if i=j}.
    \end{cases}
    \end{equation}

  5. Stacked Text, e.g. for limits
    \lim{x \to 2} or usepackage{mathtools} and then \substack{first line\\second line\\third line}
Figures and Captions
  1. Utility for converting PNG to EPS (zip)
  2. Captioning a figure Reference
    Caption is placed in the same position before/after graphic
    \begin{figure}[h!]
    \includegraphics[scale=0.3]{sqrt_xls_2} % Excel hand calc
    \caption{Variation suitable for hand calculation.}
    \label{fig:sqrt_xls_2_hand}
    \end{figure}

  3. Referring to labelled figure label reference
    Figure \ref{sqrt_xls_2_hand}

  4. Text wrapping a figure (wraps the text below it)
    \begin{wrapfigure}{R}{0.75\textwidth}
    \centering
    \includegraphics[width=0.75\textwidth]{sqrt_xls_1_sqrt2}
    \caption{\label{fig:sqrt2} Calculate $\sqrt{2}$}
    \end{wrapfigure}
Useful Macro Commands
  1. Already defined: \lim, \sin, \min, \arctan, \to, etc.
  2. For analysis

    \newcommand{\dt}{\ensuremath{\text{d}t}} % for calculus dt symbol
    \newcommand{\diff}[1]{\ensuremath{\text{d#1}}} % for calculus dx, dy, dz, dt differential
    \newcommand{\qed}{\ensuremath{\ \ \blacksquare}} %for end of proof symbol
    \newcommand{\qedlt}{\ensuremath{\ \ \square}} %for end of proof symbol
    \newcommand{\eps}{\ensuremath{\epsilon}} %for easy use of epsilon
    \newcommand{\imply}{\rightarrow} % for => % Longrightarrow, etc.
    \newcommand{\limply}{\leftarrow} % for =>
    \newcommand{\bimply}{\leftrightarrow} % for <=>
    \newcommand{\st}{\ensuremath{\ \ \text{s.t.}\ \ }} % for easy use of s.t. (such that) in a formula
    \newcommand{\inv}{\ensuremath{^{-1}}} % for easy creation of f^{-1}, etc.

  3. For logic and set theory

    % MACRO for nice emptyset
    \let\oldemptyset\emptyset
    \let\emptyset\varnothing
    \newcommand{\dcup}{\ensuremath{\ \ \dot\cup \ \ }} % for disjoint union
    % \setminus instead of \backslash
    % TEXT words for logical operators
    \newcommand{\AND}{\ensuremath{\text{\begin{ttfamily}\small{ AND }\end{ttfamily}}}}
    \newcommand{\OR}{\ensuremath{\text{\begin{ttfamily}\small{ OR }\end{ttfamily}}}}
    \newcommand{\NOT}{\ensuremath{\text{\begin{ttfamily}\small{ NOT }\end{ttfamily}}}}
    \newcommand{\XOR}{\ensuremath{\text{\begin{ttfamily}\small{ XOR }\end{ttfamily}}}}
    \newcommand{\NAND}{\ensuremath{\text{\begin{ttfamily}\small{ NAND }\end{ttfamily}}}}
    \newcommand{\NOR}{\ensuremath{\text{\begin{ttfamily}\small{ NOR }\end{ttfamily}}}}
    \newcommand{\XNOR}{\ensuremath{\text{\begin{ttfamily}\small{ XNOR }\end{ttfamily}}}}
    \newcommand{\TRUE}{\ensuremath{\text{\begin{ttfamily}\small{ TRUE }\end{ttfamily}}}}
    \newcommand{\FALSE}{\ensuremath{\text{\begin{ttfamily}\small{ FALSE }\end{ttfamily}}}}
    \renewcommand{\neg}{\sim} % symbolic not defined now to use tilde ~ instead of ¬
    \newcommand{\eqdef}{\ensuremath{=_\text{\tiny def}}} % decorating = with `by definition'

  4. For variable decoration

    \let\oldforall\forall % old takes the former command
    \renewcommand{\forall}{\ \ \oldforall} % adds space before a logical operator
    \let\oldexists\exists % old takes the former command
    \renewcommand{\exists}{\ \ \oldexists} % adds space before a logical operator

    \renewcommand{\vec}[1]{\mathbf{#1}} % vectors are bold
    \newcommand{\pder}[2]{\frac{\partial#1}{\partial#2}} % for partial derivatives

    \let\oldhat\hat % oldhat takes on what hat formerly had
    \renewcommand{\hat}[1]{\oldhat{\mathbf{#1}}} % hats make vectors bold and hatted vectors
    \newcommand{\overbar}[1]{\ensuremath{\overline{#1}}} % defines \overbar, which is more prominent than \bar and more convenient than overline
    \newcommand{\fuzzy}[1]{\ensuremath{ \underset{\sim}{#1} }} % usage: \fuzzy{A} for A under-tilde
    % \newcommand{\minimise}[1]{\ensuremath{\underset{#1}\min}} % usage: \minimise{x} for min over x NOT NEEDED \min_{ } already does this...
    \newcommand{\set}[1]{\ensuremath{ \{#1\}}} % usage: \set{x_i}_{i=1}^N

  5. For tildes

    \newcommand{\overtilde}[1]{\ensuremath{ \overset{\sim}{#1} }} % usage: \tilde{x} for x over-tilde
    % \newcommand{\approx}{\ensuremath{\sim}} % usage: \approx 3
    \newcommand{\abs}{\ensuremath{\text{abs}}} %for absolute value

  6. For probability AND statistics

    \newcommand{\pr}[1]{\ensuremath{\text{Pr}\{#1\}}} %for probability, e.g. Pr(X=k)
    \newcommand{\e}[1]{\ensuremath{\text{E}[#1]}} % expectation
    \newcommand{\var}[1]{\ensuremath{\text{var}[#1]}} %for variance
    \newcommand{\avg}{\ensuremath{\text{avg}}} %for avg
    \newcommand{\sd}{\ensuremath{\text{sd}}} %for standard deviation
    \newcommand{\cov}[2]{\ensuremath{\text{cov}(#1,#2)}} %for covariance
    \newcommand{\cor}[2]{\ensuremath{\text{cor}(#1,#2)}} %for correlation

  7. For COMBINATORICS AND DISCRETE MATHS

    \let \oldbinom\binom
    \renewcommand{\binom}[2]{C\oldbinom{#1}{#2}} %This adds a C(a;b) to the choose notation
    \newcommand{\floor}[1]{\ensuremath{\left\lfloor#1\right\rfloor}} %for floor and ceiling
    \newcommand{\ceil}[1]{\ensuremath{\left\lceil#1\right\rceil}}
    \newcommand{\lcm}{\ensuremath{\mbox{lcm} }} % LCM -- because \gcd is defined
    \newcommand{\falling}[1]{\ensuremath{\underline{#1}}} % For use with falling factorial, and N-lower k, etc.

  8. For Physics

    \newcommand{\micro}{\ensuremath{\mu}} %for micro symbol, e.g. uPa (micro-Pascals)
    \newcommand{\dB}{\ensuremath{\text{ dB }}} %for dB
    \newcommand{\kHz}{\ensuremath{\text{ kHz }}} %for kHz
    \newcommand{\Hz}{\ensuremath{\text{ Hz }}} %for Hz
    \renewcommand{\deg}{\ensuremath{^\circ}} %for circle degree symbol \deg uses a text style word and not a math style 15\deg C

  9. For Convenience

    %MACRO FOR: \BEGIN{EQUATION} FORMULA_TEXT \END{EQUATION} numbered equation
    \newcommand{\be}{\begin{equation}}
    \newcommand{\ee}{\end{equation}}

  10. For BUSINESS (copyrights, trademarks, etc.) Reference

    \def\registered{\ooalign{\hfil\raise .00ex\hbox{\scriptsize R}\hfil\crcr\mathhexbox20D}}
    % usage: $^\registered$
    % suggested by: Scott D. Anderson, anderson@cs.umass.edu
    \def\tm{\leavevmode\hbox{$\rm {}^{TM}$}}
    % usage: \tm
    % suggested by: Patrick TJ McPhee Toronto Canada ptjm@io.org


HTML snippets

  • Images, resized
    (in angle brackets) img src="http://mathscitech.org/.../mjoy-demo.png" alt="example" style="width:367px;height:385px;"

Comments are closed.

Dear Readers!

Our Google+ (Buzz) page is where we publish more regular (~monthly), shorter posts. Feel free to check it out! Full length articles will continue to be published here, with notifications through the Feed (you can join the list below).