├── .gitignore
├── README.md
├── latin-conjugations-worksheet.yaml
├── latin-1.yaml
├── latin-3.yaml
├── latin-2.yaml
├── latin-4.yaml
├── latin-3i.yaml
├── latin-conjugations.pv
└── latin-conjugations-worksheet.pv
/.gitignore:
--------------------------------------------------------------------------------
1 | yaml/
2 | *.pdf
3 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Latin conjugations chart
2 |
3 | Uses [PlotDevice](http://plotdevice.io).
4 |
5 |
6 | ### Installation
7 |
8 | - Download [PyYAML](http://pyyaml.org/wiki/PyYAML) (the zipfile is fine).
9 | - Unpack it.
10 | - Copy the `yaml` directory (inside of `lib`) into `~/Library/Application Support/PlotDevice` or the same directory as these files (per [the manual](http://plotdevice.io/tut/Libraries)).
11 |
12 |
13 | ### Usage
14 |
15 | On line 4 of `latin-conjugations.pv`, change `latin-1.yaml` to one of the other data filenames and rerun the script in PlotDevice.
16 |
--------------------------------------------------------------------------------
/latin-conjugations-worksheet.yaml:
--------------------------------------------------------------------------------
1 | label: Conjugation Worksheet
2 | output: latin-conjugations-worksheet.pdf
3 | updated: 1 November 2018
4 | example_word: "Word:"
5 | left:
6 | - title: Active Indicative
7 | fill: "#cb202c"
8 | groups:
9 | - "Present | __________ | __________ | __________ | __________ | __________ | __________"
10 | - "Imperfect | __________ | __________ | __________ | __________ | __________ | __________"
11 | - "Future | __________ | __________ | __________ | __________ | __________ | __________"
12 | - "Perfect | __________ | __________ | __________ | __________ | __________ | __________"
13 | - "Pluperfect | __________ | __________ | __________ | __________ | __________ | __________"
14 | - "Future Perfect | __________ | __________ | __________ | __________ | __________ | __________"
15 |
16 | - title: Passive Indicative
17 | fill: "#cb202c"
18 | groups:
19 | - "Present | __________ | __________ | __________ | __________ | __________ | __________"
20 | - "Imperfect | __________ | __________ | __________ | __________ | __________ | __________"
21 | - "Future | __________ | __________ | __________ | __________ | __________ | __________"
22 | - "Perfect | __________ | __________ | __________ | __________ | __________ | __________"
23 | - "Pluperfect | __________ | __________ | __________ | __________ | __________ | __________"
24 | - "Future Perfect | __________ | __________ | __________ | __________ | __________ | __________"
25 |
26 | - title: Active Subjunctive
27 | fill: "#2075cb"
28 | groups:
29 | - "Present | __________ | __________ | __________ | __________ | __________ | __________"
30 | - "Imperfect | __________ | __________ | __________ | __________ | __________ | __________"
31 | - " | | | | | | "
32 | - "Perfect | __________ | __________ | __________ | __________ | __________ | __________"
33 | - "Pluperfect | __________ | __________ | __________ | __________ | __________ | __________"
34 | - " | | | | | | "
35 |
36 | - title: Passive Subjunctive
37 | fill: "#2075cb"
38 | groups:
39 | - "Present | __________ | __________ | __________ | __________ | __________ | __________"
40 | - "Imperfect | __________ | __________ | __________ | __________ | __________ | __________"
41 | - " | | | | | | "
42 | - "Perfect | __________ | __________ | __________ | __________ | __________ | __________"
43 | - "Pluperfect | __________ | __________ | __________ | __________ | __________ | __________"
44 | - " | | | | | | "
45 |
46 | right:
47 | - title: Infinitive
48 | fill: "#42b314"
49 | groups:
50 | - "Present | __________ | __________"
51 | - "Future | __________ | __________"
52 | - "Perfect | __________ | __________"
53 |
54 | - title: Participle
55 | fill: "#b2640a"
56 | groups:
57 | - "Present | __________ |"
58 | - "Future | __________ | __________"
59 | - "Perfect | | __________"
60 |
61 | - title: Gerund
62 | fill: "#a020cb"
63 | type: headerless
64 | groups:
65 | - "| __________ | __________ | __________ | __________"
66 |
67 | - title: Imperative
68 | fill: "#04aba5"
69 | groups:
70 | - "singular | __________ | __________"
71 | - "plural | __________ | __________"
72 |
--------------------------------------------------------------------------------
/latin-1.yaml:
--------------------------------------------------------------------------------
1 | label: 1st Conjugation
2 | output: latin-1.pdf
3 | updated: 17 Jul 2018
4 | example_word: am[ō], am[āre], {amāv}[ī], {amāt}[us]
5 | left:
6 | - title: Active Indicative
7 | fill: "#cb202c"
8 | groups:
9 | - "Present | am[ō] | am[ās] | am[at] | am[āmus] | am[ātis] | am[ant]"
10 | - "Imperfect | am[ābam] | am[ābās] | am[ābat] | am[ābāmus] | am[ābātis] | am[ābant]"
11 | - "Future | am[ābō] | am[ābis] | am[ābit] | am[ābimus] | am[ābitis] | am[ābunt]"
12 | - "Perfect | {amāv}[ī] | {amāv}[istī] | {amāv}[it] | {amāv}[imus] | {amāv}[istis] | {amāv}[ērunt]"
13 | - "Pluperfect | {amāv}[eram] | {amāv}[erās] | {amāv}[erat] | {amāv}[erāmus] | {amāv}[erātis] | {amāv}[erant]"
14 | - "Future Perfect | {amāv}[erō] | {amāv}[eris] | {amāv}[erit] | {amāv}[erimus] | {amāv}[eritis] | {amāv}[erint]"
15 |
16 | - title: Passive Indicative
17 | fill: "#cb202c"
18 | groups:
19 | - "Present | am[or] | am[āris] | am[ātur] | am[āmur] | am[āminī] | am[antur]"
20 | - "Imperfect | am[ābar] | am[ābāris] | am[ābātur] | am[ābāmur] | am[ābāminī] | am[ābantur]"
21 | - "Future | am[ābor] | am[āberis] | am[ābitur] | am[ābimur] | am[ābiminī] | am[ābuntur]"
22 | - "Perfect | {amāt}[us sum] | {amāt}[us es] | {amāt}[us est] | {amāt}[ī sumus] | {amāt}[ī estis] | {amāt}[ī sunt]"
23 | - "Pluperfect | {amāt}[us eram] | {amāt}[us erās] | {amāt}[us erat] | {amāt}[ī erāmus] | {amāt}[ī erātis] | {amāt}[ī erant]"
24 | - "Future Perfect | {amāt}[us erō] | {amāt}[us eris] | {amāt}[us erit] | {amāt}[ī erimus] | {amāt}[ī eritis] | {amāt}[ī erunt]"
25 |
26 | - title: Active Subjunctive
27 | fill: "#2075cb"
28 | groups:
29 | - "Present | am[em] | am[ēs] | am[et] | am[ēmus] | am[ētis] | am[ent]"
30 | - "Imperfect | am[ārem] | am[ārēs] | am[āret] | am[ārēmus] | am[ārētis] | am[ārent]"
31 | - " | | | | | | "
32 | - "Perfect | {amāv}[erim] | {amāv}[eris] | {amāv}[erit] | {amāv}[erimus] | {amāv}[eritis] | {amāv}[erint]"
33 | - "Pluperfect | {amāv}[issem] | {amāv}[issēs] | {amāv}[isset] | {amāv}[issēmus] | {amāv}[issētis] | {amāv}[issent]"
34 | - " | | | | | | "
35 |
36 | - title: Passive Subjunctive
37 | fill: "#2075cb"
38 | groups:
39 | - "Present | am[er] | am[ēris] | am[ētur] | am[ēmur] | am[ēminī] | am[entur]"
40 | - "Imperfect | am[ārer] | am[ārēris] | am[ārētur] | am[ārēmur] | am[ārēminī] | am[ārentur]"
41 | - " | | | | | | "
42 | - "Perfect | {amāt}[us sim] | {amāt}[us sīs] | {amāt}[us sit] | {amāt}[ī sīmus] | {amāt}[ī sītis] | {amāt}[ī sint]"
43 | - "Pluperfect | {amāt}[us essem] | {amāt}[us essēs] | {amāt}[us esset] | {amāt}[ī essēmus] | {amāt}[ī essētis] | {amāt}[ī essent]"
44 | - " | | | | | | "
45 |
46 | right:
47 | - title: Infinitive
48 | fill: "#42b314"
49 | groups:
50 | - "Present | am[āre] | am[ārī]"
51 | - "Future | {amāt}[ūrus esse] | {amāt}[um īrī]"
52 | - "Perfect | {amāv}[isse] | {amāt}[us esse]"
53 |
54 | - title: Participle
55 | fill: "#b2640a"
56 | groups:
57 | - "Present | am[āns] |"
58 | - "Future | {amāt}[ūrus] | am[andus]"
59 | - "Perfect | | {amāt}[us]"
60 |
61 | - title: Gerund
62 | fill: "#a020cb"
63 | type: headerless
64 | groups:
65 | - "| am[andī] | am[andō] | am[andum] | am[andō]"
66 |
67 | - title: Imperative
68 | fill: "#04aba5"
69 | groups:
70 | - "singular | am[ā] | am[āre]"
71 | - "plural | am[āte] | am[āminī]"
72 |
--------------------------------------------------------------------------------
/latin-3.yaml:
--------------------------------------------------------------------------------
1 | label: 3rd Conjugation
2 | output: latin-3.pdf
3 | updated: 17 Jul 2018
4 | example_word: dūc[ō], dūc[ere], {dūx}[ī], {duct}[us]
5 | note: "* dūcō, dīcō, faciō, and ferō drop the final -e"
6 | left:
7 | - title: Active Indicative
8 | fill: "#cb202c"
9 | groups:
10 | - "Present | dūc[ō] | dūc[is] | dūc[it] | dūc[imus] | dūc[itis] | dūc[unt]"
11 | - "Imperfect | dūc[ēbam] | dūc[ēbās] | dūc[ēbat] | dūc[ēbāmus] | dūc[ēbātis] | dūc[ēbant]"
12 | - "Future | dūc[am] | dūc[ēs] | dūc[et] | dūc[ēmus] | dūc[ētis] | dūc[ent]"
13 | - "Perfect | dūx[ī] | dūx[istī] | dūx[it] | dūx[imus] | dūx[istis] | dūx[ērunt]"
14 | - "Pluperfect | dūx[eram] | dūx[erās] | dūx[erat] | dūx[erāmus] | dūx[erātis] | dūx[erant]"
15 | - "Future Perfect | dūx[erō] | dūx[eris] | dūx[erit] | dūx[erimus] | dūx[eritis] | dūx[erint]"
16 |
17 | - title: Passive Indicative
18 | fill: "#cb202c"
19 | groups:
20 | - "Present | dūc[or] | dūc[eris] | dūc[itur] | dūc[imur] | dūc[iminī] | dūc[untur]"
21 | - "Imperfect | dūc[ēbar] | dūc[ēbāris] | dūc[ēbātur] | dūc[ēbāmur] | dūc[ēbāminī] | dūc[ēbantur]"
22 | - "Future | dūc[ar] | dūc[ēris] | dūc[ētur] | dūc[ēmur] | dūc[ēminī] | dūc[entur]"
23 | - "Perfect | {duct}[us sum] | {duct}[us es] | {duct}[us est] | {duct}[ī sumus] | {duct}[ī estis] | {duct}[ī sunt]"
24 | - "Pluperfect | {duct}[us eram] | {duct}[us erās] | {duct}[us erat] | {duct}[ī erāmus] | {duct}[ī erātis] | {duct}[ī erant]"
25 | - "Future Perfect | {duct}[us erō] | {duct}[us eris] | {duct}[us erit] | {duct}[ī erimus] | {duct}[ī eritis] | {duct}[ī erunt]"
26 |
27 | - title: Active Subjunctive
28 | fill: "#2075cb"
29 | groups:
30 | - "Present | dūc[am] | dūc[ās] | dūc[at] | dūc[āmus] | dūc[ātis] | dūc[ant]"
31 | - "Imperfect | dūc[erem] | dūc[erēs] | dūc[eret] | dūc[erēmus] | dūc[erētis] | dūc[erent]"
32 | - " | | | | | | "
33 | - "Perfect | dūx[erim] | dūx[eris] | dūx[erit] | dūx[erimus] | dūx[eritis] | dūx[erint]"
34 | - "Pluperfect | dūx[issem] | dūx[issēs] | dūx[isset] | dūx[issēmus] | dūx[issētis] | dūx[issent]"
35 | - " | | | | | | "
36 |
37 | - title: Passive Subjunctive
38 | fill: "#2075cb"
39 | groups:
40 | - "Present | dūc[ar] | dūc[āris] | dūc[ātur] | dūc[āmur] | dūc[āminī] | dūc[antur]"
41 | - "Imperfect | dūc[erer] | dūc[erēris] | dūc[erētur] | dūc[erēmur] | dūc[erēminī] | dūc[erentur]"
42 | - " | | | | | | "
43 | - "Perfect | {duct}[us sim] | {duct}[us sīs] | {duct}[us sit] | {duct}[ī sīmus] | {duct}[ī sītis] | {duct}[ī sint]"
44 | - "Pluperfect | {duct}[us essem] | {duct}[us essēs] | {duct}[us esset] | {duct}[ī essēmus] | {duct}[ī essētis] | {duct}[ī essent]"
45 | - " | | | | | | "
46 |
47 | right:
48 | - title: Infinitive
49 | fill: "#42b314"
50 | groups:
51 | - "Present | dūc[ere] | dūc[ī]"
52 | - "Future | {duct}[ūrus esse] | {duct}[um īrī]"
53 | - "Perfect | dūx[isse] | {duct}[us esse]"
54 |
55 | - title: Participle
56 | fill: "#b2640a"
57 | groups:
58 | - "Present | dūc[ēns] | "
59 | - "Future | {duct}[ūrus] | dūc[endus]"
60 | - "Perfect | | {duct}[us]"
61 |
62 | - title: Gerund
63 | fill: "#a020cb"
64 | type: headerless
65 | groups:
66 | - "| dūc[endī] | dūc[endō] | dūc[endum] | dūc[endō]"
67 |
68 | - title: Imperative
69 | fill: "#04aba5"
70 | groups:
71 | - "singular | dūc* | dūc[ere]"
72 | - "plural | dūc[ite] | dūc[iminī]"
73 |
--------------------------------------------------------------------------------
/latin-2.yaml:
--------------------------------------------------------------------------------
1 | label: 2nd Conjugation
2 | output: latin-2.pdf
3 | updated: 17 Jul 2018
4 | example_word: mon[eō], mon[ēre], {monu}[ī], {monit}[us]
5 | left:
6 | - title: Active Indicative
7 | fill: "#cb202c"
8 | groups:
9 | - "Present | mon[eō] | mon[ēs] | mon[et] | mon[ēmus] | mon[ētis] | mon[ent]"
10 | - "Imperfect | mon[ēbam] | mon[ēbās] | mon[ēbat] | mon[ēbāmus] | mon[ēbātis] | mon[ēbant]"
11 | - "Future | mon[ēbō] | mon[ēbis] | mon[ēbit] | mon[ēbimus] | mon[ēbitis] | mon[ēbunt]"
12 | - "Perfect | monu[ī] | monu[istī] | monu[it] | monu[imus] | monu[istis] | monu[ērunt]"
13 | - "Pluperfect | monu[eram] | monu[erās] | monu[erat] | monu[erāmus] | monu[erātis] | monu[erant]"
14 | - "Future Perfect | monu[erō] | monu[eris] | monu[erit] | monu[erimus] | monu[eritis] | monu[erint]"
15 |
16 | - title: Passive Indicative
17 | fill: "#cb202c"
18 | groups:
19 | - "Present | mon[eor] | mon[ēris] | mon[ētur] | mon[ēmur] | mon[ēminī] | mon[entur]"
20 | - "Imperfect | mon[ēbar] | mon[ēbāris] | mon[ēbātur] | mon[ēbāmur] | mon[ēbāminī] | mon[ēbantur]"
21 | - "Future | mon[ēbor] | mon[ēberis] | mon[ēbitur] | mon[ēbimur] | mon[ēbiminī] | mon[ēbuntur]"
22 | - "Perfect | {monit}[us sum] | {monit}[us es] | {monit}[us est] | {monit}[ī sumus] | {monit}[ī estis] | {monit}[ī sunt]"
23 | - "Pluperfect | {monit}[us eram] | {monit}[us erās] | {monit}[us erat] | {monit}[ī erāmus] | {monit}[ī erātis] | {monit}[ī erant]"
24 | - "Future Perfect | {monit}[us erō] | {monit}[us eris] | {monit}[us erit] | {monit}[ī erimus] | {monit}[ī eritis] | {monit}[ī erunt]"
25 |
26 | - title: Active Subjunctive
27 | fill: "#2075cb"
28 | groups:
29 | - "Present | mon[eam] | mon[eās] | mon[eat] | mon[eāmus] | mon[eātis] | mon[eant]"
30 | - "Imperfect | mon[ērem] | mon[ērēs] | mon[ēret] | mon[ērēmus] | mon[ērētis] | mon[ērent]"
31 | - " | | | | | | "
32 | - "Perfect | {monu}[erim] | {monu}[eris] | {monu}[erit] | {monu}[erimus] | {monu}[eritis] | {monu}[erint]"
33 | - "Pluperfect | {monu}[issem] | {monu}[issēs] | {monu}[isset] | {monu}[issēmus] | {monu}[issētis] | {monu}[issent]"
34 | - " | | | | | | "
35 |
36 | - title: Passive Subjunctive
37 | fill: "#2075cb"
38 | groups:
39 | - "Present | mon[ear] | mon[eāris] | mon[eātur] | mon[eāmur] | mon[eāminī] | mon[eantur]"
40 | - "Imperfect | mon[ērer] | mon[ērēris] | mon[ērētur] | mon[ērēmur] | mon[ērēminī] | mon[ērentur]"
41 | - " | | | | | | "
42 | - "Perfect | {monit}[us sim] | {monit}[us sīs] | {monit}[us sit] | {monit}[ī sīmus] | {monit}[ī sītis] | {monit}[ī sint]"
43 | - "Pluperfect | {monit}[us essem] | {monit}[us essēs] | {monit}[us esset] | {monit}[ī essēmus] | {monit}[ī essētis] | {monit}[ī essent]"
44 | - " | | | | | | "
45 |
46 | right:
47 | - title: Infinitive
48 | fill: "#42b314"
49 | groups:
50 | - "Present | mon[ēre] | mon[ērī]"
51 | - "Future | {monit}[ūrus esse] | {monit}[um īrī]"
52 | - "Perfect | {monu}[isse] | {monit}[us esse]"
53 |
54 | - title: Participle
55 | fill: "#b2640a"
56 | groups:
57 | - "Present | mon[ēns] | "
58 | - "Future | {monit}[ūrus] | mon[endus]"
59 | - "Perfect | | {monit}[us]"
60 |
61 | - title: Gerund
62 | fill: "#a020cb"
63 | type: headerless
64 | groups:
65 | - "| mon[endī] | mon[endō] | mon[endum] | mon[endō]"
66 |
67 | - title: Imperative
68 | fill: "#04aba5"
69 | groups:
70 | - "singular | mon[ē] | mon[ēre]"
71 | - "plural | mon[ēte] | mon[ēminī]"
72 |
--------------------------------------------------------------------------------
/latin-4.yaml:
--------------------------------------------------------------------------------
1 | label: 4th Conjugation
2 | output: latin-4.pdf
3 | updated: 17 Jul 2018
4 | example_word: aud[iō], aud[īre], {audīv}[ī], {audīt}[us]
5 | left:
6 | - title: Active Indicative
7 | fill: "#cb202c"
8 | groups:
9 | - "Present | aud[iō] | aud[īs] | aud[it] | aud[īmus] | aud[ītis] | aud[iunt]"
10 | - "Imperfect | aud[iēbam] | aud[iēbās] | aud[iēbat] | aud[iēbāmus] | aud[iēbātis] | aud[iēbant]"
11 | - "Future | aud[iam] | aud[iēs] | aud[iet] | aud[iēmus] | aud[iētis] | aud[ient]"
12 | - "Perfect | {audīv}[ī] | {audīv}[istī] | {audīv}[it] | {audīv}[imus] | {audīv}[istis] | {audīv}[ērunt]"
13 | - "Pluperfect | {audīv}[eram] | {audīv}[erās] | {audīv}[erat] | {audīv}[erāmus] | {audīv}[erātis] | {audīv}[erant]"
14 | - "Future Perfect | {audīv}[erō] | {audīv}[eris] | {audīv}[erit] | {audīv}[erimus] | {audīv}[eritis] | {audīv}[erint]"
15 |
16 | - title: Passive Indicative
17 | fill: "#cb202c"
18 | groups:
19 | - "Present | aud[ior] | aud[īris] | aud[ītur] | aud[īmur] | aud[īminī] | aud[iuntur]"
20 | - "Imperfect | aud[iēbar] | aud[iēbāris] | aud[iēbātur] | aud[iēbāmur] | aud[iēbāminī] | aud[iēbantur]"
21 | - "Future | aud[iar] | aud[iēris] | aud[iētur] | aud[iēmur] | aud[iēminī] | aud[ientur]"
22 | - "Perfect | {audīt}[us sum] | {audīt}[us es] | {audīt}[us est] | {audīt}[ī sumus] | {audīt}[ī estis] | {audīt}[ī sunt]"
23 | - "Pluperfect | {audīt}[us eram] | {audīt}[us erās] | {audīt}[us erat] | {audīt}[ī erāmus] | {audīt}[ī erātis] | {audīt}[ī erant]"
24 | - "Future Perfect | {audīt}[us erō] | {audīt}[us eris] | {audīt}[us erit] | {audīt}[ī erimus] | {audīt}[ī eritis] | {audīt}[ī erunt]"
25 |
26 | - title: Active Subjunctive
27 | fill: "#2075cb"
28 | groups:
29 | - "Present | aud[iam] | aud[iās] | aud[iat] | aud[iāmus] | aud[iātis] | aud[iant]"
30 | - "Imperfect | aud[īrem] | aud[īrēs] | aud[īret] | aud[īrēmus] | aud[īrētis] | aud[īrent]"
31 | - " | | | | | | "
32 | - "Perfect | {audīv}[erim] | {audīv}[eris] | {audīv}[erit] | {audīv}[erimus] | {audīv}[eritis] | {audīv}[erint]"
33 | - "Pluperfect | {audīv}[issem] | {audīv}[issēs] | {audīv}[isset] | {audīv}[issēmus] | {audīv}[issētis] | {audīv}[issent]"
34 | - " | | | | | | "
35 |
36 | - title: Passive Subjunctive
37 | fill: "#2075cb"
38 | groups:
39 | - "Present | aud[iar] | aud[iāris] | aud[iātur] | aud[iāmur] | aud[iāminī] | aud[iantur]"
40 | - "Imperfect | aud[īrer] | aud[īrēris] | aud[īrētur] | aud[īrēmur] | aud[īrēminī] | aud[īrentur]"
41 | - " | | | | | | "
42 | - "Perfect | {audīt}[us sim] | {audīt}[us sīs] | {audīt}[us sit] | {audīt}[ī sīmus] | {audīt}[ī sītis] | {audīt}[ī sint]"
43 | - "Pluperfect | {audīt}[us essem] | {audīt}[us essēs] | {audīt}[us esset] | {audīt}[ī essēmus] | {audīt}[ī essētis] | {audīt}[ī essent]"
44 | - " | | | | | | "
45 |
46 | right:
47 | - title: Infinitive
48 | fill: "#42b314"
49 | groups:
50 | - "Present | aud[īre] | aud[īrī]"
51 | - "Future | {audīt}[ūrus esse] | {audīt}[um īrī]"
52 | - "Perfect | {audīv}[isse] | {audīt}[us esse]"
53 |
54 | - title: Participle
55 | fill: "#b2640a"
56 | groups:
57 | - "Present | aud[iēns] | "
58 | - "Future | {audīt}[ūrus] | aud[iendus]"
59 | - "Perfect | | {audīt}[us]"
60 |
61 | - title: Gerund
62 | fill: "#a020cb"
63 | type: headerless
64 | groups:
65 | - "| aud[iendī] | aud[iendō] | aud[iendum] | aud[iendō]"
66 |
67 | - title: Imperative
68 | fill: "#04aba5"
69 | groups:
70 | - "Singular | aud[ī] | aud[īre]"
71 | - "Plural | aud[īte] | aud[īminī]"
72 |
--------------------------------------------------------------------------------
/latin-3i.yaml:
--------------------------------------------------------------------------------
1 | label: 3rd Conjugation i-Stems
2 | output: latin-3i.pdf
3 | updated: 17 July 2018
4 | example_word: incip[iō], incip[ere], {incēp}[ī], {incept}[us]
5 | left:
6 | - title: Active Indicative
7 | fill: "#cb202c"
8 | groups:
9 | - "Present | incip[iō] | incip[is] | incip[it] | incip[imus] | incip[itis] | incip[iunt]"
10 | - "Imperfect | incip[iēbam] | incip[iēbās] | incip[iēbat] | incip[iēbāmus] | incip[iēbātis] | incip[iēbant]"
11 | - "Future | incip[iam] | incip[iēs] | incip[iet] | incip[iēmus] | incip[iētis] | incip[ient]"
12 | - "Perfect | {incēp}[ī] | {incēp}[istī] | {incēp}[it] | {incēp}[imus] | {incēp}[istis] | {incēp}[ērunt]"
13 | - "Pluperfect | {incēp}[eram] | {incēp}[erās] | {incēp}[erat] | {incēp}[erāmus] | {incēp}[erātis] | {incēp}[erant]"
14 | - "Future Perfect | {incēp}[erō] | {incēp}[eris] | {incēp}[erit] | {incēp}[erimus] | {incēp}[eritis] | {incēp}[erint]"
15 |
16 | - title: Passive Indicative
17 | fill: "#cb202c"
18 | groups:
19 | - "Present | incip[ior] | incip[eris] | incip[itur] | incip[imur] | incip[iminī] | incip[iuntur]"
20 | - "Imperfect | incip[iēbar] | incip[iēbāris] | incip[iēbātur] | incip[iēbāmur] | incip[iēbāminī] | incip[iēbantur]"
21 | - "Future | incip[iar] | incip[iēris] | incip[iētur] | incip[iēmur] | incip[iēminī] | incip[ientur]"
22 | - "Perfect | {incept}[us sum] | {incept}[us es] | {incept}[us est] | {incept}[ī sumus] | {incept}[ī estis] | {incept}[ī sunt]"
23 | - "Pluperfect | {incept}[us eram] | {incept}[us erās] | {incept}[us erat] | {incept}[ī erāmus] | {incept}[ī erātis] | {incept}[ī erant]"
24 | - "Future Perfect | {incept}[us erō] | {incept}[us eris] | {incept}[us erit] | {incept}[ī erimus] | {incept}[ī eritis] | {incept}[ī erunt]"
25 |
26 | - title: Active Subjunctive
27 | fill: "#2075cb"
28 | groups:
29 | - "Present | incip[iam] | incip[iās] | incip[iat] | incip[iāmus] | incip[iātis] | incip[iant]"
30 | - "Imperfect | incip[erem] | incip[erēs] | incip[eret] | incip[erēmus] | incip[erētis] | incip[erent]"
31 | - " | | | | | | "
32 | - "Perfect | {incēp}[erim] | {incēp}[eris] | {incēp}[erit] | {incēp}[erimus] | {incēp}[eritis] | {incēp}[erint]"
33 | - "Pluperfect | {incēp}[issem] | {incēp}[issēs] | {incēp}[isset] | {incēp}[issēmus] | {incēp}[issētis] | {incēp}[issent]"
34 | - " | | | | | | "
35 |
36 | - title: Passive Subjunctive
37 | fill: "#2075cb"
38 | groups:
39 | - "Present | incip[iar] | incip[iāris] | incip[iātur] | incip[iāmur] | incip[iāminī] | incip[iantur]"
40 | - "Imperfect | incip[erer] | incip[erēris] | incip[erētur] | incip[erēmur] | incip[erēminī] | incip[erentur]"
41 | - " | | | | | | "
42 | - "Perfect | {incept}[us sim] | {incept}[us sīs] | {incept}[us sit] | {incept}[ī sīmus] | {incept}[ī sītis] | {incept}[ī sint]"
43 | - "Pluperfect | {incept}[us essem] | {incept}[us essēs] | {incept}[us esset] | {incept}[ī essēmus] | {incept}[ī essētis] | {incept}[ī essent]"
44 | - " | | | | | | "
45 |
46 | right:
47 | - title: Infinitive
48 | fill: "#42b314"
49 | groups:
50 | - "Present | incip[ere] | incip[ī]"
51 | - "Future | {incept}[ūrus esse] | {incept}[um īrī]"
52 | - "Perfect | {incēp}[isse] | {incept}[us esse]"
53 |
54 | - title: Participle
55 | fill: "#b2640a"
56 | groups:
57 | - "Present | incip[iēns] | "
58 | - "Future | {incept}[ūrus] | incip[iendus]"
59 | - "Perfect | | {incept}[us]"
60 |
61 | - title: Gerund
62 | fill: "#a020cb"
63 | type: headerless
64 | groups:
65 | - "| incip[iendī] | incip[iendō] | incip[iendum] | incip[iendō]"
66 |
67 | - title: Imperative
68 | fill: "#04aba5"
69 | groups:
70 | - "singular | incip[e] | incip[ere]"
71 | - "plural | incip[ite] | incip[iminī]"
72 |
--------------------------------------------------------------------------------
/latin-conjugations.pv:
--------------------------------------------------------------------------------
1 | import re
2 | import yaml
3 |
4 | with open("latin-1.yaml", "r") as f:
5 | data = yaml.load(f.read())
6 |
7 | page_width = 792
8 | page_height = 612
9 |
10 | heading_size = 7
11 | group_heading_size = 7
12 | word_size = 9
13 | horizontal_spacing = 63
14 | default_spacing = 13 # line spacing
15 | group_header_size = 9
16 | group_header_offset = 16
17 | row_spacing = 130
18 |
19 | size(page_width, page_height)
20 | background(1)
21 |
22 | font("Minion", size=11)
23 |
24 | stylesheet("ending", weight="bold")
25 | #stylesheet("stem", italic=True)
26 |
27 | def style_line(l):
28 | # swap out [ending] for ending
29 | text_line = re.sub(r"\{(.*?)\}", r"\1", l)
30 | text_line = re.sub(r"\[(.*?)\]", r"\1", text_line)
31 | return "%s" % text_line
32 |
33 | def draw_chart(x, y, chart, fill_color="#cb202c", spacing=default_spacing):
34 | push()
35 | translate(x, y)
36 |
37 | font("Minion", size=word_size, tracking=-8)
38 | fill(0)
39 |
40 | stylesheet("ending", fill=fill_color, weight="bold")
41 |
42 | for l in chart:
43 | if l != '':
44 | text(0, 0, xml=style_line(l))
45 |
46 | # line spacing
47 | translate(0, spacing)
48 |
49 | font(tracking=0)
50 |
51 | pop()
52 |
53 | def draw_group(x, y, group, fill_color="#cb202c", spacing=default_spacing):
54 | push()
55 | translate(x, y)
56 |
57 | if group['chart']:
58 | font("Museo Sans", size=group_heading_size, tracking=15)
59 | fill(0.5)
60 | if group['title']:
61 | text(group['title'].upper(), 0, 0)
62 | font(tracking=0)
63 |
64 | draw_chart(0, group_header_offset, group['chart'], fill_color, spacing)
65 |
66 | pop()
67 |
68 | def draw_headings(x, y, headings, spacing=default_spacing):
69 | push()
70 | translate(x, y + group_header_offset - 0.75)
71 | font("Minion", size=heading_size, sc=True)
72 | fill(0.5)
73 |
74 | for line in headings:
75 | text(line, 0, 0)
76 |
77 | # line spacing
78 | translate(0, spacing)
79 |
80 | font(sc=False)
81 | pop()
82 |
83 | def draw_group_header(x, y, label, width):
84 | push()
85 | fill(0)
86 | stroke(0.5)
87 | translate(x, y)
88 | font("Museo Sans", size=group_header_size, tracking=15)
89 | line(0, -11, width, -11)
90 | text(label.upper(), 0, 0)
91 | font(tracking=0)
92 | pop()
93 |
94 | def parse_list(groups):
95 | response = []
96 |
97 | for line in groups:
98 | data = line.split('|')
99 |
100 | group = {
101 | 'title': data[0].strip(),
102 | 'chart': [x.strip() for x in data[1:]],
103 | }
104 |
105 | response.append(group)
106 |
107 | return response
108 |
109 | headings = [
110 | '1st sg.',
111 | '2nd sg.',
112 | '3rd sg.',
113 | '1st pl.',
114 | '2nd pl.',
115 | '3rd pl.',
116 | ]
117 |
118 | active_headings = [
119 | 'active',
120 | 'passive',
121 | ]
122 |
123 | gerund_headings = [
124 | 'gen.',
125 | 'dat.',
126 | 'acc.',
127 | 'abl.',
128 | ]
129 |
130 | margin = 30
131 |
132 | # Heading
133 |
134 | font("Museo Sans", size=14, tracking=15)
135 | text("Latin — {}".format(data['label']).upper(), margin, margin + 10)
136 |
137 | align(RIGHT)
138 | font("Minion", size=9, italic=True, tracking=0)
139 | stroke(0)
140 | fill(0.5)
141 | text("bencrowder.net • Last modified {}".format(data['updated']), page_width-margin, margin + 10)
142 | font(italic=False)
143 |
144 | align(LEFT)
145 | if 'example_word' in data:
146 | text(margin, margin + 25, xml=style_line(data['example_word']))
147 |
148 | pen(0.5)
149 |
150 | # Groups
151 |
152 | base_y = margin + 50
153 |
154 | for group in data['left']:
155 | draw_group_header(margin, base_y, group['title'], 430)
156 | draw_headings(30, base_y + 20, headings)
157 |
158 | for index, g in enumerate(parse_list(group['groups'])):
159 | draw_group(margin + 40 + (index * horizontal_spacing), base_y + 20, g, fill_color=group['fill'])
160 |
161 | base_y += row_spacing
162 |
163 | # Right side
164 | right_x = 520
165 | base_y = margin + 50
166 |
167 | for group in data['right']:
168 | if 'type' in group and group['type'] == 'headerless':
169 | headings_list = gerund_headings
170 | base = base_y + 4
171 | else:
172 | headings_list = active_headings
173 | base = base_y + 20
174 |
175 | draw_group_header(right_x, base_y, group['title'], 242)
176 | draw_headings(right_x, base, headings_list)
177 |
178 | for index, g in enumerate(parse_list(group['groups'])):
179 | draw_group(right_x + 40 + (index * horizontal_spacing), base, g, fill_color=group['fill'])
180 |
181 | base_y += row_spacing
182 |
183 | if 'note' in data:
184 | font("Minion", size=8, italic=True, tracking=0)
185 | text(data['note'], right_x, page_height - margin - 11)
186 |
187 |
188 | export(data['output'])
189 |
--------------------------------------------------------------------------------
/latin-conjugations-worksheet.pv:
--------------------------------------------------------------------------------
1 | # Note: this is somewhat hackish and needs to be integrated into the main
2 | # latin-conjugations.pv file at some point
3 |
4 | import re
5 | import yaml
6 |
7 | with open("latin-conjugations-worksheet.yaml", "r") as f:
8 | data = yaml.load(f.read())
9 |
10 | page_width = 792
11 | page_height = 612
12 |
13 | heading_size = 7
14 | group_heading_size = 7
15 | word_size = 9
16 | horizontal_spacing = 63
17 | default_spacing = 13 # line spacing
18 | group_header_size = 9
19 | group_header_offset = 16
20 | row_spacing = 130
21 |
22 | size(page_width, page_height)
23 | background(1)
24 |
25 | font("Minion", size=11)
26 |
27 | stylesheet("ending", weight="bold")
28 |
29 | def style_line(l):
30 | # swap out [ending] for ending
31 | text_line = re.sub(r"\{(.*?)\}", r"\1", l)
32 | text_line = re.sub(r"\[(.*?)\]", r"\1", text_line)
33 | return "%s" % text_line
34 |
35 | def draw_chart(x, y, chart, fill_color="#cb202c", spacing=default_spacing):
36 | push()
37 | translate(x, y)
38 |
39 | font("Minion", size=word_size, tracking=-8)
40 | fill(0)
41 |
42 | stylesheet("ending", fill=fill_color, weight="bold")
43 |
44 | pen(0.5)
45 | stroke(0.5)
46 | for l in chart:
47 | if l != '':
48 | line(0, 1, 50, 1)
49 |
50 | # line spacing
51 | translate(0, spacing)
52 |
53 | font(tracking=0)
54 |
55 | pop()
56 |
57 | def draw_group(x, y, group, fill_color="#cb202c", spacing=default_spacing):
58 | push()
59 | translate(x, y)
60 |
61 | if group['chart']:
62 | font("Museo Sans", size=group_heading_size, tracking=15)
63 | fill(0.5)
64 | if group['title']:
65 | text(group['title'].upper(), 0, 0)
66 | font(tracking=0)
67 |
68 | draw_chart(0, group_header_offset, group['chart'], fill_color, spacing)
69 |
70 | pop()
71 |
72 | def draw_headings(x, y, headings, spacing=default_spacing):
73 | push()
74 | translate(x, y + group_header_offset - 0.75)
75 | font("Minion", size=heading_size, sc=True)
76 | fill(0.5)
77 |
78 | for line in headings:
79 | text(line, 0, 0)
80 |
81 | # line spacing
82 | translate(0, spacing)
83 |
84 | font(sc=False)
85 | pop()
86 |
87 | def draw_group_header(x, y, label, width):
88 | push()
89 | fill(0)
90 | stroke(0.5)
91 | translate(x, y)
92 | font("Museo Sans", size=group_header_size, tracking=15)
93 | line(0, -11, width, -11)
94 | text(label.upper(), 0, 0)
95 | font(tracking=0)
96 | pop()
97 |
98 | def parse_list(groups):
99 | response = []
100 |
101 | for line in groups:
102 | data = line.split('|')
103 |
104 | group = {
105 | 'title': data[0].strip(),
106 | 'chart': [x.strip() for x in data[1:]],
107 | }
108 |
109 | response.append(group)
110 |
111 | return response
112 |
113 | headings = [
114 | '1st sg.',
115 | '2nd sg.',
116 | '3rd sg.',
117 | '1st pl.',
118 | '2nd pl.',
119 | '3rd pl.',
120 | ]
121 |
122 | active_headings = [
123 | 'active',
124 | 'passive',
125 | ]
126 |
127 | gerund_headings = [
128 | 'gen.',
129 | 'dat.',
130 | 'acc.',
131 | 'abl.',
132 | ]
133 |
134 | margin = 30
135 |
136 | # Heading
137 |
138 | font("Museo Sans", size=14, tracking=15)
139 | text("Latin — Conjugation Worksheet".upper(), margin, margin + 10)
140 |
141 | align(RIGHT)
142 | font("Minion", size=9, italic=True, tracking=0)
143 | stroke(0)
144 | fill(0.5)
145 | text("bencrowder.net — Last modified 1 November 2018", page_width-margin, margin + 10)
146 | font(italic=False)
147 |
148 | align(LEFT)
149 | text("Word: ", margin, margin + 25)
150 |
151 | pen(0.5)
152 |
153 | # Groups
154 |
155 | base_y = margin + 50
156 |
157 | for group in data['left']:
158 | draw_group_header(margin, base_y, group['title'], 430)
159 | draw_headings(30, base_y + 20, headings)
160 |
161 | for index, g in enumerate(parse_list(group['groups'])):
162 | draw_group(margin + 40 + (index * horizontal_spacing), base_y + 20, g, fill_color=group['fill'])
163 |
164 | base_y += row_spacing
165 |
166 | # Right side
167 | right_x = 520
168 | base_y = margin + 50
169 |
170 | for group in data['right']:
171 | if 'type' in group and group['type'] == 'headerless':
172 | headings_list = gerund_headings
173 | base = base_y + 4
174 | else:
175 | headings_list = active_headings
176 | base = base_y + 20
177 |
178 | draw_group_header(right_x, base_y, group['title'], 242)
179 | draw_headings(right_x, base, headings_list)
180 |
181 | for index, g in enumerate(parse_list(group['groups'])):
182 | draw_group(right_x + 40 + (index * horizontal_spacing), base, g, fill_color=group['fill'])
183 |
184 | base_y += row_spacing
185 |
186 | if 'note' in data:
187 | font("Minion", size=8, italic=True, tracking=0)
188 | text(data['note'], right_x, page_height - margin - 11)
189 |
190 |
191 | export("latin-conjugations-worksheet.pdf")
192 |
--------------------------------------------------------------------------------