Skip to content

Commit 1d18eb0

Browse files
committed
UPDATED: Rewrite LaTeX letterhead support; ADDED: Start demo folder
1 parent 377cf41 commit 1d18eb0

File tree

13 files changed

+374
-229
lines changed

13 files changed

+374
-229
lines changed

ToDo.taskpaper

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ MultiMarkdown Features:
4242
Could write as a very short parent parsing function that only checks for metadata block type?
4343
- compatibility mode fails to reject inline links with attributes
4444
- Add CriticMarkup accept/reject support @done
45-
- Read OPML
46-
- Read ITMZ
45+
- Read OPML @done
46+
- Read ITMZ @done
4747

4848
UX:
4949
- Review command line actions
@@ -57,7 +57,7 @@ Performance:
5757
- Better to address EOF line match offsets in the re2c regex rather than checking for type == 0 for EVERY line token in the code.
5858
- Can I grab ATX Header names as part of the parsing process to avoid having to go back and parse again? Seems like this could be sped up greatly @done
5959
- Remove mmd_node_free and mmd_node_tree_free() @done
60-
- mmd_line_scan() is performance hit in recursive blocks (e.g. blockquotes)
60+
- mmd_line_scan() is performance hit in recursive blocks (e.g. blockquotes) @done
6161
It goes to the end of the line, which is great for typing a line and finding the end at the same time, but unnecessary in recursive line typing...
6262

6363
Code:
@@ -75,13 +75,13 @@ Code:
7575

7676
Export Formats:
7777
- LaTeX @done
78-
- Beamer/Memoir
79-
- OPML
80-
- ITMZ
78+
- Beamer/Memoir @done
79+
- OPML @done
80+
- ITMZ @done
8181
- OpenDocument
8282
- Word
8383
- Powerpoint
8484
- Pages
8585
- Keynote
86-
- EPUB
87-
- Textbundle
86+
- EPUB @done
87+
- Textbundle @done

demo/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
build

demo/assets/test-image.png

714 Bytes
Loading

