도움말
코드 블럭
class Functor f where
fmap :: (a -> b) -> (f a -> f b)
class Functor f => Applicative f where
pure :: a -> f a
(<*>) :: f (a -> b) -> f a -> f b
class Applicative m => Monad m where
(>>=) :: m a -> (a -> m b) -> m b
수식
인라인 스타일 수식을 위해 \(..\)
를, 디스플레이 스타일 수식을 위해 \[..\]
를 사용한다.
인라인 수식 테스트: \(f(x) = x^2\)
디스플레이 수식 테스트: \[ \newcommand{\type}[2] {#1 \vdash #2 \ \mathrm{type}} \newcommand{\typeeq}[3] {#1 \vdash #2 \equiv #3 \ \mathrm{type}} \newcommand{\term}[3] {#1 \vdash #2 : #3} \newcommand{\termeq}[4] {#1 \vdash #2 \equiv #3 : #4} \begin{array}{l} \type{\Gamma}{A} \\ \typeeq{\Gamma}{A}{B} \\ \term{\Gamma}{M}{A} \\ \termeq{\Gamma}{M}{N}{A} \\ \end{array} \]
증명 나무
MathJax에서 bussproof를 이용해 증명 나무를 그릴 수 있다. \[ \begin{prooftree} \AxiomC{ } \RightLabel{hyp} \UnaryInfC{ $\neg (P \vee \neg P) \vdash \neg (P \vee \neg P)$ } \AxiomC{ } \RightLabel{hyp} \UnaryInfC{ $\neg (P \vee \neg P), P \vdash \neg (P \vee \neg P)$ } \AxiomC{ } \RightLabel{hyp} \UnaryInfC{ $\neg (P \vee \neg P), P \vdash P$ } \RightLabel{ $\vee I_1$ } \UnaryInfC{ $\neg (P \vee \neg P), P \vdash P \vee \neg P$ } \RightLabel{ $\to E$ } \BinaryInfC{ $\neg (P \vee \neg P), P \vdash \bot$ } \RightLabel{ $\to I$ } \UnaryInfC{ $\neg (P \vee \neg P) \vdash \neg P$ } \RightLabel{ $\vee I_2$ } \UnaryInfC{ $\neg (P \vee \neg P) \vdash P \vee \neg P$ } \RightLabel{ $\to E$ } \BinaryInfC{ $\neg (P \vee \neg P) \vdash \bot$ } \RightLabel{ $\to I$ } \UnaryInfC{ $\vdash \neg \neg (P \vee \neg P)$ } \end{prooftree} \]
가환 그림
MathJax에서 amscd 혹은 XyJax를 이용해 가환 그림을 그릴 수 있다.
amscd
\[ \begin{CD} A @>a>> B \\ @VVbV @VVcV \\ C @>d>> D \end{CD} \]
XyJax
\[ \begin{xy} \xymatrix { U \ar@/_/[ddr]_y \ar@{.>}[dr]|{\langle x,y \rangle} \ar@/^/[drr]^x \\ & X \times_Z Y \ar[d]^q \ar[r]_p & X \ar[d]_f \\ & Y \ar[r]^g & Z } \end{xy} \]