You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
171 lines
5.2 KiB
171 lines
5.2 KiB
%% slashed.sty: Produce the `Feynman slashed character' notation
|
|
%% beloved of High Energy Physicists.
|
|
%%
|
|
%% This is a standard LaTeX package, but as many physicists perversely
|
|
%% use use a plain TeX rather than a format designed for document
|
|
%% production, it runs under plain as well.
|
|
%% (Just say \input slashed.sty in that case
|
|
%% rather than \usepackage{slashed}).
|
|
|
|
%% This began life as me commenting in comp.text.tex
|
|
%% on some code posted by Ben Bullock, which was originally written by
|
|
%% Mike Wade.
|
|
%% In the ensuing newsgroup thread, P? Parker, Axel Thimm
|
|
%% and Maurizio Loreti and others made helpful comments
|
|
%%
|
|
%% David Carlisle
|
|
%%
|
|
%% Copyright 1997 David carlisle
|
|
%% This file may be distributed under the terms of the LPPL.
|
|
%% See 00readme.txt for details.
|
|
|
|
\ifx\ProvidesPackage\undefined
|
|
\catcode`\@=11
|
|
\else
|
|
\ProvidesPackage{slashed}
|
|
[1997/01/16 v0.01 Feynman Slashed Character Notation (DPC)]
|
|
\fi
|
|
|
|
|
|
%% Usage \slashed{p} \slashed{D} etc.
|
|
|
|
%% As \slashed may not put the / quite where you want, you can
|
|
%% customise it for certain arguments. After
|
|
%%
|
|
%% \declareslashed{}{/}{.1}{0}{D}
|
|
%%
|
|
%% Then any later use of \slashed{D} will have the / moved
|
|
%% to the right of centre by 0.1 of the width of `D'.
|
|
%%
|
|
%% The arguments to \declareslashed are:
|
|
%%
|
|
%% #1 A command to apply to the constructed character (for instance
|
|
%% \mathbin to re-make it into a binary relation). (It seems that
|
|
%% For the intended use as the Feynman notation it will only
|
|
%% ever be applied to `ordinary' symbols, and so #1 will be empty
|
|
%% but someone might find use for it.
|
|
%%
|
|
%% #2 The symbol to overprint. Normally / but you can try \not or |
|
|
%% (or \big/ or whatever) to get different effects.
|
|
%%
|
|
%% #3 The overprinted symbol is moved to the right by this fraction
|
|
%% of the width of the symbol #5.
|
|
%%
|
|
%% #4 The overprinted symbol is moved up by this fraction
|
|
%% of the width of the symbol #5.
|
|
%% (Note width not height, so #3 and #4 use the same units)
|
|
%%
|
|
%% #5 The symbol to which these customisations applies.
|
|
|
|
|
|
%% The basic guts of the macro just measures the specified character
|
|
%% and a / and arranges to put the centre of the / over the centre
|
|
%% of the character. (This, barring some TeX quibbles, was what the
|
|
%% orignally posted macro did.)
|
|
|
|
%% The first refinement is to call the macro via \mathpalette so
|
|
%% that it works correctly in subscripts, fractions etc.
|
|
|
|
%% Remaining problems.
|
|
|
|
%% The macro puts the middle of the slash through the
|
|
%% middle of the symbol, where `middle' is defined as the centre of the
|
|
%% bounding rectangles. However the eye doesn't necessarily work that
|
|
%% way, for instance $\sla D$ looks to have the slash too far to the
|
|
%% left to me. It is virtually impossible to do such micro positioning
|
|
%% automatically as it depends on the shape of the letters and the
|
|
%% personal judgement of the viewer, and \TeX\ does not have either of
|
|
%% these pieces of information. However one could do something like
|
|
%% the following which allows you to predefine offsets for certain
|
|
%% letters. The offsets are done relative to the size of the symbol
|
|
%% so they work OK in superscrips (or within the scope of a La\TeX\
|
|
%% size change).
|
|
|
|
%% Some characters just don't work with /. The computer modern math
|
|
%% italic f and / have about the same slope and whatever you do it
|
|
%% just looks horrible. So allow the use of an alternative character
|
|
%% (eg \not, which has a slightly different slope).
|
|
|
|
% #1 normally /
|
|
% #2 right shift
|
|
% #3 up shift
|
|
% #4 \displaystyle etc (added by \mathpalette)
|
|
% #5 symbol.
|
|
\def\sla@#1#2#3#4#5{{%
|
|
\setbox\z@\hbox{$\m@th#4#5$}%
|
|
\setbox\tw@\hbox{$\m@th#4#1$}%
|
|
\dimen4\wd\ifdim\wd\z@<\wd\tw@\tw@\else\z@\fi
|
|
\dimen@\ht\tw@
|
|
\advance\dimen@-\dp\tw@
|
|
\advance\dimen@-\ht\z@
|
|
\advance\dimen@\dp\z@
|
|
\divide\dimen@\tw@
|
|
\advance\dimen@-#3\ht\tw@
|
|
\advance\dimen@-#3\dp\tw@
|
|
\dimen@ii#2\wd\z@
|
|
\raise-\dimen@\hbox to\dimen4{%
|
|
\hss\kern\dimen@ii\box\tw@\kern-\dimen@ii\hss}%
|
|
\llap{\hbox to\dimen4{\hss\box\z@\hss}}}}
|
|
|
|
% Use offsets of 0 unless a command has been pre-defined
|
|
% with different offsets for this symbol.
|
|
\def\slashed#1{%
|
|
\expandafter\ifx\csname sla@\string#1\endcsname\relax
|
|
{\mathpalette{\sla@/00}{#1}}%
|
|
\else
|
|
\csname sla@\string#1\endcsname
|
|
\fi}
|
|
|
|
% #1 normally empty, can be \mathop etc
|
|
% #2 normally /
|
|
% #3 right shift
|
|
% #4 up shift
|
|
% #5 symbol
|
|
\def\declareslashed#1#2#3#4#5{%
|
|
\expandafter\def\csname sla@\string#5\endcsname{%
|
|
#1{\mathpalette{\sla@{#2}{#3}{#4}}{#5}}}}
|
|
|
|
\catcode`\@=12
|
|
|
|
%% Now some fine tuning, if you are not using Computer Modern
|
|
%% This is almost certainly wrong. You may think some of these are
|
|
%% wrong anyway.
|
|
|
|
|
|
\declareslashed{}{/}{.08}{0}{D}
|
|
\declareslashed{}{/}{.1}{0}{A}
|
|
\declareslashed{}{/}{0}{-.05}{k}
|
|
\declareslashed{}{/}{.1}{0}{\partial}
|
|
\declareslashed{}{\not}{-.6}{0}{f}
|
|
|
|
\endinput
|
|
|
|
================================================================
|
|
% test file (plain TeX)
|
|
\input slashed.sty
|
|
|
|
|
|
$
|
|
\slashed{D} \slashed{p} \slashed{k} \slashed{r} \slashed{A}
|
|
\slashed{f}
|
|
\slashed{U} \slashed{\partial}
|
|
$
|
|
|
|
\bye
|
|
|
|
================================================================
|
|
% and same again as LaTeX
|
|
|
|
\documentclass{article}
|
|
\usepackage{slashed}
|
|
|
|
\begin{document}
|
|
|
|
$
|
|
\slashed{D} \slashed{p} \slashed{k} \slashed{r} \slashed{A}
|
|
\slashed{f}
|
|
\slashed{U} \slashed{\partial}
|
|
$
|
|
\end{document}
|
|
|
|
|
|
|