demo/docs/letter.mmd

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
Title: A Letter
2+
Date: February 28, 2026
3+
recipient: A Recipient
4+
recipient address: 123 Any Street \\ Anytown, USA 12345
5+
6+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla dolor dolor,
7+
ultricies nec tellus non, sagittis pellentesque dolor. Proin orci diam,
8+
aliquet tempor nisl at, tristique iaculis felis. Ut dui felis, pharetra et
9+
mattis ut, aliquet et quam. Cras sollicitudin justo quam, ac iaculis dolor
10+
tincidunt nec. Vestibulum scelerisque, urna eu posuere sollicitudin, libero
11+
purus luctus erat, non sollicitudin arcu lectus a nibh. Nullam tincidunt
12+
laoreet blandit. Curabitur vitae tincidunt velit. In hac habitasse platea
13+
dictumst. Maecenas lorem purus, finibus vitae aliquet sed, mattis eget
14+
mauris. Praesent quam est, finibus ut magna eu, bibendum tempus eros.
15+
Curabitur aliquam sapien vitae molestie ornare. Donec ac mauris sem.
16+
17+
Duis faucibus risus lorem. Sed purus nisi, finibus ut efficitur quis,
18+
efficitur eu purus. Ut a ligula pretium, ullamcorper nulla ut, ultricies
19+
felis. Etiam dapibus dapibus eros, ac aliquet odio rhoncus gravida. Donec nec
20+
dapibus massa. Donec a leo mollis, convallis eros a, egestas ante. Integer a
21+
ligula eu ipsum vulputate faucibus sed nec libero. Maecenas quam augue,
22+
hendrerit ut mauris eu, sagittis vulputate mi. Duis dapibus euismod felis.
23+
Duis volutpat suscipit ligula a egestas. Aenean pulvinar, ligula et lacinia
24+
fermentum, lorem magna facilisis nisl, et dignissim mi orci hendrerit mauris.
25+
Vestibulum bibendum tempor egestas. Duis viverra elit in ex auctor rutrum.
26+
Pellentesque efficitur nunc eu finibus porttitor. Morbi eu egestas est, a
27+
egestas eros. Aenean efficitur volutpat dolor quis tempor.
28+
29+
Duis interdum enim vel nulla imperdiet, et aliquet mi fermentum. Duis
30+
efficitur ante et eros sagittis, cursus aliquam est maximus. Nulla id sapien
31+
massa. Vestibulum scelerisque pulvinar mi in semper. Nam nibh neque, congue
32+
id venenatis tincidunt, gravida et eros. Aenean auctor, velit consequat
33+
fringilla finibus, ligula purus luctus leo, in laoreet diam risus vel diam.
34+
Nullam imperdiet tortor eget justo semper varius. Suspendisse et molestie
35+
orci, sed tincidunt elit. Integer condimentum erat et orci commodo
36+
condimentum. Class aptent taciti sociosqu ad litora torquent per conubia
37+
nostra, per inceptos himenaeos.
38+
39+
Vivamus mi sem, facilisis quis tellus sit amet, scelerisque congue metus.
40+
Vestibulum gravida egestas purus nec condimentum. Morbi consectetur, nunc
41+
quis aliquet semper, libero tortor vehicula metus, dictum tristique mi justo
42+
quis nisl. Donec varius turpis et sapien mattis, eu interdum tellus
43+
tincidunt. Integer at interdum ipsum. Suspendisse laoreet sem non nulla
44+
consectetur mattis. Aliquam ac dui purus. Nullam quam elit, aliquet vel
45+
consectetur eget, rhoncus eget enim.
46+
47+
Interdum et malesuada fames ac ante ipsum primis in faucibus. Vivamus
48+
fermentum est in eleifend consequat. In vehicula magna at risus molestie
49+
blandit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis luctus
50+
lorem nec elit pharetra, eu pellentesque nulla varius. Curabitur nunc orci,
51+
tempor in erat vulputate, fermentum elementum nunc. Pellentesque imperdiet
52+
ligula nec maximus maximus. Aliquam mollis faucibus posuere. Sed lectus
53+
augue, molestie a tellus et, ullamcorper fringilla tellus. Quisque mauris
54+
arcu, dapibus ac metus id, finibus vehicula turpis. Interdum et malesuada
55+
fames ac ante ipsum primis in faucibus. In sit amet vulputate dolor. Aenean
56+
elit diam, malesuada et dictum id, malesuada eu massa. Etiam ultrices dui
57+
tortor, eget blandit quam iaculis sit amet. In felis massa, gravida posuere
58+
ante at, elementum pharetra urna. Nullam vel condimentum elit, in placerat
59+
mauris.
60+
61+
Praesent tristique, sem at hendrerit iaculis, massa est auctor enim, sit amet
62+
malesuada justo libero non dolor. Ut elementum velit in semper rhoncus. Etiam
63+
condimentum, ligula efficitur feugiat consequat, leo dolor vehicula urna, ut
64+
dictum velit diam a quam. Nullam tincidunt lorem quam, nec maximus libero
65+
viverra ac. Nulla dapibus cursus nunc non consectetur. Morbi varius, enim
66+
aliquet dictum tempor, turpis nibh malesuada nisi, sit amet hendrerit ipsum
67+
risus non quam. Sed dignissim sit amet risus vitae euismod.
68+
69+
Nunc lacinia justo urna, id sollicitudin neque viverra suscipit. Aenean in
70+
lacinia diam. Mauris tristique tortor vel nisi egestas, dignissim varius
71+
ligula commodo. Aliquam rutrum ante ante, ut consequat nisi suscipit vitae.
72+
Curabitur gravida congue commodo. Vivamus neque risus, interdum vitae augue
73+
ut, volutpat sagittis dui. Donec tincidunt velit nec commodo tincidunt.
74+
Mauris condimentum tellus vitae facilisis pellentesque. Nulla tempus a quam
75+
id gravida. Curabitur felis sapien, dapibus vel maximus non, venenatis
76+
egestas tortor. Maecenas fringilla, purus eget vulputate varius, lorem massa
77+
tristique dui, id viverra elit libero vitae felis. Mauris maximus ut lorem
78+
sed aliquam. Donec massa purus, ornare vel ornare sed, laoreet vel ligula.
79+
Donec viverra turpis cursus arcu eleifend, blandit ornare nunc euismod. Cras
80+
odio velit, ullamcorper vitae mollis vel, pulvinar id felis. Vestibulum
81+
pharetra commodo arcu, a dignissim tortor finibus nec.

