2010-05-19 01:55:34 +02:00
% % start of file ` m o d e r n c v . c l s ' .
2026-01-31 13:06:35 +01:00
% % C o p y r i g h t 2006 - 2015 X a v i e r D a n a u x ( x d a n a u x @ g m a i l . c o m ) , 2020 - 2026 m o d e r n c v m a i n t a i n e r s ( g i t h u b . c o m / m o d e r n c v ) .
2010-05-19 02:26:05 +02:00
%
% T h i s w o r k m a y b e d i s t r i b u t e d and / or modified u n d e r t h e
% c o n d i t i o n s of t h e L a T e X P r o j e c t Public L i c e n s e version 1.3 c ,
% available at h t t p : //www.latex-project.org/lppl/.
2010-05-19 02:17:38 +02:00
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% i d e n t i f i c a t i o n
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2010-05-19 01:55:34 +02:00
\ N e e d s T e X F o r m a t { L a T e X 2 e }
2026-01-31 13:06:35 +01:00
\ P r o v i d e s C l a s s { m o d e r n c v } [ 2026 - 01 - 31 v 2.5 . 1 m o d e r n c u r r i c u l u m v i t a e and l e t t e r d o c u m e n t class ]
2010-05-19 01:55:34 +02:00
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% class o p t i o n s
2010-05-19 02:17:38 +02:00
%
% ( n e e d to b e d o n e b e f o r e t h e external p a c k a g e l o a d i n g , for e x a m p l e b e c a u s e
% w e n e e d \ p a p e r w i d t h , \ p a p e r h e i g h t and \ @ p t s i z e to b e defined b e f o r e l o a d i n g
% g e o m e t r y and f a n c y h d r )
2010-05-19 01:55:34 +02:00
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% p a p e r size option
2010-05-19 02:17:38 +02:00
\ D e c l a r e O p t i o n { a 4 p a p e r } {
\ s e t l e n g t h \ p a p e r h e i g h t { 2 9 7 m m }
\ s e t l e n g t h \ p a p e r w i d t h { 2 1 0 m m } }
\ D e c l a r e O p t i o n { a 5 p a p e r } {
\ s e t l e n g t h \ p a p e r h e i g h t { 2 1 0 m m }
\ s e t l e n g t h \ p a p e r w i d t h { 1 4 8 m m } }
\ D e c l a r e O p t i o n { b 5 p a p e r } {
\ s e t l e n g t h \ p a p e r h e i g h t { 2 5 0 m m }
\ s e t l e n g t h \ p a p e r w i d t h { 1 7 6 m m } }
\ D e c l a r e O p t i o n { l e t t e r p a p e r } {
\ s e t l e n g t h \ p a p e r h e i g h t { 1 1 i n }
\ s e t l e n g t h \ p a p e r w i d t h { 8 . 5 i n } }
\ D e c l a r e O p t i o n { l e g a l p a p e r } {
\ s e t l e n g t h \ p a p e r h e i g h t { 1 4 i n }
\ s e t l e n g t h \ p a p e r w i d t h { 8 . 5 i n } }
\ D e c l a r e O p t i o n { e x e c u t i v e p a p e r } {
\ s e t l e n g t h \ p a p e r h e i g h t { 1 0 . 5 i n }
\ s e t l e n g t h \ p a p e r w i d t h { 7 . 2 5 i n } }
\ D e c l a r e O p t i o n { l a n d s c a p e } {
\ s e t l e n g t h \ @ t e m p d i m a { \ p a p e r h e i g h t }
\ s e t l e n g t h \ p a p e r h e i g h t { \ p a p e r w i d t h }
\ s e t l e n g t h \ p a p e r w i d t h { \ @ t e m p d i m a } }
2010-05-19 01:55:34 +02:00
% font size o p t i o n s
\ n e w c o m m a n d \ @ p t s i z e { }
2010-05-19 02:17:38 +02:00
\ D e c l a r e O p t i o n { 1 0 p t } { \ r e n e w c o m m a n d \ @ p t s i z e { 0 } }
2010-05-19 01:55:34 +02:00
\ D e c l a r e O p t i o n { 1 1 p t } { \ r e n e w c o m m a n d \ @ p t s i z e { 1 } }
\ D e c l a r e O p t i o n { 1 2 p t } { \ r e n e w c o m m a n d \ @ p t s i z e { 2 } }
2011-12-12 01:23:29 +01:00
% font type o p t i o n s
2012-07-29 14:25:16 +02:00
\ D e c l a r e O p t i o n { s a n s } { \ A t B e g i n D o c u m e n t { \ r e n e w c o m m a n d { \ f a m i l y d e f a u l t } { \ s f d e f a u l t } } }
\ D e c l a r e O p t i o n { r o m a n } { \ A t B e g i n D o c u m e n t { \ r e n e w c o m m a n d { \ f a m i l y d e f a u l t } { \ r m d e f a u l t } } }
2011-12-12 01:23:29 +01:00
2010-05-19 01:55:34 +02:00
% d r a f t / final option
\ D e c l a r e O p t i o n { d r a f t } { \ s e t l e n g t h \ o v e r f u l l r u l e { 5 p t } }
2010-05-19 02:17:38 +02:00
\ D e c l a r e O p t i o n { f i n a l } { \ s e t l e n g t h \ o v e r f u l l r u l e { 0 p t } }
2010-05-19 01:55:34 +02:00
% execute default o p t i o n s
2012-07-29 14:25:16 +02:00
\ E x e c u t e O p t i o n s { a 4 p a p e r , 1 1 p t , f i n a l }
2010-05-19 01:55:34 +02:00
% process g i v e n o p t i o n s
2010-05-19 02:17:38 +02:00
\ P r o c e s s O p t i o n s \ r e l a x
2010-05-19 01:55:34 +02:00
\ input { s i z e 1 \ @ p t s i z e . c l o }
2010-05-19 02:17:38 +02:00
2010-05-19 01:55:34 +02:00
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2010-05-19 02:17:38 +02:00
% r e q u i r e d p a c k a g e s
2010-05-19 01:55:34 +02:00
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2012-10-08 17:35:52 -04:00
% \ A t E n d P r e a m b l e h o o k ( l o a d i n g e t o o l b o x i n s t e a d of d e f i n i n g t h e m a c r o , as to a v o i d i n c o m p a t i b i l i t i e s with e t o o l b o x ( and p a c k a g e s r e l y i n g on i t ) d e f i n i n g t h e m a c r o t o o )
2010-06-13 21:39:11 +02:00
\ R e q u i r e P a c k a g e { e t o o l b o x }
% \ l e t \ @ e n d p r e a m b l e h o o k \ @ empty
% \ def \ A t E n d P r e a m b l e { \ g @ a d d t o @ m a c r o \ @ e n d p r e a m b l e h o o k }
2012-10-08 17:35:52 -04:00
% \ l e t \ d o c u m e n t @ o r i g i n a l \ d o c u m e n t
% \ def \ d o c u m e n t { \ e n d g r o u p \ @ e n d p r e a m b l e h o o k \ b e g i n g r o u p \ d o c u m e n t @ o r i g i n a l }
2010-05-24 03:41:22 +02:00
% if . . . then . . . else . . . c o n s t r u c t s
2010-05-19 02:17:38 +02:00
\ R e q u i r e P a c k a g e { i f t h e n }
2012-07-29 14:11:08 +02:00
% T O D O : m o v e to x i f t h e n and \ i s e m p t y { < a r g > } i n s t e a d of \ e q u a l { < a r g > } { }
2010-05-24 03:41:22 +02:00
% color
2014-02-17 15:59:16 -05:00
\ R e q u i r e P a c k a g e [ table ] { x c o l o r }
2010-05-19 02:17:38 +02:00
2021-12-13 22:00:04 +01:00
% t e x compiler c h e c k i n g for s y m b o l l o a d i n g
2021-12-13 16:46:54 -03:00
\ R e q u i r e P a c k a g e { i f t e x }
2013-04-29 13:43:30 -04:00
\ n e w i f \ i f x e t e x o r l u a t e x
\ i f x e t e x
\ x e t e x o r l u a t e x t r u e
\ else
\ i f l u a t e x
\ x e t e x o r l u a t e x t r u e
\ else
\ x e t e x o r l u a t e x f a l s e
\ f i
\ f i
2010-05-19 01:55:34 +02:00
2021-07-28 11:24:58 +02:00
2012-03-19 02:35:42 -04:00
% h y p e r l i n k s ( h y p e r r e f is l o a d e d at t h e end of t h e p r e a m b l e to p a s s o p t i o n s r e q u i r e d by l o a d e d p a c k a g e s s u c h as C J K )
2012-12-07 01:48:21 -05:00
\ n e w c o m m a n d * \ p d f p a g e m o d e { U s e N o n e } % do not s h o w t h u m b n a i l s or b o o k m a r k s on o p e n i n g ( on s u p p o r t i n g b r o w s e r s ) ; set \ p d f p a g e m o d e to "UseOutlines" to s h o w b o o k m a r k s
2010-05-19 01:55:34 +02:00
\ R e q u i r e P a c k a g e { u r l }
\ u r l s t y l e { t t }
2010-05-24 03:41:22 +02:00
\ A t E n d P r e a m b l e {
2012-10-30 21:06:22 -04:00
\ p a g e n u m b e r i n g { a r a b i c } % h a s to b e i s s u e d b e f o r e l o a d i n g h y p e r r e f , as to set \ t h e p a g e and h e n c e to a v o i d h y p e r r e f i s s u i n g a warning and s e t t i n g p d f p a g e l a b e l s = false
2023-01-18 16:17:29 +01:00
\ P a s s O p t i o n s T o P a c k a g e { u n i c o d e } { h y p e r r e f }
\ R e q u i r e P a c k a g e { h y p e r r e f }
2012-07-29 15:06:48 +02:00
\ h y p e r s e t u p {
b r e a k l i n k s ,
p d f b o r d e r = 0 0 0 ,
2012-12-07 01:48:21 -05:00
p d f p a g e m o d e = \ p d f p a g e m o d e ,
2012-07-29 15:06:48 +02:00
p d f s t a r t p a g e = 1 ,
p d f c r e a t o r = { \ L a T e X { } w i t h ' m o d e r n c v ' p a c k a g e } ,
% p d f p r o d u c e r = { \ L a T e X { } } , % w i l l / s h o u l d b e set a u t o m a t i c a l l y to t h e c o r r e c t T e X e n g i n e u s e d
b o o k m a r k s o p e n = true ,
b o o k m a r k s d e p t h = 2 , % to s h o w s e c t i o n s and s u b s e c t i o n s
2013-02-14 02:07:42 -05:00
p d f a u t h o r = { \ @ f i r s t n a m e { } ~ \ @ l a s t n a m e { } } ,
2022-03-18 14:09:16 +02:00
p d f t i t l e =
2023-06-04 03:26:38 -07:00
{ \ @ f i r s t n a m e { } ~ \ @ l a s t n a m e { } \ e x p a n d a f t e r \ n o t b l a n k \ e x p a n d a f t e r { \ @ t i t l e } { - - \ @ t i t l e } { } } , % \ n o t b l a n k d o e s not expand a r g u m e n t a u t o m a t i c a l l y
2020-06-23 20:28:56 +02:00
p d f s u b j e c t = { R \ ' { e } s u m \ ' { e } o f \ @ f i r s t n a m e { } ~ \ @ l a s t n a m e { } } ,
p d f k e y w o r d s = { \ @ f i r s t n a m e { } ~ \ @ l a s t n a m e { } , c u r r i c u l u m v i t \ a e { } , r \ ' { e } s u m \ ' { e } } } }
2010-05-19 01:55:34 +02:00
2023-03-16 11:14:41 +01:00
% p d f t e x not using p d f m a n a g e m e n t - t e s t p h a s e r e q u i r e s T 1 font e n c o d i n g in o r d e r to handle l i n k s c o n t a i n i n g s p e c i a l c h a r a c t e r s s o m e w h a t p r o p e r l y
\ i f p d f t e x
\ I f P D F M a n a g e m e n t A c t i v e T F { } { \ R e q u i r e P a c k a g e [ T 1 ] { f o n t e n c } }
\ f i
2010-05-19 02:17:38 +02:00
% g r a p h i c s
2010-07-20 19:54:24 -04:00
\ R e q u i r e P a c k a g e { g r a p h i c x }
2010-05-19 02:17:38 +02:00
2010-05-19 01:55:34 +02:00
% h e a d e r s and f o o t e r s
2010-05-31 22:29:56 +02:00
\ R e q u i r e P a c k a g e { f a n c y h d r }
2010-05-24 03:41:22 +02:00
\ f a n c y p a g e s t y l e { p l a i n } {
2010-05-19 02:17:38 +02:00
\ r e n e w c o m m a n d { \ h e a d r u l e w i d t h } { 0 p t }
\ r e n e w c o m m a n d { \ f o o t r u l e w i d t h } { 0 p t }
2010-05-19 01:55:34 +02:00
\ f a n c y h f { } }
2012-03-19 02:35:42 -04:00
% page n u m b e r s in f o o t e r if m o r e t h a n 1 page
\ n e w i f \ if @ d i s p l a y p a g e n u m b e r s \ @ d i s p l a y p a g e n u m b e r s t r u e
\ n e w c o m m a n d * { \ n o p a g e n u m b e r s } { \ @ d i s p l a y p a g e n u m b e r s f a l s e }
\ A t E n d P r e a m b l e { %
\ A t B e g i n D o c u m e n t { %
2015-07-29 00:51:44 -07:00
% f a n c y h d r length
\ r e n e w c o m m a n d { \ h e a d w i d t h } { \ t e x t w i d t h }
2012-03-19 02:35:42 -04:00
\ if @ d i s p l a y p a g e n u m b e r s %
\ @ i f u n d e f i n e d { r @ l a s t p a g e } { } { %
\ i f t h e n e l s e { \ p a g e r e f { l a s t p a g e } > 1 } { %
\ n e w l e n g t h { \ p a g e n u m b e r w i d t h } %
2024-05-02 13:45:44 -04:00
\ s e t t o w i d t h { \ p a g e n u m b e r w i d t h } { \ c o l o r { c o l o r 2 } \ p a g e n u m b e r f o n t \ s t r u t \ t h e p a g e / \ p a g e r e f { l a s t p a g e } } %
2012-03-19 02:35:42 -04:00
\ f a n c y p a g e s t y l e { p l a i n } { %
2023-04-25 11:16:16 -10:00
\ f a n c y f o o t [ r ] { \ p a r b o x [ b ] { \ p a g e n u m b e r w i d t h } { \ c o l o r { c o l o r 2 } \ p a g e n u m b e r f o n t \ s t r u t \ t h e p a g e / \ p r o t e c t \ N o H y p e r \ p a g e r e f { l a s t p a g e } \ p r o t e c t \ e n d N o H y p e r } } } % t h e p a r b o x is r e q u i r e d to e n s u r e a l i g n m e n t with a p o s s i b l e center f o o t e r ( e . g . , as in t h e c a s u a l s t y l e )
2016-11-13 20:09:38 -08:00
\ p a g e s t y l e { p l a i n } } { } } \ f i } %
\ A t E n d D o c u m e n t { \ l a b e l { l a s t p a g e } } }
2010-05-19 01:55:34 +02:00
\ p a g e s t y l e { p l a i n }
2013-01-23 21:08:17 -05:00
% r e d u c e d l i s t s p a c i n g
% p a c k a g e p r o v i d i n g h o o k s into l i s t s
2025-09-06 13:54:28 -04:00
% o r i g i n a l l y d e v e l o p e d by J a k o b S c h i o t z ( s e e h t t p : //dcwww.camd.dtu.dk/~schiotz/comp/LatexTips/tweaklist.sty)
2013-01-23 21:08:17 -05:00
% modified and d i s t r i b u t e d with m o d e r n c v ( not available otherwise on c t a n )
\ R e q u i r e P a c k a g e { t w e a k l i s t }
\ r e n e w c o m m a n d * { \ i t e m h o o k } { %
\ @ m i n i p a g e t r u e % r e m o v e s s p a c i n g b e f o r e l i s t s as t h e y use \ a d d v s p a c e , w h i c h d o e s n ' t add vertical space i n s i d e m i n i p a g e s
\ @ n o p a r l i s t t r u e % r e m o v e s s p a c i n g at end of l i s t s , c a u s e d by \ p a r
\ s e t l e n g t h { \ t o p s e p } { 0 p t } % n o r m a l l y not r e q u i r e d t h a n k s to \ @ m i n i p a g e t r u e
\ s e t l e n g t h { \ p a r t o p s e p } { 0 p t } % n o r m a l l y not r e q u i r e d t h a n k s to \ @ m i n i p a g e t r u e
\ s e t l e n g t h { \ p a r s e p } { 0 p t } % not r e q u i r e d when \ i t e m s e p and \ p a r s k i p a r e set to 0 p t ( ? )
\ s e t l e n g t h { \ p a r s k i p } { 0 p t } %
\ s e t l e n g t h { \ i t e m s e p } { 0 p t } }
\ r e n e w c o m m a n d * { \ e n u m h o o k } { \ i t e m h o o k { } }
\ r e n e w c o m m a n d * { \ d e s c h o o k } { \ i t e m h o o k { } }
2011-12-12 01:23:29 +01:00
% l e n g t h s c a l c u l a t i o n s
\ R e q u i r e P a c k a g e { c a l c }
2012-10-08 17:35:52 -04:00
% a d v a n c e d command a r g u m e n t s ( L a T e X 3 )
2012-12-07 02:04:01 -05:00
\ R e q u i r e P a c k a g e { x p a r s e }
2012-10-08 17:35:52 -04:00
% T O D O ( ? ) : replace all \ n e w c o m m a n d by \ N e w D o c u m e n t C o m m a n d
2011-11-06 19:33:45 +01:00
2012-10-08 17:35:52 -04:00
% m i c r o - t y p o g r a p h y ( e . g . , character p r o t r u s i o n , font e x p a n s i o n , h y p h e n a t a b l e l e t t e r s p a c i n g )
2011-12-19 00:50:29 +01:00
\ R e q u i r e P a c k a g e { m i c r o t y p e }
2013-04-08 08:36:39 -04:00
% s t a c k of k e y - v a l u e e l e m e n t s , u s e d to save p e r s o n a l information
\ R e q u i r e P a c k a g e { m o d e r n c v c o l l e c t i o n }
2010-05-19 02:17:38 +02:00
% c o m p a t i b i l i t y p a c k a g e with o l d e r v e r s i o n s of m o d e r n c v
\ R e q u i r e P a c k a g e W i t h O p t i o n s { m o d e r n c v c o m p a t i b i l i t y }
2020-06-23 20:24:04 +02:00
\ R e q u i r e P a c k a g e { e x p l 3 }
2010-05-19 02:17:38 +02:00
2010-05-19 01:55:34 +02:00
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2010-05-19 02:17:38 +02:00
% class d e f i n i t i o n
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% m i n i m a l b a s e s e t t i n g s
\ s e t l e n g t h \ l i n e s k i p { 1 \ p @ }
\ s e t l e n g t h \ n o r m a l l i n e s k i p { 1 \ p @ }
\ r e n e w c o m m a n d \ b a s e l i n e s t r e t c h { }
2011-11-17 19:17:16 +01:00
\ s e t l e n g t h { \ p a r i n d e n t } { 0 \ p @ }
\ s e t l e n g t h { \ p a r s k i p } { 0 \ p @ }
2010-05-19 02:17:38 +02:00
\ s e t l e n g t h \ c o l u m n s e p { 1 0 \ p @ }
\ s e t l e n g t h \ c o l u m n s e p r u l e { 0 \ p @ }
2011-11-06 19:33:45 +01:00
\ s e t l e n g t h \ f b o x s e p { 3 \ p @ }
\ s e t l e n g t h \ f b o x r u l e { . 4 \ p @ }
2012-10-31 01:00:12 -04:00
\ s e t l e n g t h \ a r r a y r u l e w i d t h { . 4 \ p @ }
\ s e t l e n g t h \ d o u b l e r u l e s e p { 2 \ p @ }
2010-05-19 02:36:03 +02:00
2012-10-31 01:00:12 -04:00
% not set on p u r p o s e
2010-05-19 02:36:03 +02:00
% \ s e t l e n g t h \ a r r a y c o l s e p { 5 \ p @ }
% \ s e t l e n g t h \ t a b c o l s e p { 6 \ p @ }
% \ s e t l e n g t h \ t a b b i n g s e p { \ l a b e l s e p }
2010-05-19 02:17:38 +02:00
\ r a g g e d b o t t o m
\ o n e c o l u m n
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2012-03-19 02:35:42 -04:00
% o v e r a l l d e s i g n c o m m a n d s d e f i n i t i o n s
2010-05-19 01:55:34 +02:00
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2012-03-19 02:35:42 -04:00
% e l e m e n t s
2013-04-22 23:51:11 -04:00
% - - - - - - - - -
2013-02-14 02:07:42 -05:00
% d e f i n e s o n e ' s name
% u s a g e : \ name { < f i r s t n a m e > } { < l a s t n a m e > }
\ n e w c o m m a n d * { \ n a m e } [ 2 ] { \ d e f \ @ f i r s t n a m e { # 1 } \ d e f \ @ l a s t n a m e { # 2 } }
2013-04-22 23:51:11 -04:00
2012-12-07 01:47:07 -05:00
% d e f i n e s o n e ' s title ( o p t i o n a l )
% u s a g e : \ title { < t i t l e > }
2012-03-19 02:35:42 -04:00
\ r e n e w c o m m a n d * { \ t i t l e } [ 1 ] { \ d e f \ @ t i t l e { # 1 } }
2013-04-22 23:51:11 -04:00
2012-12-07 01:47:07 -05:00
% d e f i n e s o n e ' s a d d r e s s ( o p t i o n a l )
% u s a g e : \ a d d r e s s { < s t r e e t > } { < c i t y > } { < c o u n t r y > }
% where t h e < c i t y > and < c o u n t r y > a r g u m e n t s c a n b e o m i t t e d or p r o v i d e d empty
\ N e w D o c u m e n t C o m m a n d { \ a d d r e s s } { m G { } G { } } { \ d e f \ @ a d d r e s s s t r e e t { # 1 } \ d e f \ @ a d d r e s s c i t y { # 2 } \ d e f \ @ a d d r e s s c o u n t r y { # 3 } }
2013-04-22 23:51:11 -04:00
2018-04-17 12:53:50 +03:00
% d e f i n e s o n e ' s b i r t h d a y ( o p t i o n a l )
% u s a g e : \ b o r n { d a t e , p l a c e }
\ n e w c o m m a n d * { \ b o r n } [ 1 ] { \ d e f \ @ b o r n { # 1 } }
2013-04-22 23:51:11 -04:00
% d e f i n e s o n e ' s e m a i l ( o p t i o n a l )
2025-09-06 13:54:28 -04:00
% u s a g e : \ e m a i l { < e m a i l a d d r e s s > }
2012-03-19 02:35:42 -04:00
\ n e w c o m m a n d * { \ e m a i l } [ 1 ] { \ d e f \ @ e m a i l { # 1 } }
2013-04-22 23:51:11 -04:00
2012-12-07 01:47:07 -05:00
% d e f i n e s o n e ' s h o m e page ( o p t i o n a l )
2023-03-08 10:56:56 +01:00
% u s a g e : \ h o m e p a g e [ < o p t i o n a l p r o t o c o l > ] { < u r l > }
% where < o p t i o n a l p r o t o c o l > s h o u l d b e e i t h e r "https" ( default ) or "http"
\ N e w D o c u m e n t C o m m a n d { \ h o m e p a g e } { O { h t t p s } m } { \ d e f \ @ h o m e p a g e p r o t o c o l { # 1 } \ d e f \ @ h o m e p a g e { # 2 } }
2013-04-22 23:51:11 -04:00
% a d d s a f i x e d / m o b i l e / f a x n u m b e r to o n e ' s p e r s o n a l information ( o p t i o n a l )
% u s a g e : \ p h o n e [ < o p t i o n a l type > ] { < n u m b e r > }
% where < o p t i o n a l type > s h o u l d b e e i t h e r "fixed" ( default ) , "mobile" or " f a x
\ c o l l e c t i o n n e w { p h o n e s }
2016-11-14 05:34:33 +01:00
\ N e w D o c u m e n t C o m m a n d { \ p h o n e } { O { f i x e d } m } { %
\ i f t h e n e l s e { \ e q u a l { # 1 } { f a x } } %
{ \ c o l l e c t i o n a d d [ # 1 ] { p h o n e s } { # 2 } }
{ \ c o l l e c t i o n a d d [ # 1 ] { p h o n e s } { \ p r o t e c t \ t e l l i n k { # 2 } } }
}
2013-04-22 23:51:11 -04:00
2016-11-15 20:53:01 +01:00
2020-09-27 23:20:45 +02:00
% h t t p : //latex.org/forum/viewtopic.php?t=12239
\ def \ S p l i t M y M a c r o # 1 / # 2 { # 2 }
2023-06-04 03:26:38 -07:00
2013-04-22 23:51:11 -04:00
% a d d s a s o c i a l l i n k to o n e ' s p e r s o n a l information ( o p t i o n a l )
% u s a g e : \ s o c i a l [ < o p t i o n a l type > ] [ < o p t i o n a l url > ] { < a c c o u n t n a m e > }
2022-08-23 20:24:33 +01:00
% where < o p t i o n a l type > s h o u l d b e e i t h e r :
% - "linkedin"
% - "xing"
% - "twitter"
% - "mastodon"
% - "github"
% - "gitlab"
% - "stackoverflow"
% - "bitbucket"
% - "skype"
% - "orcid"
% - "researchgate"
% - "researcherid"
% - "telegram"
% - "whatsapp"
% - "signal"
% - "matrix"
% - "googlescholar"
% - "codeberg"
% - "discord"
% - "twitch"
% - "youtube"
% - "tiktok"
% - "instagram"
2022-08-23 20:47:06 +01:00
% - "soundcloud"
2022-08-23 20:40:31 +01:00
% - " s t e a m
% - "xbox"
% - "playstation"
% - "battlenet"
2024-05-02 13:46:38 -04:00
% - "arxiv"
% - "inspire"
2025-02-22 20:43:18 +01:00
% - "simplex"
% - "threema"
2013-04-22 23:51:11 -04:00
\ c o l l e c t i o n n e w { s o c i a l s }
\ N e w D o c u m e n t C o m m a n d { \ s o c i a l } { O { } O { } m } { %
\ i f t h e n e l s e { \ e q u a l { # 2 } { } } %
{ %
2020-10-24 01:03:10 +02:00
\ i f t h e n e l s e { \ e q u a l { # 1 } { l i n k e d i n } } { \ c o l l e c t i o n a d d [ l i n k e d i n ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { w w w . l i n k e d i n . c o m / i n / # 3 } } } { } %
\ i f t h e n e l s e { \ e q u a l { # 1 } { x i n g } } { \ c o l l e c t i o n a d d [ x i n g ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { w w w . x i n g . c o m / p r o f i l e / # 3 } } } { } %
2021-03-28 23:58:26 -07:00
\ i f t h e n e l s e { \ e q u a l { # 1 } { t w i t t e r } } { \ c o l l e c t i o n a d d [ t w i t t e r ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { t w i t t e r . c o m / # 3 } } } { } %
2022-02-21 14:52:36 +02:00
\ i f t h e n e l s e { \ e q u a l { # 1 } { m a s t o d o n } } { \ c o l l e c t i o n a d d [ m a s t o d o n ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { # 3 } } } { } %
2021-03-28 23:58:26 -07:00
\ i f t h e n e l s e { \ e q u a l { # 1 } { g i t h u b } } { \ c o l l e c t i o n a d d [ g i t h u b ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { g i t h u b . c o m / # 3 } } } { } %
\ i f t h e n e l s e { \ e q u a l { # 1 } { g i t l a b } } { \ c o l l e c t i o n a d d [ g i t l a b ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { g i t l a b . c o m / # 3 } } } { } %
2020-10-24 01:03:10 +02:00
\ i f t h e n e l s e { \ e q u a l { # 1 } { s t a c k o v e r f l o w } } { \ c o l l e c t i o n a d d [ s t a c k o v e r f l o w ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { s t a c k o v e r f l o w . c o m / u s e r s / # 3 } } } { } %
2021-03-28 23:58:26 -07:00
\ i f t h e n e l s e { \ e q u a l { # 1 } { b i t b u c k e t } } { \ c o l l e c t i o n a d d [ b i t b u c k e t ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { b i t b u c k e t . o r g / # 3 } } } { } %
2020-10-24 01:03:10 +02:00
\ i f t h e n e l s e { \ e q u a l { # 1 } { s k y p e } } { \ c o l l e c t i o n a d d [ s k y p e ] { s o c i a l s } { # 3 } } { } %
\ i f t h e n e l s e { \ e q u a l { # 1 } { o r c i d } } { \ c o l l e c t i o n a d d [ o r c i d ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { o r c i d . o r g / # 3 } } } { } %
\ i f t h e n e l s e { \ e q u a l { # 1 } { r e s e a r c h g a t e } } { \ c o l l e c t i o n a d d [ r e s e a r c h g a t e ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { w w w . r e s e a r c h g a t e . n e t / p r o f i l e / # 3 } } } { } %
\ i f t h e n e l s e { \ e q u a l { # 1 } { r e s e a r c h e r i d } } { \ c o l l e c t i o n a d d [ r e s e a r c h e r i d ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { w w w . r e s e a r c h e r i d . c o m / r i d / # 3 } } } { } %
\ i f t h e n e l s e { \ e q u a l { # 1 } { t e l e g r a m } } { \ c o l l e c t i o n a d d [ t e l e g r a m ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { t . m e / # 3 } } } { } %
2021-02-07 13:43:50 +01:00
\ i f t h e n e l s e { \ e q u a l { # 1 } { w h a t s a p p } } { \ c o l l e c t i o n a d d [ w h a t s a p p ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { w a . m e / # 3 } } } { } %
\ i f t h e n e l s e { \ e q u a l { # 1 } { s i g n a l } } { \ c o l l e c t i o n a d d [ s i g n a l ] { s o c i a l s } { # 3 } } { } %
\ i f t h e n e l s e { \ e q u a l { # 1 } { m a t r i x } } { \ c o l l e c t i o n a d d [ m a t r i x ] { s o c i a l s } { \ h t t p s l i n k [ # 3 ] { m a t r i x . t o / \ # / # 3 } } } { } %
2022-02-21 14:52:36 +02:00
\ i f t h e n e l s e { \ e q u a l { # 1 } { g o o g l e s c h o l a r } } { \ c o l l e c t i o n a d d [ g o o g l e s c h o l a r ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { s c h o l a r . g o o g l e . c o m / c i t a t i o n s ? u s e r = # 3 } } } { } %
\ i f t h e n e l s e { \ e q u a l { # 1 } { c o d e b e r g } } { \ c o l l e c t i o n a d d [ c o d e b e r g ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { c o d e b e r g . o r g / # 3 } } } { } %
2022-03-08 20:09:00 +02:00
\ i f t h e n e l s e { \ e q u a l { # 1 } { d i s c o r d } } { \ c o l l e c t i o n a d d [ d i s c o r d ] { s o c i a l s } { # 3 } } { } %
2022-08-23 20:24:33 +01:00
\ i f t h e n e l s e { \ e q u a l { # 1 } { t w i t c h } } { \ c o l l e c t i o n a d d [ t w i t c h ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { t w i t c h . t v / # 3 } } } { } %
\ i f t h e n e l s e { \ e q u a l { # 1 } { y o u t u b e } } { \ c o l l e c t i o n a d d [ y o u t u b e ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { y o u t u b e . c o m / # 3 } } } { } %
\ i f t h e n e l s e { \ e q u a l { # 1 } { t i k t o k } } { \ c o l l e c t i o n a d d [ t i k t o k ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { t i k t o k . c o m / @ # 3 } } } { } %
\ i f t h e n e l s e { \ e q u a l { # 1 } { i n s t a g r a m } } { \ c o l l e c t i o n a d d [ i n s t a g r a m ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { i n s t a g r a m . c o m / # 3 } } } { } %
2022-08-23 20:47:06 +01:00
\ i f t h e n e l s e { \ e q u a l { # 1 } { s o u n d c l o u d } } { \ c o l l e c t i o n a d d [ s o u n d c l o u d ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { s o u n d c l o u d . c o m / # 3 } } } { } %
2022-08-23 20:40:31 +01:00
\ i f t h e n e l s e { \ e q u a l { # 1 } { s t e a m } } { \ c o l l e c t i o n a d d [ s t e a m ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { s t e a m c o m m u n i t y . c o m / i d / # 3 } } } { } %
\ i f t h e n e l s e { \ e q u a l { # 1 } { x b o x } } { \ c o l l e c t i o n a d d [ x b o x ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { a c c o u n t . x b o x . c o m / p r o f i l e ? g a m e r t a g = # 3 } } } { } %
\ i f t h e n e l s e { \ e q u a l { # 1 } { p l a y s t a t i o n } } { \ c o l l e c t i o n a d d [ p l a y s t a t i o n ] { s o c i a l s } { # 3 } } { } %
\ i f t h e n e l s e { \ e q u a l { # 1 } { b a t t l e n e t } } { \ c o l l e c t i o n a d d [ b a t t l e n e t ] { s o c i a l s } { # 3 } } { } %
2024-05-02 13:46:38 -04:00
\ i f t h e n e l s e { \ e q u a l { # 1 } { a r x i v } } { \ c o l l e c t i o n a d d [ a r x i v ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { a r x i v . o r g / a / # 3 } } } { } %
2025-06-05 16:42:12 +02:00
\ i f t h e n e l s e { \ e q u a l { # 1 } { i n s p i r e } } { \ c o l l e c t i o n a d d [ i n s p i r e ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { i n s p i r e h e p . n e t / a u t h o r s / # 3 } } } { } %
2025-02-22 20:43:18 +01:00
\ i f t h e n e l s e { \ e q u a l { # 1 } { s i m p l e x } } { \ c o l l e c t i o n a d d [ s i m p l e x ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { s i m p l e x . c h a t / # 3 } } } { } %
\ i f t h e n e l s e { \ e q u a l { # 1 } { t h r e e m a } } { \ c o l l e c t i o n a d d [ t h r e e m a ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { t h r e e m a . i d / # 3 } } } { } %
2026-02-01 22:15:20 +01:00
\ i f t h e n e l s e { \ e q u a l { # 1 } { m e d i u m } } { \ c o l l e c t i o n a d d [ m e d i u m ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { m e d i u m . c o m / # 3 } } } { } %
2020-10-18 17:19:00 +02:00
}
2021-01-26 12:57:04 +01:00
{ \ c o l l e c t i o n a d d [ # 1 ] { s o c i a l s } { \ p r o t e c t \ h t t p s l i n k [ # 3 ] { # 2 } } } } %
2013-04-22 23:51:11 -04:00
2012-12-07 01:47:07 -05:00
% d e f i n e s a d d i t i o n a l p e r s o n a l information ( o p t i o n a l )
% u s a g e : \ e x t r a i n f o { < t e x t > }
\ n e w c o m m a n d * { \ e x t r a i n f o } [ 1 ] { \ d e f \ @ e x t r a i n f o { # 1 } }
2012-03-19 02:35:42 -04:00
% c o l o r s
2013-04-22 23:51:11 -04:00
% - - - - - - -
2012-03-19 02:35:42 -04:00
\ d e f i n e c o l o r { c o l o r 0 } { r g b } { 0 , 0 , 0 } % m a i n default color , n o r m a l l y l e f t to b l a c k
2013-04-22 23:51:11 -04:00
\ d e f i n e c o l o r { c o l o r 1 } { r g b } { 0 , 0 , 0 } % primary s c h e m e color
\ d e f i n e c o l o r { c o l o r 2 } { r g b } { 0 , 0 , 0 } % s e c o n d a r y s c h e m e color
\ d e f i n e c o l o r { c o l o r 3 } { r g b } { 0 , 0 , 0 } % t e r t i a r y s c h e m e color
2012-03-19 02:35:42 -04:00
2011-12-12 01:23:29 +01:00
% s y m b o l s
2013-04-22 23:51:11 -04:00
% - - - - - - - -
% i t e m i z e labels ( t h e s t r u t s w e r e a d d e d to c o r r e c t i n t e r - i t e m s p a c i n g ( w o r k s for single line i t e m s , u n t i l a s o l u t i o n is f o u n d for m u l t i - l i n e o n e s . . . )
\ n e w c o m m a n d * { \ l a b e l i t e m i } { \ s t r u t \ t e x t c o l o r { c o l o r 1 } { \ l a r g e \ r m f a m i l y \ t e x t b u l l e t } } % t h e \ r m f a m i l y is r e q u i r e d to f o r c e L a t i n M o d e r n f o n t s when using s a n s s e r i f , as O M S / l m s s / m / n is not defined and g e t s s u b s t i t u t e d by O M S / c m s y / m / n
\ n e w c o m m a n d * { \ l a b e l i t e m i i } { \ s t r u t \ t e x t c o l o r { c o l o r 1 } { \ l a r g e \ b f s e r i e s - } }
\ n e w c o m m a n d * { \ l a b e l i t e m i i i } { \ s t r u t \ t e x t c o l o r { c o l o r 1 } { \ r m f a m i l y \ t e x t p e r i o d c e n t e r e d } } % a l t e r n a t i v e : \ t e x t a s t e r i s k c e n t e r e d ; t h e \ r m f a m i l y is r e q u i r e d to f o r c e L a t i n M o d e r n f o n t s when using s a n s s e r i f , as O M S / l m s s / m / n is not defined and g e t s s u b s t i t u t e d by O M S / c m s y / m / n
\ n e w c o m m a n d * { \ l a b e l i t e m i v } { \ l a b e l i t e m i i i }
% e n u m e r a t e labels
\ r e n e w c o m m a n d { \ t h e e n u m i } { \ @ a r a b i c \ c @ e n u m i }
\ r e n e w c o m m a n d { \ t h e e n u m i i } { \ @ a l p h \ c @ e n u m i i }
\ r e n e w c o m m a n d { \ t h e e n u m i i i } { \ @ r o m a n \ c @ e n u m i i i }
\ r e n e w c o m m a n d { \ t h e e n u m i v } { \ @ A l p h \ c @ e n u m i v }
% o t h e r s y m b o l s
2020-09-27 23:55:48 +02:00
\ n e w c o m m a n d * { \ l i s t i t e m s y m b o l } { \ l a b e l i t e m i ~ }
\ n e w c o m m a n d * { \ a d d r e s s s y m b o l } { }
2021-02-10 10:03:43 +01:00
\ n e w c o m m a n d * { \ b o r n s y m b o l } { }
2020-09-27 23:55:48 +02:00
\ n e w c o m m a n d * { \ m o b i l e p h o n e s y m b o l } { }
\ n e w c o m m a n d * { \ f i x e d p h o n e s y m b o l } { }
\ n e w c o m m a n d * { \ f a x p h o n e s y m b o l } { }
\ n e w c o m m a n d * { \ e m a i l s y m b o l } { }
\ n e w c o m m a n d * { \ h o m e p a g e s y m b o l } { }
\ n e w c o m m a n d * { \ l i n k e d i n s o c i a l s y m b o l } { }
\ n e w c o m m a n d * { \ x i n g s o c i a l s y m b o l } { }
\ n e w c o m m a n d * { \ t w i t t e r s o c i a l s y m b o l } { }
2022-02-21 14:52:36 +02:00
\ n e w c o m m a n d * { \ m a s t o d o n s o c i a l s y m b o l } { }
2020-09-27 23:55:48 +02:00
\ n e w c o m m a n d * { \ g i t h u b s o c i a l s y m b o l } { }
\ n e w c o m m a n d * { \ g i t l a b s o c i a l s y m b o l } { }
\ n e w c o m m a n d * { \ s t a c k o v e r f l o w s o c i a l s y m b o l } { }
2020-10-08 22:18:14 +02:00
\ n e w c o m m a n d * { \ b i t b u c k e t s o c i a l s y m b o l } { }
2020-09-27 23:55:48 +02:00
\ n e w c o m m a n d * { \ s k y p e s o c i a l s y m b o l } { }
\ n e w c o m m a n d * { \ o r c i d s o c i a l s y m b o l } { }
\ n e w c o m m a n d * { \ r e s e a r c h g a t e s o c i a l s y m b o l } { }
2021-01-26 12:57:04 +01:00
\ n e w c o m m a n d * { \ r e s e a r c h e r i d s o c i a l s y m b o l } { }
2020-09-27 23:55:48 +02:00
\ n e w c o m m a n d * { \ g o o g l e s c h o l a r s o c i a l s y m b o l } { }
2020-10-18 17:19:00 +02:00
\ n e w c o m m a n d * { \ t e l e g r a m s o c i a l s y m b o l } { }
2021-02-07 13:43:50 +01:00
\ n e w c o m m a n d * { \ w h a t s a p p s o c i a l s y m b o l } { }
\ n e w c o m m a n d * { \ m a t r i x s o c i a l s y m b o l } { }
\ n e w c o m m a n d * { \ s i g n a l s o c i a l s y m b o l } { }
2022-02-21 14:52:36 +02:00
\ n e w c o m m a n d * { \ c o d e b e r g s o c i a l s y m b o l } { }
2022-08-23 20:24:33 +01:00
\ n e w c o m m a n d * { \ d i s c o r d s o c i a l s y m b o l } { }
\ n e w c o m m a n d * { \ t w i t c h s o c i a l s y m b o l } { }
\ n e w c o m m a n d * { \ y o u t u b e s o c i a l s y m b o l } { }
\ n e w c o m m a n d * { \ t i k t o k s o c i a l s y m b o l } { }
\ n e w c o m m a n d * { \ i n s t a g r a m s o c i a l s y m b o l } { }
2022-08-23 20:47:06 +01:00
\ n e w c o m m a n d * { \ s o u n d c l o u d s o c i a l s y m b o l } { }
2022-08-23 20:40:31 +01:00
\ n e w c o m m a n d * { \ s t e a m s o c i a l s y m b o l } { }
\ n e w c o m m a n d * { \ x b o x s o c i a l s y m b o l } { }
\ n e w c o m m a n d * { \ p l a y s t a t i o n s o c i a l s y m b o l } { }
\ n e w c o m m a n d * { \ b a t t l e n e t s o c i a l s y m b o l } { }
2024-05-02 13:46:38 -04:00
\ n e w c o m m a n d * { \ a r x i v s o c i a l s y m b o l } { }
\ n e w c o m m a n d * { \ i n s p i r e s o c i a l s y m b o l } { }
2025-02-22 20:43:18 +01:00
\ n e w c o m m a n d * { \ s i m p l e x s o c i a l s y m b o l } { }
\ n e w c o m m a n d * { \ t h r e e m a s o c i a l s y m b o l } { }
2026-02-01 22:15:20 +01:00
\ n e w c o m m a n d * { \ m e d i u m s o c i a l s y m b o l } { }
2020-10-18 17:19:00 +02:00
2013-04-22 23:51:11 -04:00
% o t h e r
% - - - - - -
2012-03-26 01:34:25 +02:00
% f o n t s
2011-12-12 01:23:29 +01:00
\ A t B e g i n D o c u m e n t { \ n o r m a l f o n t \ c o l o r { c o l o r 0 } }
2012-07-29 22:37:45 +02:00
% s t r i n g s for i n t e r n a t i o n a l i s a t i o n
\ n e w c o m m a n d * { \ r e f n a m e } { P u b l i c a t i o n s }
\ n e w c o m m a n d * { \ e n c l n a m e } { E n c l o s u r e }
2012-03-19 02:35:42 -04:00
% m a k e s t h e f o o t e r ( n o r m a l l y u s e d b o t h for t h e r e s u m e and t h e l e t t e r )
% u s a g e : \ m a k e f o o t e r
\ n e w c o m m a n d * { \ m a k e f o o t e r } { } %
2015-08-30 23:44:56 -07:00
\ n e w c o m m a n d * { \ @ l o a d m o d e r n c v p a c k a g e } [ 3 ] [ ] { %
\ b e g i n g r o u p \ e def \ x { \ e n d g r o u p %
\ n o e x p a n d \ R e q u i r e P a c k a g e [ # 1 ] { m o d e r n c v # 2 \ i f c a s e # 3 \ o r i \ o r i i \ o r i i i \ o r i v \ o r v \ o r v i \ o r v i i \ o r v i i i \ o r i x \ o r x \ f i } %
} \ x }
2014-02-17 16:00:06 -05:00
% l o a d s a s t y l e v a r i a n t ( a c o m b i n a t i o n of header , b o d y and f o o t e r )
2013-03-25 03:29:27 -04:00
% u s a g e : \ m o d e r n c v s t y l e { < s t y l e v a r i a n t n a m e > }
2015-08-30 23:44:56 -07:00
\ n e w c o m m a n d * { \ m o d e r n c v s t y l e } [ 2 ] [ ] { %
2014-01-20 18:48:49 -05:00
\ R e q u i r e P a c k a g e [ # 1 ] { m o d e r n c v s t y l e # 2 } }
2014-02-17 16:00:06 -05:00
% l o a d s a header v a r i a n t
2015-07-29 00:51:44 -07:00
% u s a g e : \ m o d e r n c v h e a d [ < o p t i o n a l h e a d option > ] { < h e a d e r v a r i a n t n u m b e r > }
2015-08-30 23:44:56 -07:00
\ n e w c o m m a n d * { \ m o d e r n c v h e a d } [ 2 ] [ ] { %
\ @ l o a d m o d e r n c v p a c k a g e [ # 1 ] { h e a d } { # 2 } }
2014-02-17 16:00:06 -05:00
% l o a d s a b o d y v a r i a n t
2015-07-29 00:51:44 -07:00
% u s a g e : \ m o d e r n c v b o d y [ < o p t i o n a l b o d y option > ] { < b o d y v a r i a n t n u m b e r > }
2015-08-30 23:44:56 -07:00
\ n e w c o m m a n d * { \ m o d e r n c v b o d y } [ 2 ] [ ] { %
\ @ l o a d m o d e r n c v p a c k a g e [ # 1 ] { b o d y } { # 2 } }
2014-02-17 16:00:06 -05:00
% l o a d s a f o o t e r v a r i a n t
2015-08-30 23:44:56 -07:00
% u s a g e : \ m o d e r n c v f o o t [ < o p t i o n a l f o o t option > ] { < f o o t v a r i a n t n u m b e r > }
\ n e w c o m m a n d * { \ m o d e r n c v f o o t } [ 2 ] [ ] { %
\ @ l o a d m o d e r n c v p a c k a g e [ # 1 ] { f o o t } { # 2 } }
2018-04-17 12:53:50 +03:00
2011-12-12 01:23:29 +01:00
% l o a d s a color s c h e m e
2013-03-25 03:29:27 -04:00
% u s a g e : \ m o d e r n c v c o l o r { < c o l o r s c h e m e n a m e > }
2015-08-30 23:44:56 -07:00
\ n e w c o m m a n d * { \ m o d e r n c v c o l o r } [ 1 ] { %
2011-12-12 01:23:29 +01:00
\ R e q u i r e P a c k a g e { m o d e r n c v c o l o r # 1 } }
2013-03-25 03:29:27 -04:00
% l o a d s a n i c o n s set
% u s a g e : \ m o d e r n c v i c o n s { < i c o n s e t n a m e > }
2015-08-30 23:44:56 -07:00
\ n e w c o m m a n d * { \ m o d e r n c v i c o n s } [ 1 ] { %
2020-10-05 21:04:58 +02:00
\ R e q u i r e P a c k a g e { m o d e r n c v i c o n s # 1 } }
2013-03-25 03:29:27 -04:00
2012-03-26 01:34:25 +02:00
% r e c o m p u t e s all automatic l e n g t h s
2014-02-17 16:00:06 -05:00
\ n e w c o m m a n d * { \ r e c o m p u t e h e a d l e n g t h s } { \ r e c o m p u t e c v h e a d l e n g t h s }
\ n e w c o m m a n d * { \ r e c o m p u t e b o d y l e n g t h s } { \ r e c o m p u t e c v b o d y l e n g t h s }
\ n e w c o m m a n d * { \ r e c o m p u t e f o o t l e n g t h s } { \ r e c o m p u t e c v f o o t l e n g t h s }
2012-03-19 02:35:42 -04:00
\ n e w c o m m a n d * { \ r e c o m p u t e l e n g t h s } { \ r e c o m p u t e c v l e n g t h s }
2011-12-12 01:23:29 +01:00
\ A t B e g i n D o c u m e n t { \ r e c o m p u t e l e n g t h s { } }
2010-05-19 01:55:34 +02:00
2015-07-29 00:51:44 -07:00
% c r e a t e s a command if not y e t defined
\ n e w c o m m a n d * { \ @ i n i t i a l i z e c o m m a n d } [ 2 ] { %
\ i f d e f i n e d # 1
\ r e n e w c o m m a n d { # 1 } { # 2 } %
\ else %
\ n e w c o m m a n d * { # 1 } { # 2 } \ f i }
2012-03-26 01:34:25 +02:00
% c r e a t e s a length if not y e t defined
\ n e w c o m m a n d * { \ @ i n i t i a l i z e l e n g t h } [ 1 ] { %
2014-02-17 16:00:06 -05:00
\ i f d e f i n e d # 1
\ else %
2015-07-29 00:51:44 -07:00
\ n e w l e n g t h { # 1 } \ f i %
\ s e t l e n g t h { # 1 } { 0 p t } }
2014-02-17 16:00:06 -05:00
2014-02-17 20:24:21 -05:00
% c r e a t e s a box if not y e t defined
2014-02-17 16:00:06 -05:00
\ n e w c o m m a n d * { \ @ i n i t i a l i z e b o x } [ 1 ] { %
\ i f d e f i n e d # 1
\ s a v e b o x { # 1 } { } %
\ else %
\ n e w s a v e b o x { # 1 } \ f i }
2012-03-26 01:34:25 +02:00
2014-02-17 20:24:21 -05:00
% c r e a t e s a n if s w i t c h if not y e t defined
\ n e w c o m m a n d * { \ @ i n i t i a l i z e i f } [ 1 ] { %
2015-07-29 00:51:44 -07:00
% \ i f d e f i n e d # 1 % not w o r k i n g d u e to t h e n e s t e d \ if
% \ else %
\ n e w i f # 1 % \ f i
}
2014-02-17 20:24:21 -05:00
2015-07-29 00:51:44 -07:00
% c u s t o m s t r u t for s p a c i n g ; t h e first a r g u m e n t is t h e vertical o f f s e t of t h e s t r u t , t h e s e c o n d i t s total height
2014-02-17 20:24:21 -05:00
\ n e w c o m m a n d * { \ @ m o d e r n c v s t r u t } [ 2 ] { %
2015-07-29 00:51:44 -07:00
\ rule [ - # 1 ] { 0 p t } { # 2 } }
2014-02-17 20:24:21 -05:00
2010-05-19 01:55:34 +02:00
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2012-03-19 02:35:42 -04:00
% r e s u m e d e s i g n c o m m a n d s d e f i n i t i o n s
2010-05-19 01:55:34 +02:00
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2012-03-19 02:35:42 -04:00
% e l e m e n t s
2012-12-07 02:04:01 -05:00
% d e f i n e s o n e ' s p i c t u r e ( o p t i o n a l )
% u s a g e : p h o t o [ < p i c t u r e width > ] [ < p i c t u r e frame t h i c k n e s s > ] { < p i c t u r e f i l e n a m e > }
\ N e w D o c u m e n t C o m m a n d { \ p h o t o } { O { 6 4 p t } O { 0 . 4 p t } m } { \ d e f \ @ p h o t o w i d t h { # 1 } \ d e f \ @ p h o t o f r a m e w i d t h { # 2 } \ d e f \ @ p h o t o { # 3 } }
2010-05-19 01:55:34 +02:00
\ n e w c o m m a n d * { \ q u o t e } [ 1 ] { \ d e f \ @ q u o t e { # 1 } }
2012-03-19 02:35:42 -04:00
% f o n t s
\ n e w c o m m a n d * { \ n a m e f o n t } { }
\ n e w c o m m a n d * { \ t i t l e f o n t } { }
\ n e w c o m m a n d * { \ a d d r e s s f o n t } { }
\ n e w c o m m a n d * { \ q u o t e f o n t } { }
\ n e w c o m m a n d * { \ s e c t i o n f o n t } { }
\ n e w c o m m a n d * { \ s u b s e c t i o n f o n t } { }
\ n e w c o m m a n d * { \ h i n t f o n t } { }
2013-03-17 19:15:37 -04:00
\ n e w c o m m a n d * { \ p a g e n u m b e r f o n t } { \ a d d r e s s f o n t \ i t s h a p e }
2014-02-01 09:49:02 -05:00
% f a k e s m a l l caps - c f r h t t p : //tex.stackexchange.com/questions/55664/fake-small-caps-with-xetex-fontspec
% \ def \ f a k e s c { \ b g r o u p \ o b e y s p a c e s \ f a k e s c a u x }
% \ def \ f a k e s c a u x # 1 { \ f a k e s c a u x i i # 1 \ r e l a x \ r e l a x \ e g r o u p }
% \ def \ f a k e s c a u x i i # 1 { %
% \ i f x \ r e l a x # 1 \ else \ i f c a t # 1 \ @ s p t o k e n { } \ e x p a n d a f t e r \ e x p a n d a f t e r \ e x p a n d a f t e r \ f a k e s c a u x i i \ else
% \ i f n u m ` # 1 = \ u c c o d e ` # 1 { \ n o r m a l s i z e # 1 } \ else { \ f o o t n o t e s i z e \ u p p e r c a s e { # 1 } } \ f i \ e x p a n d a f t e r \ e x p a n d a f t e r \ e x p a n d a f t e r \ f a k e s c a u x i i \ e x p a n d a f t e r \ f i \ f i }
2012-03-19 02:35:42 -04:00
2012-10-08 17:33:09 -04:00
% s t y l e s
\ n e w c o m m a n d * { \ n a m e s t y l e } [ 1 ] { { \ n a m e f o n t # 1 } }
2024-05-04 15:08:51 +03:00
\ N e w D o c u m e n t C o m m a n d { \ f i r s t n a m e s t y l e } { + m } { { \ n a m e f o n t # 1 } }
\ N e w D o c u m e n t C o m m a n d { \ l a s t n a m e s t y l e } { + m } { { \ n a m e f o n t # 1 } }
2012-10-08 17:33:09 -04:00
\ n e w c o m m a n d * { \ t i t l e s t y l e } [ 1 ] { { \ t i t l e f o n t # 1 } }
\ n e w c o m m a n d * { \ a d d r e s s s t y l e } [ 1 ] { { \ a d d r e s s f o n t # 1 } }
\ n e w c o m m a n d * { \ q u o t e s t y l e } [ 1 ] { { \ q u o t e f o n t # 1 } }
\ n e w c o m m a n d * { \ s e c t i o n s t y l e } [ 1 ] { { \ s e c t i o n f o n t # 1 } }
\ n e w c o m m a n d * { \ s u b s e c t i o n s t y l e } [ 1 ] { { \ s u b s e c t i o n f o n t # 1 } }
\ n e w c o m m a n d * { \ h i n t s t y l e } [ 1 ] { { \ h i n t f o n t # 1 } }
2013-03-17 19:15:37 -04:00
\ n e w c o m m a n d * { \ p a g e n u m b e r s t y l e } [ 1 ] { { \ p a g e n u m b e r f o n t # 1 } }
2012-10-08 17:33:09 -04:00
2012-03-19 02:35:42 -04:00
% r e c o m p u t e all r e s u m e l e n g t h s
2014-02-17 16:00:06 -05:00
\ n e w c o m m a n d * { \ r e c o m p u t e c v h e a d l e n g t h s } { }
\ n e w c o m m a n d * { \ r e c o m p u t e c v b o d y l e n g t h s } { }
\ n e w c o m m a n d * { \ r e c o m p u t e c v f o o t l e n g t h s } { }
\ n e w c o m m a n d * { \ r e c o m p u t e c v l e n g t h s } { %
\ r e c o m p u t e c v h e a d l e n g t h s %
\ r e c o m p u t e c v b o d y l e n g t h s %
\ r e c o m p u t e c v f o o t l e n g t h s }
2010-05-19 01:55:34 +02:00
2012-03-25 01:28:58 -04:00
% i n t e r n a l m a k e t i t l e command to i s s u e a new line o n l y when r e q u i r e d
\ n e w i f \ if @ f i r s t d e t a i l s e l e m e n t \ @ f i r s t d e t a i l s e l e m e n t t r u e
2015-07-29 00:51:44 -07:00
\ n e w c o m m a n d * { \ m a k e n e w l i n e } [ 1 ] [ 0 p t ] { %
2012-03-25 01:28:58 -04:00
\ if @ f i r s t d e t a i l s e l e m e n t %
\ s t r u t % to e n s u r e b a s e l i n e a l i g n m e n t , e . g . with when put in t h e m a r g i n v s s e c t i o n s t h a t a l s o contains a \ s t r u t
\ else %
2015-07-29 00:51:44 -07:00
\ \ [ # 1 ] \ f i %
2012-03-25 01:28:58 -04:00
\ @ f i r s t d e t a i l s e l e m e n t f a l s e }
2012-03-19 02:35:42 -04:00
% m a k e s t h e r e s u m e title
% u s a g e : \ m a k e c v t i t l e
2015-07-29 00:51:44 -07:00
\ n e w c o m m a n d * { \ m a k e c v t i t l e } { %
\ m a k e c v h e a d %
\ m a k e c v f o o t }
\ n e w c o m m a n d * { \ m a k e c v h e a d } { }
\ n e w c o m m a n d * { \ m a k e c v f o o t } { }
2010-05-19 01:55:34 +02:00
2012-03-19 02:35:42 -04:00
% m a k e s a r e s u m e section
2010-05-19 02:31:17 +02:00
% u s a g e : \ section { < t i t l e > }
2013-02-15 02:06:59 -05:00
% i d e n t i c a l s t a r r e d and n o n - s t a r r e d v a r i a n t s s h o u l d b e defined for c o m p a t i b i l i t y with o t h e r p a c k a g e s ( e . g . with n a t b i b , t h a t u s e s \ section * { } for t h e b i b l i o g r a p h y header )
\ N e w D o c u m e n t C o m m a n d { \ s e c t i o n } { s m } { }
2010-05-19 01:55:34 +02:00
2012-03-19 02:35:42 -04:00
% m a k e s a r e s u m e s u b s e c t i o n
2010-05-19 02:31:17 +02:00
% u s a g e : \ s u b s e c t i o n { t i t l e }
2013-02-15 02:06:59 -05:00
\ N e w D o c u m e n t C o m m a n d { \ s u b s e c t i o n } { s m } { }
2011-12-12 01:23:29 +01:00
2012-03-19 02:35:42 -04:00
% m a k e s a r e s u m e line with a header and a c o r r e s p o n d i n g text
2011-12-12 01:23:29 +01:00
% u s a g e : \ c v i t e m [ s p a c i n g ] { h e a d e r } { t e x t }
\ n e w c o m m a n d * { \ c v i t e m } [ 3 ] [ . 25 e m ] { }
2010-05-19 01:55:34 +02:00
2012-03-19 02:35:42 -04:00
% m a k e s a r e s u m e line 2 h e a d e r s and t h e i r c o r r e s p o n d i n g text
2011-12-12 01:23:29 +01:00
% u s a g e : \ c v d o u b l e i t e m [ s p a c i n g ] { h e a d e r 1 } { t e x t 1 } { h e a d e r 2 } { t e x t 2 }
\ n e w c o m m a n d * { \ c v d o u b l e i t e m } [ 5 ] [ . 25 e m ] { }
2024-05-21 18:50:07 +02:00
% m a k e s a r e s u m e line 3 h e a d e r s and t h e i r c o r r e s p o n d i n g text
% u s a g e : \ c v t r i p l e i t e m [ s p a c i n g ] { h e a d e r 1 } { t e x t 1 } { h e a d e r 2 } { t e x t 2 } { h e a d e r 3 } { t e x t 3 }
\ n e w c o m m a n d * { \ c v t r i p l e i t e m } [ 7 ] [ . 1 e m ] { }
2012-03-19 02:35:42 -04:00
% m a k e s a r e s u m e line with a l i s t item
2024-04-17 16:29:57 -04:00
% u s a g e : \ c v l i s t i t e m [ s p a c i n g ] { i t e m }
2011-12-19 00:50:29 +01:00
\ n e w c o m m a n d * { \ c v l i s t i t e m } [ 2 ] [ \ l i s t i t e m s y m b o l ] { }
2011-12-12 01:23:29 +01:00
2012-03-19 02:35:42 -04:00
% m a k e s a r e s u m e line with 2 l i s t i t e m s
2024-04-17 16:29:57 -04:00
% u s a g e : \ c v l i s t d o u b l e i t e m [ s p a c i n g ] { i t e m 1 } { i t e m 2 }
2011-12-19 00:50:29 +01:00
\ n e w c o m m a n d * { \ c v l i s t d o u b l e i t e m } [ 3 ] [ \ l i s t i t e m s y m b o l ] { }
2011-12-12 01:23:29 +01:00
2012-03-19 02:35:42 -04:00
% m a k e s a t y p i c a l r e s u m e j o b / e d u c a t i o n entry
2025-09-06 13:54:28 -04:00
% u s a g e : \ c v e n t r y [ s p a c i n g ] { y e a r s } { d e g r e e / j o b t i t l e } { i n s t i t u t i o n / e m p l o y e r } { l o c a l i z a t i o n } { o p t i o n a l : g r a d e / . . . } { o p t i o n a l : c o m m e n t / j o b d e s c r i p t i o n }
2012-02-04 16:14:01 +01:00
\ n e w c o m m a n d * { \ c v e n t r y } [ 7 ] [ . 25 e m ] { }
2010-05-19 01:55:34 +02:00
2012-03-19 02:35:42 -04:00
% m a k e s a r e s u m e entry with a p r o f i c i e n c y c o m m e n t
2011-12-19 00:50:29 +01:00
% u s a g e : \ c v i t e m w i t h c o m m e n t [ s p a c i n g ] { h e a d e r } { t e x t } { c o m m e n t }
2012-01-26 01:46:52 +01:00
\ n e w c o m m a n d * { \ c v i t e m w i t h c o m m e n t } [ 4 ] [ . 25 e m ] { }
2011-12-12 01:23:29 +01:00
% m a k e s a g e n e r i c h y p e r l i n k
2010-05-19 02:31:17 +02:00
% u s a g e : \ l i n k [ o p t i o n a l text ] { l i n k }
2023-03-16 11:14:41 +01:00
% u s e s p d f m a n a g e m e n t - t e s t p h a s e when available , w h i c h p r o v i d e s url e n c o d i n g of s p e c i a l c h a r a c t e r s
\ N e w D o c u m e n t C o m m a n d { \ l i n k } { O { } m } { %
\ I f P D F M a n a g e m e n t A c t i v e T F { %
\ i f t h e n e l s e { \ e q u a l { # 1 } { } } %
{ \ h r e f u r l [ u r l e n c o d e ] { # 2 } { # 2 } } %
{ \ h r e f u r l [ u r l e n c o d e ] { # 2 } { # 1 } } } { %
\ i f t h e n e l s e { \ e q u a l { # 1 } { } } %
{ \ h r e f { # 2 } { # 2 } } %
{ \ h r e f { # 2 } { # 1 } } } }
2010-05-19 01:55:34 +02:00
2011-12-12 01:23:29 +01:00
% m a k e s a h t t p h y p e r l i n k
2010-05-19 01:55:34 +02:00
% u s a g e : \ h t t p l i n k [ o p t i o n a l text ] { l i n k }
2023-03-16 11:14:41 +01:00
% u s e s p d f m a n a g e m e n t - t e s t p h a s e when available , w h i c h p r o v i d e s url e n c o d i n g of s p e c i a l c h a r a c t e r s
\ N e w D o c u m e n t C o m m a n d { \ h t t p l i n k } { O { } m } { %
\ I f P D F M a n a g e m e n t A c t i v e T F { %
\ i f t h e n e l s e { \ e q u a l { # 1 } { } } %
{ \ h r e f u r l [ u r l e n c o d e ] { h t t p : / / # 2 } { # 2 } } %
{ \ h r e f u r l [ u r l e n c o d e ] { h t t p : / / # 2 } { # 1 } } } { %
\ i f t h e n e l s e { \ e q u a l { # 1 } { } } %
{ \ h r e f { h t t p : / / # 2 } { # 2 } } %
{ \ h r e f { h t t p : / / # 2 } { # 1 } } } }
2020-09-27 23:20:45 +02:00
% m a k e s a n h t t p s h y p e r l i n k
2020-08-09 10:26:13 +02:00
% u s a g e : \ h t t p s l i n k [ o p t i o n a l text ] { l i n k }
2023-03-16 11:14:41 +01:00
% u s e s p d f m a n a g e m e n t - t e s t p h a s e when available , w h i c h p r o v i d e s url e n c o d i n g of s p e c i a l c h a r a c t e r s
\ N e w D o c u m e n t C o m m a n d { \ h t t p s l i n k } { O { } m } { %
\ I f P D F M a n a g e m e n t A c t i v e T F { %
\ i f t h e n e l s e { \ e q u a l { # 1 } { } } %
{ \ h r e f u r l [ u r l e n c o d e ] { h t t p s : / / # 2 } { # 2 } } %
{ \ h r e f u r l [ u r l e n c o d e ] { h t t p s : / / # 2 } { # 1 } } } { %
\ i f t h e n e l s e { \ e q u a l { # 1 } { } } %
{ \ h r e f { h t t p s : / / # 2 } { # 2 } } %
{ \ h r e f { h t t p s : / / # 2 } { # 1 } } } }
2020-08-09 10:26:13 +02:00
2011-12-12 01:23:29 +01:00
% m a k e s a n e m a i l h y p e r l i n k
2010-05-19 01:55:34 +02:00
% u s a g e : \ e m a i l l i n k [ o p t i o n a l text ] { l i n k }
\ n e w c o m m a n d * { \ e m a i l l i n k } [ 2 ] [ ] { %
\ i f t h e n e l s e { \ e q u a l { # 1 } { } } %
2010-05-19 02:31:17 +02:00
{ \ h r e f { m a i l t o : # 2 } { # 2 } } %
2022-01-11 14:27:02 +02:00
{ \ h r e f { m a i l t o : # 2 } { # 1 } } }
2018-04-17 12:53:50 +03:00
2016-11-14 05:34:33 +01:00
% m a k e s a t e l h y p e r l i n k
% u s a g e : \ t e l l i n k [ o p t i o n a l text ] { l i n k }
\ n e w c o m m a n d * { \ t e l l i n k } [ 2 ] [ ] { %
\ i f t h e n e l s e { \ e q u a l { # 1 } { } } %
{ \ e x p a n d a f t e r \ o n l y n u m b e r s l i n k \ e x p a n d a f t e r { # 2 } { # 2 } } %
{ \ e x p a n d a f t e r \ o n l y n u m b e r s l i n k \ e x p a n d a f t e r { # 2 } { # 1 } } }
\ E x p l S y n t a x O n
\ t l _ n e w : N \ l _ o n l y n u m b e r s l i n k _ t l
\ c s _ n e w : N p n \ o n l y n u m b e r s l i n k # 1 # 2 {
\ t l _ s e t : N n \ l _ o n l y n u m b e r s l i n k _ t l { # 1 }
\ r e g e x _ r e p l a c e _ a l l : n n N { [ ^ 0 - 9 + ] } { } \ l _ o n l y n u m b e r s l i n k _ t l
\ h r e f { t e l \ t o k e n _ t o _ s t r : N : \ t l _ u s e : N \ l _ o n l y n u m b e r s l i n k _ t l } { # 2 }
}
\ E x p l S y n t a x O f f
2010-05-19 01:55:34 +02:00
2013-02-09 01:32:24 -05:00
% c v c o l u m n s e n v i r o n m e n t , where e v e r y column is c r e a t e d through \ c v c o l u m n
% u s a g e : \ b e g i n { c v c o l u m n s }
% \ c v c o l u m n [ width ] { h e a d } { c o n t e n t }
% \ c v c o l u m n [ width ] { h e a d } { c o n t e n t }
% . . .
% \ end { c v c o l u m n s }
% where "width" is t h e width as a f r a c t i o n of t h e line length ( between 0 and 1 ) , "head" is t h e column header and "content" i t s c o n t e n t
\ n e w c o u n t e r { c v c o l u m n s c o u n t e r } % c o u n t e r for t h e n u m b e r of columns
\ n e w c o u n t e r { c v c o l u m n s a u t o w i d t h c o u n t e r } % c o u n t e r for t h e n u m b e r of columns with no column width p r o v i d e d , and w h i c h w i l l then b e e q u a l l y d i s t r i b u t e d
\ n e w c o u n t e r { t m p i t e r a t o r c o u n t e r } % c o u n t e r for any t e m p o r a r y p u r p o s e ( e . g . , i t e r a t i n g l o o p s )
2025-09-06 13:54:28 -04:00
\ n e w l e n g t h { \ c v c o l u m n s d u m m y w i d t h } \ s e t l e n g t h { \ c v c o l u m n s d u m m y w i d t h } { 1 0 0 0 p t } % d u m m y width for total width , in o r d e r to enable a r i t h m e t i c ( T e X h a s no float v a r i a b l e s , o n l y integer c o u n t e r s or l e n g t h s )
2013-02-09 01:32:24 -05:00
\ n e w l e n g t h { \ c v c o l u m n s w i d t h } % total width available for h e a d / c o n t e n t
\ n e w l e n g t h { \ c v c o l u m n s a u t o w i d t h } % total width of columns with no explicit width p r o v i d e d
\ n e w l e n g t h { \ c v c o l u m n a u t o w i d t h } % width of o n e of t h e columns with no explicit width p r o v i d e d ( b a s e d on e q u a l d i s t r i b u t i o n of r e m a i n i n g space )
\ n e w i f \ if @ c v c o l u m n s @ h e a d @ empty % w h e t h e r or not at l e a s t o n e of t h e columns h a s a header
\ n e w e n v i r o n m e n t * { c v c o l u m n s } %
{ % a t e n v i r o n m e n t o p e n i n g : r e s e t c o u n t e r s , l e n g t h s a n d i f s
\ s e t c o u n t e r { c v c o l u m n s c o u n t e r } { 0 } %
\ s e t c o u n t e r { c v c o l u m n s a u t o w i d t h c o u n t e r } { 0 } %
\ s e t l e n g t h { \ c v c o l u m n s a u t o w i d t h } { \ c v c o l u m n s d u m m y w i d t h } %
\ s e t l e n g t h { \ c v c o l u m n a u t o w i d t h } { 0 p t } %
2015-07-29 00:51:44 -07:00
\ @ c v c o l u m n s @ h e a d @ e m p t y t r u e \ i g n o r e s p a c e s } %
2013-02-09 01:32:24 -05:00
{ % a t e n v i r o n m e n t c l o s i n g : t y p e s e t e n v i r o n m e n t
% c o m p u t e t h e width of each c v c o l u m n , c o n s i d e r i n g a s p a c i n g of \ s e p a r a t o r c o l u m n w i d t h and t h e columns with set width
\ i f n u m \ t h e c v c o l u m n s c o u n t e r > 0 %
\ s e t l e n g t h { \ c v c o l u m n s w i d t h } { \ m a i n c o l u m n w i d t h - \ v a l u e { c v c o l u m n s c o u n t e r } \ s e p a r a t o r c o l u m n w i d t h + \ s e p a r a t o r c o l u m n w i d t h } %
\ s e t l e n g t h { \ c v c o l u m n a u t o w i d t h } { \ c v c o l u m n s w i d t h * \ r a t i o { \ c v c o l u m n s a u t o w i d t h } { \ c v c o l u m n s d u m m y w i d t h } / \ v a l u e { c v c o l u m n s a u t o w i d t h c o u n t e r } } \ f i %
% p r e - a g g r e g a t e t h e t a b u l a r d e f i n i t i o n , h e a d i n g and c o n t e n t ( r e q u i r e d b e f o r e c r e a t i n g t h e t a b u l a r , as t h e t a b u l a r e n v i r o n m e n t d o e s n ' t like l o o p s - - - p r o b a b l y b e c a u s e "&" g e n e r a t e s a \ e n d g r o u p )
% - t h e t a b u l a r d e f i n i t i o n is t h e a g g r e g a t i o n of t h e d i f f e r e n t "\cvcolumn<i>@def" ( by default "p{\cvcolumnautowidth}" ) , s e p a r a t e d by "@{\hspace*{\separatorcolumnwidth}}"
% - t h e t a b u l a r h e a d i n g is t h e a g g r e g a t i o n of t h e d i f f e r e n t "\cvcolumn<i>@head" , s e p a r a t e d by "&"
% - t h e t a b u l a r c o n t e n t is t h e a g g r e g a t i o n of t h e d i f f e r e n t "\cvcolumn<i>@content" , s e p a r a t e d by "&"
% to a g g r e g a t e t h e d i f f e r e n t e l e m e n t s , \ protected @ e def or \ g @ a d d t o @ m a c r o is r e q u i r e d to a v o i d t h a t \ c v c o l u m n s @ def , - @ h e a d and - @ c o n t e n t get e x p a n d e d in s u b s e q u e n t r e d e f i n i t i o n s , w h i c h w o u l d c a u s e e r r o r s d u e to t h e e x p a n s i o n s of \ h s p a c e , of \ s u b s e c t i o n s t y l e and p o s s i b l y of user c o n t e n t / a r g u m e n t s u c h as font c o m m a n d s
\ def \ c v c o l u m n s @ def { } %
\ def \ c v c o l u m n s @ h e a d { } %
\ def \ c v c o l u m n s @ c o n t e n t { } %
\ s e t c o u n t e r { t m p i t e r a t o r c o u n t e r } { 0 } %
% l o o p b a s e d on \ g @ a d d t o @ m a c r o
\ l o o p \ i f n u m \ t h e t m p i t e r a t o r c o u n t e r < \ t h e c v c o l u m n s c o u n t e r %
\ i f n u m \ t h e t m p i t e r a t o r c o u n t e r = 0 \ else %
\ g @ a d d t o @ m a c r o \ c v c o l u m n s @ def { @ { \ h s p a c e * { \ s e p a r a t o r c o l u m n w i d t h } } } %
\ g @ a d d t o @ m a c r o \ c v c o l u m n s @ h e a d { & } %
\ g @ a d d t o @ m a c r o \ c v c o l u m n s @ c o n t e n t { & } \ f i %
2014-02-17 15:59:16 -05:00
% \ e x p a n d a f t e r \ g @ a d d t o @ m a c r o \ e x p a n d a f t e r \ c v c o l u m n s @ def \ e x p a n d a f t e r { \ c s n a m e c v c o l u m n \ r o m a n { t m p i t e r a t o r c o u n t e r } @ d e f \ e n d c s n a m e } % % t h i s c r e a t e s i s s u e s with t h e c o l o r t b l " package (loaded by xcolor when passing the " table " option ) as t h e column d e f i n i t i o n s p a s s e d to \ b e g i n { t a b u l a r } contains \ c v c o l u m n < i > @ def r e f e r e n c e s t h a t i t d o e s n 't understand; the next 2 lines expand \cvcolumn@def to the point it doesn' t
\ e def \ t m p c v c o l u m n @ def { \ c s n a m e c v c o l u m n \ r o m a n { t m p i t e r a t o r c o u n t e r } @ d e f \ e n d c s n a m e } %
\ e x p a n d a f t e r \ g @ a d d t o @ m a c r o \ e x p a n d a f t e r \ c v c o l u m n s @ def \ e x p a n d a f t e r { \ t m p c v c o l u m n @ d e f } %
2013-02-09 01:32:24 -05:00
\ e x p a n d a f t e r \ g @ a d d t o @ m a c r o \ e x p a n d a f t e r \ c v c o l u m n s @ h e a d \ e x p a n d a f t e r { \ c s n a m e c v c o l u m n \ r o m a n { t m p i t e r a t o r c o u n t e r } @ h e a d \ e n d c s n a m e } %
\ e x p a n d a f t e r \ g @ a d d t o @ m a c r o \ e x p a n d a f t e r \ c v c o l u m n s @ c o n t e n t \ e x p a n d a f t e r { \ c s n a m e c v c o l u m n \ r o m a n { t m p i t e r a t o r c o u n t e r } @ c o n t e n t \ e n d c s n a m e } %
\ s t e p c o u n t e r { t m p i t e r a t o r c o u n t e r } %
\ repeat %
% % s a m e l o o p b a s e d on \ protected @ e def
% \ l o o p \ i f n u m \ t h e t m p i t e r a t o r c o u n t e r < \ t h e c v c o l u m n s c o u n t e r %
% \ i f n u m \ t h e t m p i t e r a t o r c o u n t e r = 0 \ else %
% \ protected @ e def \ c v c o l u m n s @ def { \ c v c o l u m n s @ d e f @ { \ h s p a c e * { \ s e p a r a t o r c o l u m n w i d t h } } } %
% \ protected @ e def \ c v c o l u m n s @ h e a d { \ c v c o l u m n s @ h e a d & } %
% \ protected @ e def \ c v c o l u m n s @ c o n t e n t { \ c v c o l u m n s @ c o n t e n t & } \ f i %
% \ e x p a n d a f t e r \ protected @ e def \ e x p a n d a f t e r \ c v c o l u m n s @ def \ e x p a n d a f t e r { \ e x p a n d a f t e r \ c v c o l u m n s @ d e f \ e x p a n d a f t e r \ p r o t e c t \ c s n a m e c v c o l u m n \ r o m a n { t m p i t e r a t o r c o u n t e r } @ d e f \ e n d c s n a m e } %
% \ e x p a n d a f t e r \ protected @ e def \ e x p a n d a f t e r \ c v c o l u m n s @ h e a d \ e x p a n d a f t e r { \ e x p a n d a f t e r \ c v c o l u m n s @ h e a d \ e x p a n d a f t e r \ p r o t e c t \ c s n a m e c v c o l u m n \ r o m a n { t m p i t e r a t o r c o u n t e r } @ h e a d \ e n d c s n a m e } %
% \ e x p a n d a f t e r \ protected @ e def \ e x p a n d a f t e r \ c v c o l u m n s @ c o n t e n t \ e x p a n d a f t e r { \ e x p a n d a f t e r \ c v c o l u m n s @ c o n t e n t \ e x p a n d a f t e r \ p r o t e c t \ c s n a m e c v c o l u m n \ r o m a n { t m p i t e r a t o r c o u n t e r } @ c o n t e n t \ e n d c s n a m e } %
% \ s t e p c o u n t e r { t m p i t e r a t o r c o u n t e r } %
% \ repeat %
% create t h e t a b u l a r
\ c v i t e m { } { %
2014-02-17 15:59:16 -05:00
% \ b e g i n { t a b u l a r } { \ c v c o l u m n s @ d e f } % t h i s c o n f l i c t s with t h e "colortbl" p a c k a g e ( l o a d e d by x c o l o r when p a s s i n g t h e "table" option ) , and r e q u i r e s t h e b e l o w 2 l i n e s to expand \ c v c o l u m n s @ def
2015-07-29 00:51:44 -07:00
\ def \ b e g i n c v c o l u m n s { \ b e g i n { t a b u l a r } [ t ] } % "[t]" is r e q u i r e d for some b o d y s t y l e s ; t h e default a l i g n m e n t is "[c]"
2014-02-17 15:59:16 -05:00
\ e x p a n d a f t e r \ b e g i n c v c o l u m n s \ e x p a n d a f t e r { \ c v c o l u m n s @ d e f } %
2013-02-09 01:32:24 -05:00
\ if @ c v c o l u m n s @ h e a d @ empty \ else %
2013-04-23 02:05:04 -04:00
\ c v c o l u m n s @ h e a d % \ \ [ - . 8 e m ] %
% { \ c o l o r { c o l o r 1 } \ r u l e { \ m a i n c o l u m n w i d t h } { . 2 5 p t } } %
\ \ \ f i %
2013-02-09 01:32:24 -05:00
\ c v c o l u m n s @ c o n t e n t %
\ end { t a b u l a r } } }
% c v c o l u m n command , to create a column i n s i d e a c v c o l u m n s e n v i r o n m e n t
% u s a g e : \ c v c o l u m n [ width ] { h e a d } { c o n t e n t }
% where "width" is t h e width as a f r a c t i o n of t h e line length ( between 0 and 1 ) , "head" is t h e column header and "content" i t s c o n t e n t ( "head" and "content" c a n c o n t a i n "\\" , "\newline" or any o t h e r p a r a g r a p h command s u c h as "itemize" )
\ n e w c o m m a n d * { \ c v c o l u m n } [ 3 ] [ \ c v c o l u m n a u t o w i d t h ] { %
% \ def \ c v c o l u m n @ width { } %
\ i f t h e n e l s e { \ e q u a l { # 1 } { \ c v c o l u m n a u t o w i d t h } } %
{ % i f n o w i d t h f r a c t i o n i s p r o v i d e d , c o u n t t h i s c o l u m n a s a u t o - a d j u s t e d a n d s e t i t s w i d t h t o \ c v c o l u m n s a u t o w i d t h
\ s t e p c o u n t e r { c v c o l u m n s a u t o w i d t h c o u n t e r } %
\ e x p a n d a f t e r \ e x p a n d a f t e r \ e x p a n d a f t e r \ def \ e x p a n d a f t e r \ c s n a m e c v c o l u m n \ r o m a n { c v c o l u m n s c o u n t e r } @ def \ e n d c s n a m e { p { \ c v c o l u m n a u t o w i d t h } } %
\ e x p a n d a f t e r \ e x p a n d a f t e r \ e x p a n d a f t e r \ def \ e x p a n d a f t e r \ c s n a m e c v c o l u m n \ r o m a n { c v c o l u m n s c o u n t e r } @ h e a d \ e n d c s n a m e { \ p r o t e c t \ p a r b o x [ b ] { \ c v c o l u m n a u t o w i d t h } { \ p r o t e c t \ s u b s e c t i o n s t y l e { # 2 } } } } %
{ % i f a w i d t h i s p r o v i d e d , s e t t h e w i d t h o f t h e c o l u m n t o i t a n d d e c r e a s e t h e a v a i l a b l e s p a c e f o r a u t o - a d j u s t e d c o l u m n s
\ a d d t o l e n g t h { \ c v c o l u m n s a u t o w i d t h } { - # 1 \ c v c o l u m n s d u m m y w i d t h } %
\ e x p a n d a f t e r \ e x p a n d a f t e r \ e x p a n d a f t e r \ def \ e x p a n d a f t e r \ c s n a m e c v c o l u m n \ r o m a n { c v c o l u m n s c o u n t e r } @ def \ e n d c s n a m e { p { # 1 \ c v c o l u m n s w i d t h } } %
\ e x p a n d a f t e r \ e x p a n d a f t e r \ e x p a n d a f t e r \ def \ e x p a n d a f t e r \ c s n a m e c v c o l u m n \ r o m a n { c v c o l u m n s c o u n t e r } @ h e a d \ e n d c s n a m e { \ p r o t e c t \ p a r b o x [ b ] { # 1 \ c v c o l u m n s w i d t h } { \ p r o t e c t \ s u b s e c t i o n s t y l e { # 2 } } } } %
\ i f t h e n e l s e { \ e q u a l { # 2 } { } } { } { \ @ c v c o l u m n s @ h e a d @ e m p t y f a l s e } %
\ e x p a n d a f t e r \ e x p a n d a f t e r \ e x p a n d a f t e r \ def \ e x p a n d a f t e r \ c s n a m e c v c o l u m n \ r o m a n { c v c o l u m n s c o u n t e r } @ c o n t e n t \ e n d c s n a m e { \ p r o t e c t \ c v c o l u m n c e l l { # 3 } } %
2015-07-29 00:51:44 -07:00
\ s t e p c o u n t e r { c v c o l u m n s c o u n t e r } %
\ i g n o r e s p a c e s }
2013-02-09 01:32:24 -05:00
% i n t e r n a l c v c o l u m n c e l l command , t h a t e n a b l e s a c v c o l u m n c e l l to c o n t a i n p a r a g r a p h c o m m a n d s ( l i s t s , n e w l i n e s , e t c )
\ n e w c o m m a n d * { \ c v c o l u m n c e l l } [ 1 ] { { % p u t c e l l i n s i d e a g r o u p , s o t h a t c o m m a n d r e d e f i n i t i o n s a r e o n l y l o c a l
% r o u g h l y r e s t o r e \ \ to i t s r e g u l a r d e f i n i t i o n ( o u t s i d e of t a b u l a r )
\ r e n e w c o m m a n d * { \ \ } { \ n e w l i n e } %
% e n c l o s e t h e contents of t h e c e l l i n s i d e a vertical box , to a l l o w p a r a g r a p h c o m m a n d s
\ p r o t e c t \ v t o p { # 1 } } }
2010-05-24 03:41:22 +02:00
% t h e b i b l i o g r a p h y e n v i r o n m e n t , for use with B i b T e X and p o s s i b l y m u l t i b i b
2010-05-19 02:26:05 +02:00
\ n e w l e n g t h { \ b i b i n d e n t }
\ s e t l e n g t h { \ b i b i n d e n t } { 1 . 5 e m }
% b i b l i o g r a p h y item label
\ n e w c o m m a n d * { \ b i b l i o g r a p h y i t e m l a b e l } { } % use \ @ b i b l a b e l { \ a r a b i c { e n u m i v } } for B i b T e X labels
2010-05-24 03:41:22 +02:00
% \ n e w i f \ if @ m u l t i b i b f i r s t b i b \ @ m u l t i b i b f i r s t b i b f a l s e
% b i b l i o g r a p h y h e a d ( section , e t c } , d e p e n d i n g on w h e t h e r m u l t i b i b is u s e d
\ n e w c o m m a n d * { \ b i b l i o g r a p h y h e a d } [ 1 ] { \ s e c t i o n { # 1 } }
\ A t E n d P r e a m b l e { \ @ i f p a c k a g e l o a d e d { m u l t i b i b } { \ r e n e w c o m m a n d * { \ b i b l i o g r a p h y h e a d } [ 1 ] { \ s u b s e c t i o n { # 1 } } } { } }
% t h e b i b l i o g r a p h y e n v i r o n m e n t d e f i n i t i o n
2011-12-12 01:23:29 +01:00
\ n e w e n v i r o n m e n t { t h e b i b l i o g r a p h y } [ 1 ] { } { }
2012-03-19 02:35:42 -04:00
\ n e w c o m m a n d * { \ n e w b l o c k } { \ h s k i p . 1 1 e m \ @ p l u s . 3 3 e m \ @ m i n u s . 0 7 e m }
2010-05-19 02:26:05 +02:00
\ l e t \ @ o p e n b i b @ code \ @ empty
2015-07-29 00:51:44 -07:00
% % f i x a b u g ( h a r d c o d e d b i b label ) in \ @ b i b i t e m
% \ r e n e w c o m m a n d \ @ b i b i t e m [ 1 ] { %
% \ item \ if @ f i l e s w \ i m m e d i a t e \ write \ @ a u x o u t
% { \ s t r i n g \ b i b c i t e { # 1 } { \ t h e e n u m i v } } \ f i \ i g n o r e s p a c e s } % r e p l a c e d "\the\value{\@listctr}" with "\theenumiv"
2010-05-19 02:26:05 +02:00
2010-05-31 21:46:59 +02:00
% i t e m i z e , e n u m e r a t e and d e s c r i p t i o n e n v i r o n m e n t
2011-12-12 01:23:29 +01:00
\ s e t l e n g t h { \ l e f t m a r g i n i } { 1 e m }
2010-05-31 21:46:59 +02:00
\ l e f t m a r g i n \ l e f t m a r g i n i
2011-12-12 01:23:29 +01:00
\ s e t l e n g t h { \ l e f t m a r g i n i i } { \ l e f t m a r g i n i }
\ s e t l e n g t h { \ l e f t m a r g i n i i i } { \ l e f t m a r g i n i }
\ s e t l e n g t h { \ l e f t m a r g i n i v } { \ l e f t m a r g i n i }
\ s e t l e n g t h { \ l e f t m a r g i n v } { \ l e f t m a r g i n i }
\ s e t l e n g t h { \ l e f t m a r g i n v i } { \ l e f t m a r g i n i }
\ s e t l e n g t h { \ l a b e l s e p } { . 5 e m } % t h i s is t h e d i s t a n c e between t h e label and t h e b o d y , b u t i t p u s h e s t h e label to t h e l e f t r a t h e r t h a n p u s h i n g t h e b o d y to t h e r i g h t ( to do t h e l a t t e r , m o d i f y \ l e f t m a r g i n ( i )
\ s e t l e n g t h { \ l a b e l w i d t h } { \ l e f t m a r g i n i } % u n f o r t u n a t e l y , \ l a b e l w i d t h is not defined by item l e v e l ( i . e . no \ l a b e l i w i d t h , \ l a b e l i i w i d t h , e t c )
2010-05-31 21:46:59 +02:00
\ a d d t o l e n g t h { \ l a b e l w i d t h } { - \ l a b e l s e p }
\ @ b e g i n p a r p e n a l t y - \ @ l o w p e n a l t y
\ @ e n d p a r p e n a l t y - \ @ l o w p e n a l t y
\ @ i t e m p e n a l t y - \ @ l o w p e n a l t y
\ n e w c o m m a n d \ l a b e l e n u m i { \ t h e e n u m i . }
\ n e w c o m m a n d \ l a b e l e n u m i i { ( \ t h e e n u m i i ) }
\ n e w c o m m a n d \ l a b e l e n u m i i i { \ t h e e n u m i i i . }
\ n e w c o m m a n d \ l a b e l e n u m i v { \ t h e e n u m i v . }
\ r e n e w c o m m a n d \ p @ e n u m i i { \ t h e e n u m i }
\ r e n e w c o m m a n d \ p @ e n u m i i i { \ p @ e n u m i i ( \ t h e e n u m i i ) }
\ r e n e w c o m m a n d \ p @ e n u m i v { \ p @ e n u m i i i \ t h e e n u m i i i }
% d e s c r i p t i o n label
\ n e w c o m m a n d * \ d e s c r i p t i o n l a b e l [ 1 ] { \ h s p a c e \ l a b e l s e p \ n o r m a l f o n t \ b f s e r i e s # 1 }
2010-05-19 02:36:03 +02:00
% c l a s s i c a l \ today d e f i n i t i o n
2010-05-19 02:26:05 +02:00
\ def \ today { \ i f c a s e \ m o n t h \ o r
J a n u a r y \ or F e b r u a r y \ or M a r c h \ or A p r i l \ or M a y \ or J u n e \ or
J u l y \ or A u g u s t \ or S e p t e m b e r \ or O c t o b e r \ or N o v e m b e r \ or D e c e m b e r \ f i
\ space \ n u m b e r \ day , \ n u m b e r \ year }
2011-12-12 01:23:29 +01:00
% \ n e w c o m m a n d { \ w i d t h o f a u t o b o x } [ 1 ] { %
% \ w i d t h o f { \ b e g i n { t a b u l a r } { @ { } l @ { } } # 1 \ e n d { t a b u l a r } } }
% \ n e w c o m m a n d { \ a u t o b o x } [ 2 ] [ b ] { %
% \ p a r b o x [ # 1 ] { \ w i d t h o f a u t o b o x { # 2 } } { # 2 } }
2010-05-19 02:17:38 +02:00
2012-03-19 02:35:42 -04:00
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% l e t t e r d e s i g n c o m m a n d s d e f i n i t i o n s
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% e l e m e n t s
\ n e w c o m m a n d * { \ r e c i p i e n t } [ 2 ] { \ d e f \ @ r e c i p i e n t n a m e { # 1 } \ d e f \ @ r e c i p i e n t a d d r e s s { # 2 } }
2012-10-30 20:28:06 -04:00
\ r e n e w c o m m a n d * { \ d a t e } [ 1 ] { \ d e f \ @ d a t e { # 1 } } \ date { \ t o d a y }
2022-03-09 14:56:03 +01:00
\ n e w c o m m a n d * { \ s u b j e c t } [ 1 ] { \ d e f \ @ s u b j e c t { # 1 } }
2012-03-19 02:35:42 -04:00
\ n e w c o m m a n d * { \ o p e n i n g } [ 1 ] { \ d e f \ @ o p e n i n g { # 1 } }
\ n e w c o m m a n d * { \ c l o s i n g } [ 1 ] { \ d e f \ @ c l o s i n g { # 1 } }
2023-03-29 23:07:01 +02:00
\ n e w c o m m a n d * { \ s i g n a t u r e } [ 2 ] { \ d e f \ @ s i g n a t u r e { \ i n c l u d e g r a p h i c s [ s c a l e = # 1 ] { # 2 } } }
2026-02-22 18:47:10 +01:00
\ n e w c o m m a n d * { \ p o s t s c r i p t } [ 1 ] { \ d e f \ @ p o s t s c r i p t { # 1 } }
2012-07-29 22:37:45 +02:00
\ n e w c o m m a n d * { \ e n c l o s u r e } [ 2 ] [ ] { %
% if a n o p t i o n a l a r g u m e n t is p r o v i d e d , use i t to r e define \ e n c l n a m e
\ i f t h e n e l s e { \ e q u a l { # 1 } { } } { } { \ r e n e w c o m m a n d * { \ e n c l n a m e } { # 1 } } %
\ def \ @ e n c l o s u r e { # 2 } }
2012-03-19 02:35:42 -04:00
% r e c o m p u t e all l e t t e r l e n g t h s
2014-02-17 16:00:06 -05:00
\ n e w c o m m a n d * { \ r e c o m p u t e l e t t e r h e a d l e n g t h s } { }
\ n e w c o m m a n d * { \ r e c o m p u t e l e t t e r b o d y l e n g t h s } { }
\ n e w c o m m a n d * { \ r e c o m p u t e l e t t e r f o o t l e n g t h s } { }
\ n e w c o m m a n d * { \ r e c o m p u t e l e t t e r l e n g t h s } { %
\ r e c o m p u t e l e t t e r h e a d l e n g t h s %
\ r e c o m p u t e l e t t e r b o d y l e n g t h s %
\ r e c o m p u t e l e t t e r f o o t l e n g t h s }
2012-03-19 02:35:42 -04:00
% m a k e s t h e l e t t e r title
% u s a g e : \ m a k e l e t t e r t i t l e
2015-07-29 00:51:44 -07:00
\ n e w c o m m a n d * { \ m a k e l e t t e r t i t l e } { %
\ m a k e l e t t e r h e a d %
\ m a k e l e t t e r f o o t }
\ n e w c o m m a n d * { \ m a k e l e t t e r h e a d } { }
\ n e w c o m m a n d * { \ m a k e l e t t e r f o o t } { }
2012-03-19 02:35:42 -04:00
% m a k e s t h e l e t t e r c l o s i n g
% u s a g e : \ m a k e l e t t e r c l o s i n g
2012-07-29 22:37:45 +02:00
\ n e w c o m m a n d * { \ m a k e l e t t e r c l o s i n g } { }
2012-03-19 02:35:42 -04:00
2010-05-19 01:55:34 +02:00
\ e n d i n p u t
2010-05-19 02:17:38 +02:00
2010-05-19 02:26:05 +02:00
2012-12-07 01:47:07 -05:00
% % end of file ` m o d e r n c v . c l s ' .