Skip to content

Instantly share code, notes, and snippets.

@MichalPt
Created July 26, 2023 10:50
Show Gist options
  • Save MichalPt/7d903ec7c3d36695f0af9f22906527a1 to your computer and use it in GitHub Desktop.
Save MichalPt/7d903ec7c3d36695f0af9f22906527a1 to your computer and use it in GitHub Desktop.
Latex - Liouville space notation for (super)kets and (super)bras
%%%% Ket & bra with double angles - for Liouville space notation
% use the following command to source it in the main tex file:
% \input{macro.sty}
%
\def\lang{\ensuremath{\langle}}
\def\rang{\ensuremath{\rangle}}
\NewDocumentCommand{\braa}{sO{}m}{%
\IfBooleanTF{#1}
{\braaext{#3}}
{\braax[#2]{#3}}%
}
\NewDocumentCommand{\braaext}{m}{%
\sbox0{%
\mathsurround=0pt % just for safety
$\left\lang\vphantom{#1}\right.\kern-\nulldelimiterspace$%
}%
\sbox2{\lang}%
\ifdim\ht0=\ht2
\lang\kern-.45\wd2 \lang#1\rvert%
\else
\left\lang\kern-.6\wd0\left\lang#1\right\rvert\right.%
\fi
}
\NewDocumentCommand{\braax}{om}{%
\sbox0{\mathsurround=0pt$#1\lang$}%
\sbox2{\lang}%
\ifdim\ht0=\ht2
\lang\kern-.45\wd2 \lang#2\rvert%
\else
\mathopen{#1\lang\kern-.6\wd0 #1\lang}
#2
\mathclose{#1\rvert}
\fi
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NewDocumentCommand{\kett}{sO{}m}{%
\IfBooleanTF{#1}
{\kettext{#3}}
{\kettx[#2]{#3}}%
}
\NewDocumentCommand{\kettext}{m}{%
\sbox0{%
\mathsurround=0pt % just for safety
$\left\lang\vphantom{#1}\right.\kern-\nulldelimiterspace$%
}%
\sbox2{\lang}%
\ifdim\ht0=\ht2
\lvert#1\rang\kern-.45\wd2 \rang%
\else
\left\lvert\left.#1\right\rang\kern-.6\wd0\right\rang%
\fi
}
\NewDocumentCommand{\kettx}{om}{%
\sbox0{\mathsurround=0pt$#1\lang$}%
\sbox2{\lang}%
\ifdim\ht0=\ht2
\lvert#2\rang\kern-.45\wd2 \rang%
\else
\mathopen{#1\lvert}
#2
\mathclose{#1\rang\kern-.6\wd0 #1\rang}
\fi
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment