fenris commited on 2016-03-10 18:07:41
Zeige 13 geänderte Dateien mit 313 Einfügungen und 19 Löschungen.
| ... | ... |
@@ -0,0 +1,171 @@ |
| 1 |
+import os |
|
| 2 |
+import sys |
|
| 3 |
+ |
|
| 4 |
+ |
|
| 5 |
+class class_rule(object): |
|
| 6 |
+ |
|
| 7 |
+ def __init__(self, name, dependencies, commands, phony = False): |
|
| 8 |
+ self.name = name |
|
| 9 |
+ self.dependencies = dependencies |
|
| 10 |
+ self.commands = commands |
|
| 11 |
+ self.phony = phony |
|
| 12 |
+ |
|
| 13 |
+ |
|
| 14 |
+ def __str__(self): |
|
| 15 |
+ output = "" |
|
| 16 |
+ output += "%s: %s\n" % (self.name, " ".join(self.dependencies)) |
|
| 17 |
+ for command in self.commands: |
|
| 18 |
+ output += ("\t@ %s\n" % (command.compile_unix()))
|
|
| 19 |
+ if (self.phony): output += (".PHONY: %s\n" % self.name)
|
|
| 20 |
+ return output |
|
| 21 |
+ |
|
| 22 |
+ |
|
| 23 |
+ |
|
| 24 |
+class class_command(object): |
|
| 25 |
+ def __init__(self, parameters): self.parameters = parameters |
|
| 26 |
+ def compile_unix(self): raise NotImplementedError |
|
| 27 |
+ def compile_ant(self): raise NotImplementedError |
|
| 28 |
+ |
|
| 29 |
+class class_command_log(class_command): |
|
| 30 |
+ def __init__(self, parameters): class_command.__init__(self, parameters) |
|
| 31 |
+ def compile_unix(self): return ("echo -e '-- %s'" % (self.parameters["message"]))
|
|
| 32 |
+ |
|
| 33 |
+class class_command_directory_create(class_command): |
|
| 34 |
+ def __init__(self, parameters): class_command.__init__(self, parameters) |
|
| 35 |
+ def compile_unix(self): return ("mkdir --parents %s" % (self.parameters["path"]))
|
|
| 36 |
+ |
|
| 37 |
+class class_command_file_copy(class_command): |
|
| 38 |
+ def __init__(self, parameters): class_command.__init__(self, parameters) |
|
| 39 |
+ def compile_unix(self): return ("cp --recursive %s %s" % (self.parameters["path-from"], self.parameters["path-to"]))
|
|
| 40 |
+ |
|
| 41 |
+class class_command_directory_remove(class_command): |
|
| 42 |
+ def __init__(self, parameters): class_command.__init__(self, parameters) |
|
| 43 |
+ def compile_unix(self): return ("rm --recursive --force %s" % (self.parameters["path"]))
|
|
| 44 |
+ |
|
| 45 |
+class class_command_image_convert(class_command): |
|
| 46 |
+ def __init__(self, parameters): class_command.__init__(self, parameters) |
|
| 47 |
+ def compile_unix(self): return ("convert %s %s" % (self.parameters["path-from"], self.parameters["path-to"]))
|
|
| 48 |
+ |
|
| 49 |
+class class_command_latex_compile(class_command): |
|
| 50 |
+ def __init__(self, parameters): class_command.__init__(self, parameters) |
|
| 51 |
+ def compile_unix(self): return ("xelatex -output-directory=%s %s > /dev/null" % (self.parameters["output"], self.parameters["path"]))
|
|
| 52 |
+ |
|
| 53 |
+ |
|
| 54 |
+ |
|
| 55 |
+def main(): |
|
| 56 |
+ |
|
| 57 |
+ dirs = {
|
|
| 58 |
+ "source": "source", |
|
| 59 |
+ "temp": "temp", |
|
| 60 |
+ "build": "build", |
|
| 61 |
+ } |
|
| 62 |
+ |
|
| 63 |
+ texs = [ |
|
| 64 |
+ os.path.join(dirs["source"],"tex","folksprak.tex"), |
|
| 65 |
+ os.path.join(dirs["source"],"tex","packages.tex"), |
|
| 66 |
+ os.path.join(dirs["source"],"tex","settings.tex"), |
|
| 67 |
+ os.path.join(dirs["source"],"tex","meta.tex"), |
|
| 68 |
+ os.path.join(dirs["source"],"tex","commands.tex"), |
|
| 69 |
+ os.path.join(dirs["source"],"tex","preface.tex"), |
|
| 70 |
+ os.path.join(dirs["source"],"tex","grammar.tex"), |
|
| 71 |
+ os.path.join(dirs["source"],"tex","phonology_and_orthography.tex"), |
|
| 72 |
+ os.path.join(dirs["source"],"tex","conjugation.tex"), |
|
| 73 |
+ os.path.join(dirs["source"],"tex","declension.tex"), |
|
| 74 |
+ os.path.join(dirs["source"],"tex","attributes.tex"), |
|
| 75 |
+ ] |
|
| 76 |
+ |
|
| 77 |
+ rules = [] |
|
| 78 |
+ rules.append( |
|
| 79 |
+ class_rule( |
|
| 80 |
+ "all", |
|
| 81 |
+ [os.path.join(dirs["build"],"folksprak.pdf")], |
|
| 82 |
+ [], |
|
| 83 |
+ True |
|
| 84 |
+ ) |
|
| 85 |
+ ) |
|
| 86 |
+ rules.append( |
|
| 87 |
+ class_rule( |
|
| 88 |
+ "clean", |
|
| 89 |
+ [], |
|
| 90 |
+ [ |
|
| 91 |
+ class_command_directory_remove({
|
|
| 92 |
+ "path": dirs["temp"], |
|
| 93 |
+ }), |
|
| 94 |
+ ], |
|
| 95 |
+ True |
|
| 96 |
+ ) |
|
| 97 |
+ ) |
|
| 98 |
+ rules.append( |
|
| 99 |
+ class_rule( |
|
| 100 |
+ "clear", |
|
| 101 |
+ ["clean"], |
|
| 102 |
+ [ |
|
| 103 |
+ class_command_directory_remove({
|
|
| 104 |
+ "path": dirs["build"], |
|
| 105 |
+ }), |
|
| 106 |
+ ], |
|
| 107 |
+ True |
|
| 108 |
+ ) |
|
| 109 |
+ ) |
|
| 110 |
+ rules.append( |
|
| 111 |
+ class_rule( |
|
| 112 |
+ os.path.join(dirs["temp"],"media","logo.pdf"), |
|
| 113 |
+ [os.path.join(dirs["source"],"media","logo.svg")], |
|
| 114 |
+ [ |
|
| 115 |
+ class_command_log({
|
|
| 116 |
+ "message": "converting logo ..." |
|
| 117 |
+ }), |
|
| 118 |
+ class_command_directory_create({
|
|
| 119 |
+ "path": os.path.join(dirs["temp"],"media"), |
|
| 120 |
+ }), |
|
| 121 |
+ class_command_image_convert({
|
|
| 122 |
+ "path-from": os.path.join(dirs["source"],"media","logo.svg"), |
|
| 123 |
+ "path-to": os.path.join(dirs["temp"],"media","logo.pdf"), |
|
| 124 |
+ }), |
|
| 125 |
+ ] |
|
| 126 |
+ ) |
|
| 127 |
+ ) |
|
| 128 |
+ rules.append( |
|
| 129 |
+ class_rule( |
|
| 130 |
+ os.path.join(dirs["temp"],"folksprak.pdf"), |
|
| 131 |
+ texs + [os.path.join(dirs["temp"],"media","logo.pdf")], |
|
| 132 |
+ [ |
|
| 133 |
+ class_command_log({
|
|
| 134 |
+ "message": "compiling document ..." |
|
| 135 |
+ }), |
|
| 136 |
+ class_command_directory_create({
|
|
| 137 |
+ "path": dirs["temp"], |
|
| 138 |
+ }), |
|
| 139 |
+ class_command_latex_compile({
|
|
| 140 |
+ "path": os.path.join(dirs["source"],"tex","folksprak.tex"), |
|
| 141 |
+ "output": os.path.join(dirs["temp"]), |
|
| 142 |
+ }), |
|
| 143 |
+ class_command_latex_compile({
|
|
| 144 |
+ "path": os.path.join(dirs["source"],"tex","folksprak.tex"), |
|
| 145 |
+ "output": os.path.join(dirs["temp"]), |
|
| 146 |
+ }), |
|
| 147 |
+ ] |
|
| 148 |
+ ) |
|
| 149 |
+ ) |
|
| 150 |
+ rules.append( |
|
| 151 |
+ class_rule( |
|
| 152 |
+ os.path.join(dirs["build"],"folksprak.pdf"), |
|
| 153 |
+ [os.path.join(dirs["temp"],"folksprak.pdf")], |
|
| 154 |
+ [ |
|
| 155 |
+ class_command_directory_create({
|
|
| 156 |
+ "path": os.path.join(dirs["build"]), |
|
| 157 |
+ }), |
|
| 158 |
+ class_command_file_copy({
|
|
| 159 |
+ "path-from": os.path.join(dirs["temp"],"folksprak.pdf"), |
|
| 160 |
+ "path-to": os.path.join(dirs["build"],"folksprak.pdf"), |
|
| 161 |
+ }), |
|
| 162 |
+ ] |
|
| 163 |
+ ) |
|
| 164 |
+ ) |
|
| 165 |
+ |
|
| 166 |
+ for rule in rules: print(rule) |
|
| 167 |
+ sys.stderr.write("\n[information]\tThe output of this script is meant to be redirected into a GNU-makefile\n")
|
|
| 168 |
+ |
|
| 169 |
+ |
|
| 170 |
+main() |
|
| 171 |
+ |
| ... | ... |
@@ -1,16 +1,26 @@ |
| 1 |
-default: build/folksprak.pdf |
|
| 2 |
-.PHONY: default |
|
| 1 |
+all: build/folksprak.pdf |
|
| 2 |
+.PHONY: all |
|
| 3 | 3 |
|
| 4 |
-temp/media/folksprak.pdf: source/media/folksprak.svg |
|
| 5 |
- mkdir --parents temp/media |
|
| 6 |
- convert source/media/folksprak.svg temp/media/folksprak.pdf |
|
| 4 |
+clean: |
|
| 5 |
+ @ rm --recursive --force temp |
|
| 6 |
+.PHONY: clean |
|
| 7 | 7 |
|
| 8 |
-temp/folksprak.pdf: source/tex/folksprak.tex temp/media/folksprak.pdf |
|
| 9 |
- mkdir --parents temp |
|
| 10 |
- xelatex -output-directory=temp source/tex/folksprak.tex |
|
| 8 |
+clear: clean |
|
| 9 |
+ @ rm --recursive --force build |
|
| 10 |
+.PHONY: clear |
|
| 11 | 11 |
|
| 12 |
-build/folksprak.pdf: temp/folksprak.pdf |
|
| 13 |
- mkdir --parents build |
|
| 14 |
- cp --recursive temp/folksprak.pdf build/folksprak.pdf |
|
| 12 |
+temp/media/logo.pdf: source/media/logo.svg |
|
| 13 |
+ @ echo -e '-- converting logo ...' |
|
| 14 |
+ @ mkdir --parents temp/media |
|
| 15 |
+ @ convert source/media/logo.svg temp/media/logo.pdf |
|
| 16 |
+ |
|
| 17 |
+temp/folksprak.pdf: source/tex/folksprak.tex source/tex/packages.tex source/tex/settings.tex source/tex/meta.tex source/tex/commands.tex source/tex/preface.tex source/tex/grammar.tex source/tex/phonology_and_orthography.tex source/tex/conjugation.tex source/tex/declension.tex source/tex/attributes.tex temp/media/logo.pdf |
|
| 18 |
+ @ echo -e '-- compiling document ...' |
|
| 19 |
+ @ mkdir --parents temp |
|
| 20 |
+ @ xelatex -output-directory=temp source/tex/folksprak.tex > /dev/null |
|
| 21 |
+ @ xelatex -output-directory=temp source/tex/folksprak.tex > /dev/null |
|
| 15 | 22 |
|
| 23 |
+build/folksprak.pdf: temp/folksprak.pdf |
|
| 24 |
+ @ mkdir --parents build |
|
| 25 |
+ @ cp --recursive temp/folksprak.pdf build/folksprak.pdf |
|
| 16 | 26 |
|
| ... | ... |
@@ -0,0 +1,35 @@ |
| 1 |
+\newcommand{\ipa}[1]
|
|
| 2 |
+{
|
|
| 3 |
+ [#1] |
|
| 4 |
+} |
|
| 5 |
+ |
|
| 6 |
+\newcommand{\wordfs}[1]
|
|
| 7 |
+{
|
|
| 8 |
+ \textbf{#1}
|
|
| 9 |
+} |
|
| 10 |
+ |
|
| 11 |
+\newcommand{\url}[1]
|
|
| 12 |
+{
|
|
| 13 |
+ \texttt{#1}
|
|
| 14 |
+} |
|
| 15 |
+ |
|
| 16 |
+\newcommand{\email}[1]
|
|
| 17 |
+{
|
|
| 18 |
+ \textbf{\texttt{#1}}
|
|
| 19 |
+} |
|
| 20 |
+ |
|
| 21 |
+\newcommand{\pseudosection}[1]
|
|
| 22 |
+{
|
|
| 23 |
+ \section*{#1}
|
|
| 24 |
+} |
|
| 25 |
+ |
|
| 26 |
+\newcommand{\pseudosubsection}[1]
|
|
| 27 |
+{
|
|
| 28 |
+ \subsection*{#1}
|
|
| 29 |
+} |
|
| 30 |
+ |
|
| 31 |
+\newcommand{\todo}[1]
|
|
| 32 |
+{
|
|
| 33 |
+ \colorbox{red}{[ToDo] #1}
|
|
| 34 |
+} |
|
| 35 |
+ |
| ... | ... |
@@ -1,17 +1,23 @@ |
| 1 |
-\documentclass{article}
|
|
| 1 |
+\documentclass{report}
|
|
| 2 | 2 |
|
| 3 | 3 |
\input{source/tex/packages}
|
| 4 | 4 |
\input{source/tex/settings}
|
| 5 | 5 |
\input{source/tex/meta}
|
| 6 |
+\input{source/tex/commands}
|
|
| 6 | 7 |
|
| 7 | 8 |
\begin{document}
|
| 8 | 9 |
|
| 9 | 10 |
\newpage \maketitle |
| 10 |
- \includegraphics[width=1.0\textwidth]{temp/media/folksprak}
|
|
| 11 |
+ % \vspace{20mm}
|
|
| 12 |
+ \begin{center}
|
|
| 13 |
+ \includegraphics[width=0.6\textwidth]{temp/media/logo}
|
|
| 14 |
+ \end{center}
|
|
| 15 |
+ |
|
| 16 |
+ \newpage \input{source/tex/preface}
|
|
| 11 | 17 |
|
| 12 | 18 |
\newpage \tableofcontents |
| 13 | 19 |
|
| 14 |
- \newpage \input{source/tex/phonology_and_orthography}
|
|
| 20 |
+ \newpage \input{source/tex/grammar}
|
|
| 15 | 21 |
|
| 16 | 22 |
\end{document}
|
| 17 | 23 |
|
| ... | ... |
@@ -1,16 +1,41 @@ |
| 1 | 1 |
\begin{section}{Phonology and Orthography}
|
| 2 | 2 |
|
| 3 |
- Folksprak uses the following characters as letters: |
|
| 3 |
+ Folksprak uses the following characters as letters: \\ |
|
| 4 | 4 |
|
| 5 | 5 |
\begin{tabular}{|l|l|l|}
|
| 6 | 6 |
\hline |
| 7 |
- Latin letter & Rune & Canonic Sound Mapping \\ |
|
| 7 |
+ IPA-sound & Latin letter Representation & Runic Representation \\ |
|
| 8 | 8 |
\hline |
| 9 | 9 |
\hline |
| 10 |
- L/l & \- & [l] \\ |
|
| 10 |
+ \ipa{l} & \wordfs{L}/\wordfs{l} & \wordfs{ᛚ} \\
|
|
| 11 | 11 |
\hline |
| 12 |
- M/m & \- & [m] \\ |
|
| 13 |
- N/n & \- & [n] \\ |
|
| 12 |
+ \ipa{m} & \wordfs{M}/\wordfs{m} & \wordfs{ᛗ} \\
|
|
| 13 |
+ \ipa{n} & \wordfs{N}/\wordfs{n} & \wordfs{ᚾ} \\
|
|
| 14 |
+ \ipa{ŋ} & \wordfs{Ng}/\wordfs{ng} & \wordfs{ᛜ} \\
|
|
| 15 |
+ \hline |
|
| 16 |
+ \ipa{g} & \wordfs{G}/\wordfs{g} & \wordfs{ᚷ} \\
|
|
| 17 |
+ \ipa{k} & \wordfs{K}/\wordfs{k} & \wordfs{ᚲ} \\
|
|
| 18 |
+ \ipa{b} & \wordfs{B}/\wordfs{b} & \wordfs{ᛒ} \\
|
|
| 19 |
+ \ipa{p} & \wordfs{P}/\wordfs{p} & \wordfs{ᛈ} \\
|
|
| 20 |
+ \ipa{d} & \wordfs{D}/\wordfs{d} & \wordfs{ᛞ} \\
|
|
| 21 |
+ \ipa{t} & \wordfs{T}/\wordfs{t} & \wordfs{ᛏ} \\
|
|
| 22 |
+ \hline |
|
| 23 |
+ \ipa{v} & \wordfs{V}/\wordfs{v} & \wordfs{ᚹ} \\
|
|
| 24 |
+ \ipa{f} & \wordfs{F}/\wordfs{f} & \wordfs{ᚠ} \\
|
|
| 25 |
+ \ipa{s} & \wordfs{S}/\wordfs{s} & \wordfs{ᛋ} \\
|
|
| 26 |
+ \hline |
|
| 27 |
+ \ipa{h} & \wordfs{H}/\wordfs{h} & \wordfs{ᚺ} \\
|
|
| 28 |
+ \ipa{ɾ} & \wordfs{R}/\wordfs{r} & \wordfs{ᚱ} \\
|
|
| 29 |
+ \hline |
|
| 30 |
+ \ipa{j} & \wordfs{J}/\wordfs{j} & \wordfs{ᛃ} \\
|
|
| 31 |
+ \hline |
|
| 32 |
+ \ipa{i} & \wordfs{I}/\wordfs{i} & \wordfs{ᛁ} \\
|
|
| 33 |
+ \ipa{e} & \wordfs{E}/\wordfs{e} & \wordfs{ᛖ} \\
|
|
| 34 |
+ \ipa{a} & \wordfs{A}/\wordfs{a} & \wordfs{ᚨ} \\
|
|
| 35 |
+ \ipa{o} & \wordfs{O}/\wordfs{o} & \wordfs{ᛟ} \\
|
|
| 36 |
+ \ipa{u} & \wordfs{U}/\wordfs{u} & \wordfs{ᚢ} \\
|
|
| 37 |
+ \ipa{ø} & \wordfs{Oy}/\wordfs{oy} & \wordfs{ᛟᛇ} \\
|
|
| 38 |
+ \ipa{y} & \wordfs{Uy}/\wordfs{uy} & \wordfs{ᚢᛇ} \\
|
|
| 14 | 39 |
\hline |
| 15 | 40 |
\end{tabular}
|
| 16 | 41 |
|
| ... | ... |
@@ -0,0 +1,14 @@ |
| 1 |
+\begin{pseudosection}{Preface}
|
|
| 2 |
+ |
|
| 3 |
+ \begin{pseudosubsection}{What is it about?}
|
|
| 4 |
+ |
|
| 5 |
+ Folksprak is the name of a project that aims to construct an inter-Germanic zonal auxiliary language, which means a language that can be easily understood by any speaker of a Germanic language (a group numbering over 465 million native speakers with an additional 300 to 900 million speaking English as a second language) without ever having learned it. \\ |
|
| 6 |
+ |
|
| 7 |
+ Folksprak is not meant to be designed by any one individual, but rather a collective work created by all interested parties; so you're welcome to participate. \\ |
|
| 8 |
+ |
|
| 9 |
+ The content of this document is the result of a collaboration between people from different parts on earth, connected by the internet. Its not a final specification for Folksprak, but a draft as a base to work on. Please let us know what you think about it and how you would improve it! You can find us in the IRC-Channel \texttt{\#\#folksprak} on \url{irc.freenode.net}. You can also write an E-Mail to \email{admin@folksprak.org}. \\
|
|
| 10 |
+ |
|
| 11 |
+ \end{pseudosubsection}
|
|
| 12 |
+ |
|
| 13 |
+\end{pseudosection}
|
|
| 14 |
+ |
|
| 0 | 15 |