mirror of
https://gitlab.com/Titan-C/org-cv.git
synced 2024-11-21 21:48:34 +00:00
Merge branch 'awesome-coverletter' into 'awesomecv'
Adds template for AwesomeCV coverletter format See merge request zzamboni/org-cv!1
This commit is contained in:
commit
32beb20aea
2 changed files with 113 additions and 19 deletions
|
@ -75,7 +75,7 @@
|
||||||
(:extrainfo "EXTRAINFO" nil nil parse)
|
(:extrainfo "EXTRAINFO" nil nil parse)
|
||||||
(:with-email nil "email" t t)
|
(:with-email nil "email" t t)
|
||||||
(:fontdir "FONTDIR" nil "fonts/" t)
|
(:fontdir "FONTDIR" nil "fonts/" t)
|
||||||
(:latex-title-command nil nil "\\makecvheader" t)
|
(:latex-title-command "LATEX_TITLE" nil "\\makecvheader" t)
|
||||||
(:cvhighlights "CVHIGHLIGHTS" nil "true" t)
|
(:cvhighlights "CVHIGHLIGHTS" nil "true" t)
|
||||||
(:quote "QUOTE" nil nil t)
|
(:quote "QUOTE" nil nil t)
|
||||||
(:firstname "FIRSTNAME" nil nil t)
|
(:firstname "FIRSTNAME" nil nil t)
|
||||||
|
@ -244,7 +244,19 @@ as a communication channel."
|
||||||
(location (or (org-element-property :LOCATION headline) ""))
|
(location (or (org-element-property :LOCATION headline) ""))
|
||||||
(right-img (org-element-property :RIGHT_IMG headline))
|
(right-img (org-element-property :RIGHT_IMG headline))
|
||||||
(label (or (org-element-property :LABEL headline) nil))
|
(label (or (org-element-property :LABEL headline) nil))
|
||||||
(label-str (if label (format "%s\\hfill{}" label) "")))
|
(label-str (if label (format "%s\\hfill{}" label) ""))
|
||||||
|
;; Other Coverletter properties
|
||||||
|
(recipient (or (org-element-property :RECIPIENT headline) ""))
|
||||||
|
(letter-dateformat (org-element-property :DATEFORMAT headline))
|
||||||
|
(letter-date
|
||||||
|
(format "\\letterdate{%s}"
|
||||||
|
(if date
|
||||||
|
(format "%s" (org-awesomecv-org-timestamp-to-dateformat date letter-dateformat t))
|
||||||
|
"\\today")))
|
||||||
|
(letter-opening (or (format "\\letteropening{%s}" (org-element-property :LETTER_OPENING headline)) ""))
|
||||||
|
(letter-closing (or (format "\\letterclosing{%s}" (org-element-property :LETTER_CLOSING headline)) ""))
|
||||||
|
(letter-attached (or (format "\\letterenclosure[Attached]{%s}" (org-element-property :LETTER_ATTACHED headline)) ""))
|
||||||
|
)
|
||||||
|
|
||||||
(cond
|
(cond
|
||||||
((string= entrytype "cvemployer")
|
((string= entrytype "cvemployer")
|
||||||
|
@ -280,7 +292,25 @@ as a communication channel."
|
||||||
title
|
title
|
||||||
employer
|
employer
|
||||||
location
|
location
|
||||||
(org-cv-utils--format-time-window from-date to-date))))))
|
(org-cv-utils--format-time-window from-date to-date)))
|
||||||
|
;; Coverletter sections
|
||||||
|
((string= entrytype "letterheader")
|
||||||
|
(format "\\recipient\n {%s}\n {%s\\\\%s}\n\n%s\n%s\n%s\n%s\n"
|
||||||
|
recipient
|
||||||
|
employer
|
||||||
|
location
|
||||||
|
letter-date
|
||||||
|
letter-opening
|
||||||
|
letter-closing
|
||||||
|
letter-attached))
|
||||||
|
((string= entrytype "cvletter")
|
||||||
|
(format "\n\\lettertitle{%s}\n\\makelettertitle\n\n\\begin{cvletter}\n%s\n\\end{cvletter}\n\\makeletterclosing"
|
||||||
|
title
|
||||||
|
contents))
|
||||||
|
((string= entrytype "lettersection")
|
||||||
|
(format "\n\\lettersection{%s}\n%s"
|
||||||
|
title
|
||||||
|
contents)))))
|
||||||
|
|
||||||
;;;; Headlines of type "cventries"
|
;;;; Headlines of type "cventries"
|
||||||
(defun org-awesomecv--format-cvenvironment (environment headline contents info)
|
(defun org-awesomecv--format-cvenvironment (environment headline contents info)
|
||||||
|
@ -308,7 +338,11 @@ as a communication channel."
|
||||||
(string= environment "cvsubentry")
|
(string= environment "cvsubentry")
|
||||||
(string= environment "cvemployer")
|
(string= environment "cvemployer")
|
||||||
(string= environment "cvschool")
|
(string= environment "cvschool")
|
||||||
(string= environment "cvhonor"))
|
(string= environment "cvhonor")
|
||||||
|
(string= environment "cvletter")
|
||||||
|
(string= environment "lettersection")
|
||||||
|
(string= environment "letterheader")
|
||||||
|
)
|
||||||
(org-awesomecv--format-cventry headline contents info))
|
(org-awesomecv--format-cventry headline contents info))
|
||||||
((or (string= environment "cventries") (string= environment "cvhonors"))
|
((or (string= environment "cventries") (string= environment "cvhonors"))
|
||||||
(org-awesomecv--format-cvenvironment environment headline contents info))
|
(org-awesomecv--format-cvenvironment environment headline contents info))
|
||||||
|
@ -350,5 +384,39 @@ This does not make sense in the AwesomeCV format, so it only
|
||||||
returns an empty string."
|
returns an empty string."
|
||||||
nil)
|
nil)
|
||||||
|
|
||||||
|
|
||||||
|
(defun org-awesomecv-org-timestamp-to-dateformat (date_str &optional FORMAT-STRING ORDINAL)
|
||||||
|
"Format orgmode timestamp DATE_STR into a date format FORMAT-STRING.
|
||||||
|
ORDINAL returns the date as an ordinal number, specified as %E in format.
|
||||||
|
Uses defaults that are consistent with awesomecv.
|
||||||
|
Other strings are just returned unmodified
|
||||||
|
|
||||||
|
e.g. <2002-08-12 Mon> => August 12th, 2012
|
||||||
|
today => today"
|
||||||
|
(if (string-match (org-re-timestamp 'active) date_str)
|
||||||
|
(let* ((dte (org-parse-time-string date_str))
|
||||||
|
(time (encode-time dte))
|
||||||
|
(day-format (if ORDINAL "%E" "%e"))
|
||||||
|
(format-string-0 (or FORMAT-STRING
|
||||||
|
(if (eql calendar-date-style 'american)
|
||||||
|
(format "%%B %s, %%Y" day-format)
|
||||||
|
(format "%s %%B, %%Y" day-format))))
|
||||||
|
(day-raw (format-time-string "%eth" time))
|
||||||
|
(day-ordinal
|
||||||
|
(let ((r0 "\\([04-9]\\|1[0-9]\\)th$")
|
||||||
|
(r1 "\\([1]\\)th$" )
|
||||||
|
(r2 "\\([2]\\)th$" )
|
||||||
|
(r3 "\\([3]\\)th$" )
|
||||||
|
)
|
||||||
|
(cond
|
||||||
|
((string-match r0 day-raw) (replace-regexp-in-string r0 "\\1th" day-raw))
|
||||||
|
((string-match r1 day-raw) (replace-regexp-in-string r1 "\\1st" day-raw))
|
||||||
|
((string-match r2 day-raw) (replace-regexp-in-string r2 "\\1nd" day-raw))
|
||||||
|
((string-match r3 day-raw) (replace-regexp-in-string r3 "\\1rd" day-raw )))))
|
||||||
|
(format-string (replace-regexp-in-string "%E" day-ordinal format-string-0 't)))
|
||||||
|
(format-time-string format-string time))
|
||||||
|
date_str))
|
||||||
|
|
||||||
|
|
||||||
(provide 'ox-awesomecv)
|
(provide 'ox-awesomecv)
|
||||||
;;; ox-awesomecv ends here
|
;;; ox-awesomecv ends here
|
||||||
|
|
28
readme.org
28
readme.org
|
@ -220,7 +220,7 @@ CVs. In addition to the regular document attributes, the following are supported
|
||||||
|
|
||||||
#+attr_html: :class table table-striped
|
#+attr_html: :class table table-striped
|
||||||
| Field | Description |
|
| Field | Description |
|
||||||
|-----------------+-----------------------------------------------------------|
|
|-----------------+-------------------------------------------------------------|
|
||||||
| PHOTOSTYLE | Style of photo to use. Comma-separated values can include |
|
| PHOTOSTYLE | Style of photo to use. Comma-separated values can include |
|
||||||
| | circle/rectangle,edge/noedge,left/right. |
|
| | circle/rectangle,edge/noedge,left/right. |
|
||||||
| CVCOLOR | Color of highlights. |
|
| CVCOLOR | Color of highlights. |
|
||||||
|
@ -236,6 +236,8 @@ CVs. In addition to the regular document attributes, the following are supported
|
||||||
| CVFOOTER_LEFT | Text to include in the left footer. None by default |
|
| CVFOOTER_LEFT | Text to include in the left footer. None by default |
|
||||||
| CVFOOTER_MIDDLE | Text to include in the middle footer. None by default. |
|
| CVFOOTER_MIDDLE | Text to include in the middle footer. None by default. |
|
||||||
| CVFOOTER_RIGHT | Text to include in the right footer. None by default. |
|
| CVFOOTER_RIGHT | Text to include in the right footer. None by default. |
|
||||||
|
| LATEX_TITLE | Text to use as the title section. \makecvheader by default. |
|
||||||
|
| | (Can specify \makecvheader[R] to justify to the right) |
|
||||||
|
|
||||||
AwesomeCV supports a few additional types of environment types in
|
AwesomeCV supports a few additional types of environment types in
|
||||||
=CV_ENV=, including =cvemployer=, =cvskills=, =cvhonors= and =cvschool=. Some of
|
=CV_ENV=, including =cvemployer=, =cvskills=, =cvhonors= and =cvschool=. Some of
|
||||||
|
@ -306,6 +308,30 @@ Converts to a =\cvskills= environment. The headline must contain a
|
||||||
commands, with the term as the skill title and the description as its
|
commands, with the term as the skill title and the description as its
|
||||||
contents.
|
contents.
|
||||||
|
|
||||||
|
*** =letterheader=
|
||||||
|
|
||||||
|
Provides heading information for a cover letter. Supports attributes =RECIPIENT=. =EMPLOYER=, =LOCATION=, =LETTER_OPENING=, =LETTER_CLOSING=, =LETTER_ATTACHED=, =DATE=, =DATEFORMAT=.
|
||||||
|
|
||||||
|
#+attr_html: :class table table-striped
|
||||||
|
| Field | Description |
|
||||||
|
|----------------+---------------------------------------------------------------------------|
|
||||||
|
| RECIPIENT | Addressee E.g. Company Recruitment Team |
|
||||||
|
| EMPLOYER | Company name, E.g. Google Inc |
|
||||||
|
| LOCATION | Company address, E.g. 1600 Amphitheatre Parkway\\Mountain View, CA 94043 |
|
||||||
|
| LETTER_OPENING | Letter opening, E.g. Dear Ms./Mr./Dr. LastName |
|
||||||
|
| LETTER_CLOSING | Letter closing, E.g. Yours Sincerely, |
|
||||||
|
| DATE | The date used for the letter, uses \\today as default if unspecified. |
|
||||||
|
| DATEFORMAT | Specify an alternative date format for the letter header. |
|
||||||
|
| | E.g. %e %M %Y might provide 19 March 2021 |
|
||||||
|
|
||||||
|
*** =cvletter=
|
||||||
|
|
||||||
|
Converts to a =\cvletter= environment. This holds the content of a cover letter.
|
||||||
|
|
||||||
|
*** =lettersection=
|
||||||
|
|
||||||
|
Converts to a =\lettersection= command. These are the headline portions of a cover letter.
|
||||||
|
|
||||||
* Markdown Hugo Exporter
|
* Markdown Hugo Exporter
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:EXPORT_FILE_NAME: hugo_export
|
:EXPORT_FILE_NAME: hugo_export
|
||||||
|
|
Loading…
Reference in a new issue