demo/letterhead.sh

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
#!/bin/bash
2+
3+
# Generates each combination of the below
4+
files=(docs/letter.mmd ../tests/MMD7Tests/Integrated.text)
5+
# files=(docs/letter.mmd)
6+
packages=(mmd7-letterhead)
7+
options=("" "[printed]")
8+
# options=("")
9+
addresses=("" "My Street \\\\\\\\ My City, USA 12345")
10+
# addresses=("")
11+
returnaddresses=("" "My Other Street \\\\\\\\ My Other City, USA 12345")
12+
# returnaddresses=("")
13+
14+
15+
mkdir -p build
16+
cp assets/test-image.png build
17+
18+
for file in "${files[@]}"; do
19+
base=$(basename "${file}")
20+
name=${base%.*}
21+
22+
for package in "${packages[@]}"; do
23+
for option in "${options[@]}"; do
24+
for address in "${addresses[@]}"; do
25+
if [[ "$address" == "" ]]; then
26+
addy=""
27+
flags=""
28+
else
29+
addy="\naddress: $address"
30+
flags="a"
31+
fi
32+
for return in "${returnaddresses[@]}"; do
33+
if [[ "$return" == "" ]]; then
34+
raddy=""
35+
else
36+
raddy="\nreturn address: $return"
37+
flags+="r"
38+
fi
39+
echo -e "latexclass: letter\nlatexpackage: $option$package$addy$raddy" | cat - "$file" | ../build/multimarkdown -E -t latex > build/$name-$package-$option-$flags.tex
40+
done
41+
done
42+
done
43+
done
44+
done
45+
46+
cd build
47+
48+
for file in "${files[@]}"; do
49+
base=$(basename "${file}")
50+
name=${base%.*}
51+
52+
for package in "${packages[@]}"; do
53+
for option in "${options[@]}"; do
54+
for address in "${addresses[@]}"; do
55+
if [[ "$address" == "" ]]; then
56+
flags=""
57+
else
58+
flags="a"
59+
fi
60+
for return in "${returnaddresses[@]}"; do
61+
if [[ "$return" != "" ]]; then
62+
flags+="r"
63+
fi
64+
latexmk -c "$name-$package-$option-$flags.tex"
65+
xelatex "$name-$package-$option-$flags.tex"
66+
xelatex "$name-$package-$option-$flags.tex"
67+
open "$name-$package-$option-$flags.pdf"
68+
done
69+
done
70+
done
71+
done
72+
done
73+

latex/mmd7-core.sty

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@
3939
% If you are using BibTeX, you'll need to change this
4040
\@ifclassloaded{tufte-handout}{}{
4141
\@ifclassloaded{tufte-book}{}{
42-
\usepackage[sort&compress,numbers]{natbib} % Better bibliography support
42+
\@ifclassloaded{letter}{}{
43+
\usepackage[sort&compress,numbers]{natbib} % Better bibliography support
44+
}
4345
}
4446
}
4547

@@ -148,14 +150,18 @@
148150
pdfkeywords={\mykeywords}
149151
}
150152

151-
% Start with a title
152-
\AtBeginDocument{
153-
\maketitle
154-
155-
% Show table of contents at the beginning of the document
156-
\ifx\showtoc\undefined
157-
\else
158-
\tableofcontents
159-
\fi
153+
\@ifclassloaded{letter}{
154+
% These don't work with letters
155+
}{
156+
% Start with a title
157+
\AtBeginDocument{
158+
\maketitle
159+
160+
% Show table of contents at the beginning of the document
161+
\ifx\showtoc\undefined
162+
\else
163+
\tableofcontents
164+
\fi
165+
}
160166
}
161167
}

0 commit comments

Comments
 (0)