diff --git a/data/css_compress/compress.py b/data/css_compress/compress.py
index 0dd97db..5420128 100644
--- a/data/css_compress/compress.py
+++ b/data/css_compress/compress.py
@@ -79,7 +79,7 @@ print()
print('======== CALL SCSS ========')
out = subprocess.run(['ruby', 'scss', '--style=expanded', '--no-cache', '--update', fsource + ':' + finput],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-print('> scss.bat --style=expanded --no-cache --update ' + fsource + ':' + finput)
+print('> ruby scss --style=expanded --no-cache --update ' + fsource + ':' + finput)
print('STDOUT:')
print(out.stdout.decode('utf-8'))
print('STDERR:')
diff --git a/www/data/css/styles.css b/www/data/css/styles.css
index 7fed657..fdc36ae 100644
--- a/www/data/css/styles.css
+++ b/www/data/css/styles.css
@@ -1886,6 +1886,14 @@ html, body {
margin: 10px;
}
+.bookv_readme {
+ margin: 10px;
+ padding: 16px;
+ background: #EEEEEE;
+ color: #333333;
+ border: 1px solid rgba(0, 0, 0, 0.15);
+}
+
@media (max-width: 991px) {
.bookv_content {
border: none;
diff --git a/www/data/css/styles.min.css b/www/data/css/styles.min.css
index dc128f2..60df156 100644
--- a/www/data/css/styles.min.css
+++ b/www/data/css/styles.min.css
@@ -353,6 +353,7 @@ html,body{margin:0;padding:0;height:100%}
.bookv_dl_github{background:#4078c0}
.bookv_right_lang img{display:inline;height:16pt;max-width:32px;margin:1px 2px 0 2px}
.bookv_extra{height:500px;border:1px solid #333;background:#aaa;margin:10px}
+.bookv_readme{margin:10px;padding:16px;background:#eee;color:#333;border:1px solid rgba(0,0,0,0.15)}
@media(max-width:991px){
.bookv_content{border:0}
#bookv_header h1{font-size:28pt}
diff --git a/www/data/css/styles_booksview.scss b/www/data/css/styles_booksview.scss
index ca659fb..3e781b1 100644
--- a/www/data/css/styles_booksview.scss
+++ b/www/data/css/styles_booksview.scss
@@ -107,6 +107,14 @@
}
+.bookv_readme {
+ margin: 10px;
+ padding: 16px;
+ background: $LAYER2_TXTBLOCK_BG;
+ color: $LAYER2_TXTBLOCK_FG;
+ border:$LAYER2_TXTBLOCK_BORDER;
+}
+
@include rdmedia_range(0,2) {
.bookv_content { border: none; }
#bookv_header h1 { font-size: 28pt; }
diff --git a/www/extern/egg/EGGDatabase.php b/www/extern/egg/EGGDatabase.php
index 613d172..81e0185 100644
--- a/www/extern/egg/EGGDatabase.php
+++ b/www/extern/egg/EGGDatabase.php
@@ -6,8 +6,6 @@ require_once 'Utils.php';
class EGGDatabase
{
- const DB_NAME = "";
-
/** @var string */
private $path;
diff --git a/www/internals/modules/books.php b/www/internals/modules/books.php
index 5923a5f..d05cdba 100644
--- a/www/internals/modules/books.php
+++ b/www/internals/modules/books.php
@@ -32,6 +32,8 @@ class Books implements IWebsiteModule
$a['preview_url'] = '/data/dynamic/bookprev_' . $a['id'] . '.png';
$a['preview_path'] = __DIR__ . '/../../data/dynamic/bookprev_' . $a['id'] . '.png';
+ $a['file_readme'] = (__DIR__ . '/../../statics/books/' . $a['id'] . '.md');
+
$a['url'] = '/books/view/' . $a['id'] . '/' . destructiveUrlEncode($a['title']);
$a['extraimages_urls'] = [];
@@ -68,44 +70,38 @@ class Books implements IWebsiteModule
$ids = [];
- foreach ($this->staticData as $prog)
+ foreach ($this->staticData as $book)
{
- if (in_array($prog['id'], $ids)) return ['result'=>'err', 'message' => 'Duplicate id ' . $prog['id']];
- $ids []= $prog['id'];
+ if (in_array($book['id'], $ids)) return ['result'=>'err', 'message' => 'Duplicate id ' . $book['id']];
+ $ids []= $book['id'];
- if (!file_exists($prog['imgfront_path'])) return ['result'=>'err', 'message' => 'Image (Front) not found ' . $prog['title_short']];
- if (!file_exists($prog['imgfull_path'])) return ['result'=>'err', 'message' => 'Image (Full) not found ' . $prog['title_short']];
+ if (!file_exists($book['imgfront_path'])) return ['result'=>'err', 'message' => 'Image (Front) not found ' . $book['title_short']];
+ if (!file_exists($book['imgfull_path'])) return ['result'=>'err', 'message' => 'Image (Full) not found ' . $book['title_short']];
- foreach ($prog['extraimages_paths'] as $eipath)
+ foreach ($book['extraimages_paths'] as $eipath)
{
- if (!file_exists($eipath)) return ['result'=>'err', 'message' => 'Extra-Image not found ' . $prog['title_short']];
+ if (!file_exists($eipath)) return ['result'=>'err', 'message' => 'Extra-Image not found ' . $book['title_short']];
}
- if ($prog['book_count'] <= 0) return ['result'=>'err', 'message' => 'BookCount must be greater than zero ' . $prog['title_short']];
+ if ($book['book_count'] <= 0) return ['result'=>'err', 'message' => 'BookCount must be greater than zero ' . $book['title_short']];
- if ($prog['book_count'] > 1 && !is_array($prog['pdf'])) return ['result'=>'err', 'message' => 'Attribute [pdf] must be an array ' . $prog['title_short']];
- if ($prog['book_count'] > 1 && count($prog['pdf']) !== $prog['book_count']) return ['result'=>'err', 'message' => 'Attribute [pdf] must be the correct size ' . $prog['title_short']];
- if ($prog['book_count'] === 1 && !is_string($prog['pdf'])) return ['result'=>'err', 'message' => 'Attribute [pdf] must be an string ' . $prog['title_short']];
+ if ($book['book_count'] > 1 && !is_array($book['pdf'])) return ['result'=>'err', 'message' => 'Attribute [pdf] must be an array ' . $book['title_short']];
+ if ($book['book_count'] > 1 && count($book['pdf']) !== $book['book_count']) return ['result'=>'err', 'message' => 'Attribute [pdf] must be the correct size ' . $book['title_short']];
+ if ($book['book_count'] === 1 && !is_string($book['pdf'])) return ['result'=>'err', 'message' => 'Attribute [pdf] must be an string ' . $book['title_short']];
- if ($prog['book_count'] > 1 && !is_array($prog['pages'])) return ['result'=>'err', 'message' => 'Attribute [pages] must be an array ' . $prog['title_short']];
- if ($prog['book_count'] > 1 && count($prog['pages']) !== $prog['book_count']) return ['result'=>'err', 'message' => 'Attribute [pages] must be the correct size ' . $prog['title_short']];
- if ($prog['book_count'] === 1 && !is_string($prog['pages'])) return ['result'=>'err', 'message' => 'Attribute [pages] must be an string ' . $prog['title_short']];
+ if ($book['book_count'] > 1 && !is_array($book['pages'])) return ['result'=>'err', 'message' => 'Attribute [pages] must be an array ' . $book['title_short']];
+ if ($book['book_count'] > 1 && count($book['pages']) !== $book['book_count']) return ['result'=>'err', 'message' => 'Attribute [pages] must be the correct size ' . $book['title_short']];
+ if ($book['book_count'] === 1 && !is_string($book['pages'])) return ['result'=>'err', 'message' => 'Attribute [pages] must be an string ' . $book['title_short']];
+
+ if (!file_exists($book['file_readme'])) return ['result'=>'err', 'message' => 'Readme not found ' . $book['title_short']];
+
+ if (!file_exists($book['preview_path'])) $warn = ['result'=>'warn', 'message' => 'Preview not found ' . $book['title_short']];
}
if ($warn != null) return $warn;
return ['result'=>'ok', 'message' => ''];
}
- public function checkThumbnails()
- {
- foreach (self::listAll() as $book)
- {
- if (!file_exists($book['preview_path'])) return ['result'=>'err', 'message' => 'Preview not found ' . $book['title_short']];
- }
-
- return ['result'=>'ok', 'message' => ''];
- }
-
public function createPreview($prog)
{
$src = $prog['imgfront_path'];
@@ -139,4 +135,9 @@ class Books implements IWebsiteModule
return "Online";
}
+
+ public function getREADME($book)
+ {
+ return file_get_contents($book['file_readme']);
+ }
}
\ No newline at end of file
diff --git a/www/internals/modules/programs.php b/www/internals/modules/programs.php
index ba2e338..cbffcfb 100644
--- a/www/internals/modules/programs.php
+++ b/www/internals/modules/programs.php
@@ -251,22 +251,14 @@ class Programs implements IWebsiteModule
{
if (!file_exists($eipath)) return ['result'=>'err', 'message' => 'Extra-Image not found ' . $prog['name'], 'long' => $eipath];
}
+
+ if (!file_exists($prog['preview_path'])) $warn = ['result'=>'warn', 'message' => 'Preview not found ' . $prog['name']];
}
if ($warn != null) return $warn;
return ['result'=>'ok', 'message' => ''];
}
- public function checkThumbnails()
- {
- foreach ($this->staticData as $prog)
- {
- if (!file_exists($prog['preview_path'])) return ['result'=>'err', 'message' => 'Preview not found ' . $prog['name']];
- }
-
- return ['result'=>'ok', 'message' => ''];
- }
-
public function createPreview($prog)
{
$src = $prog['mainimage_path'];
diff --git a/www/pages/books_view.php b/www/pages/books_view.php
index 422bbf7..6bf48d1 100644
--- a/www/pages/books_view.php
+++ b/www/pages/books_view.php
@@ -108,5 +108,9 @@ $FRAME_OPTIONS->addScript('/data/javascript/ms_basic.js', true);
+
+ renderMarkdown($SITE->modules->Books()->getREADME($book)); ?>
+
+
diff --git a/www/statics/books/apgte1.md b/www/statics/books/apgte1.md
new file mode 100644
index 0000000..0c5d74b
--- /dev/null
+++ b/www/statics/books/apgte1.md
@@ -0,0 +1,49 @@
+A Practical Guide To Evil (LyX)
+===============================
+
+[https://practicalguidetoevil.wordpress.com/](https://practicalguidetoevil.wordpress.com/) LyX files
+
+----------
+
+A pdf version of *A Practical Guide To Evil* used for printing the book on [epubli.com](https://www.epubli.de/)
+
+Font and back cover image edited with [Paint.net](http://www.getpaint.net/), [Gimp](https://www.gimp.org/) and [canva.com](https://www.canva.com)
+Front image from [sandara](http://sandara.deviantart.com/art/Catherine-Foundling-608331843)
+
+*you will need the [Crimson Text](https://www.google.com/fonts/specimen/Crimson+Text) and [ Linux Biolinum](http://sourceforge.net/projects/linuxlibertine/?source=typ_redirect) font - and [LyX 2.1.5](http://www.lyx.org/)*
+
+###Chapters
+~~~
+
+0. Prologue
+1. Knife
+2. Invitation
+3. Party
+4. Name
+5. Role
+6. Aspect
+7. Sword
+8. Introduction
+9. Claimant
+10. Menace
+11. Sucker Punch
+12. Squire
+13. Order
+14. Villain
+15. Company
+16. Game
+17. Set
+18. Match
+19. Pivot
+20. Rise
+21. Fall
+22. All According To
+23. Morok’s Plan
+24. Aisha’s Plan
+25. Snatcher’s Plan
+26. Juniper’s Plan
+27. Callow’s Plan
+28. Win Condition
+29. Epilogue
+
+~~~
\ No newline at end of file
diff --git a/www/statics/books/hpmor1.md b/www/statics/books/hpmor1.md
new file mode 100644
index 0000000..3b1396e
--- /dev/null
+++ b/www/statics/books/hpmor1.md
@@ -0,0 +1,84 @@
+HPMOR-LyX
+=========
+
+[Harry Potter and the Methods of Rationality](http://hpmor.com/) LyX files
+
+----------
+
+
+"Cleaner" version than the one by IlCensore: *(but still - big thanks to him, for creating all the lyx files for all the chapters)*
+ - Removed Images
+ - Split into three books (1+2 | 3+4 | 5+6)
+ - Same style across all three volumes
+ - Removed compiler errors (at least on my machine)
+ - etc etc
+
+*you will need the [Crimson](https://www.google.com/fonts/specimen/Crimson+Text) and [Biolinum](http://sourceforge.net/projects/linuxlibertine/?source=typ_redirect) font - and [LyX](http://www.lyx.org/)*
+
+### Calculations ([official](http://hpmor.com/) PDFs)
+~~~
+Book 1: HJPEV and the Methods of Rationality :: 351 p
+Book 2: HJPEV and the Professor's Games :: 287 p
+Book 3: HJPEV and the Shadows of Death :: 397 p
+Book 4: HJG and the Phoenix's Call :: 393 p
+Book 5: HJPEV and the Last Enemy :: 231 p
+Book 6: HJPEV and the Philosopher's Stone :: 319 p
+
+VOL 1 : 638
+VOL 2 : 790
+VOL 3 : 550
+________________
+SUM : 1978 p
+~~~
+
+### Calculations (my LyX files)
+~~~
+VOL 1 : Ch 001-021 + 022-037 -> 597p ( epubli: 32€ )
+VOL 2 : Ch 038-064 + 065-085 -> 719p ( epubli: 45€ )
+VOL 3 : Ch 086-099 + 100-122 -> 493p ( epubli: 38€ )
+________________
+1809p ( 115 € )
+~~~
+
+### Chapters
+~~~
+
+1. A Day of Very Low Probability
+2. Everything I Believe Is False
+3. Comparing Reality To Its Alternatives
+4. The Efficient Market Hypothesis
+5. The Fundamental Attribution Error
+6. The Planning Fallacy
+7. Reciprocation
+8. Positive Bias
+9. Title Redacted, Part I
+10. Self Awareness, Part II
+11. Omake Files 1, 2, 3
+12. Impulse Control
+13. Asking the Wrong Questions
+14. The Unknown and the Unknowable
+15. Conscientiousness
+16. Lateral Thinking
+17. Locating the Hypothesis
+18. Dominance Hierarchies
+19. Delayed Gratification
+20. Bayes's Theorem
+21. Rationalization
+22. The Scientific Method
+23. Belief in Belief
+24. Machiavellian Intelligence Hypothesis
+25. Hold Off on Proposing Solutions
+26. Noticing Confusion
+27. Empathy
+28. Reductionism
+29. Egocentric Bias
+30. Working in Groups, Pt 1
+31. Working in Groups, Pt 2
+32. Interlude: Personal Financial Management
+33. Coordination Problems, Pt 1
+34. Coordination Problems, Pt 2
+35. Coordination Problems, Pt 3
+36. Status Differentials
+37. Interlude: Crossing the Boundary
+
+~~~
diff --git a/www/statics/books/hpmor2.md b/www/statics/books/hpmor2.md
new file mode 100644
index 0000000..ad6ad63
--- /dev/null
+++ b/www/statics/books/hpmor2.md
@@ -0,0 +1,95 @@
+HPMOR-LyX
+=========
+
+[Harry Potter and the Methods of Rationality](http://hpmor.com/) LyX files
+
+----------
+
+
+"Cleaner" version than the one by IlCensore: *(but still - big thanks to him, for creating all the lyx files for all the chapters)*
+ - Removed Images
+ - Split into three books (1+2 | 3+4 | 5+6)
+ - Same style across all three volumes
+ - Removed compiler errors (at least on my machine)
+ - etc etc
+
+*you will need the [Crimson](https://www.google.com/fonts/specimen/Crimson+Text) and [Biolinum](http://sourceforge.net/projects/linuxlibertine/?source=typ_redirect) font - and [LyX](http://www.lyx.org/)*
+
+### Calculations ([official](http://hpmor.com/) PDFs)
+~~~
+Book 1: HJPEV and the Methods of Rationality :: 351 p
+Book 2: HJPEV and the Professor's Games :: 287 p
+Book 3: HJPEV and the Shadows of Death :: 397 p
+Book 4: HJG and the Phoenix's Call :: 393 p
+Book 5: HJPEV and the Last Enemy :: 231 p
+Book 6: HJPEV and the Philosopher's Stone :: 319 p
+
+VOL 1 : 638
+VOL 2 : 790
+VOL 3 : 550
+________________
+SUM : 1978 p
+~~~
+
+### Calculations (my LyX files)
+~~~
+VOL 1 : Ch 001-021 + 022-037 -> 597p ( epubli: 32€ )
+VOL 2 : Ch 038-064 + 065-085 -> 719p ( epubli: 45€ )
+VOL 3 : Ch 086-099 + 100-122 -> 493p ( epubli: 38€ )
+________________
+1809p ( 115 € )
+~~~
+
+### Chapters
+~~~
+
+38. The Cardinal Sin
+39. Pretending to be Wise, Pt 1
+40. Pretending to be Wise, Pt 2
+41. Frontal Override
+42. Courage
+43. Humanism, Pt 1
+44. Humanism, Pt 2
+45. Humanism, Pt 3
+46. Humanism, Pt 4
+47. Personhood Theory
+48. Utilitarian Priorities
+49. Prior Information
+50. Self Centeredness
+51. Title Redacted, Pt 1
+52. The Stanford Prison Experiment, Pt 2
+53. The Stanford Prison Experiment, Pt 3
+54. The Stanford Prison Experiment, Pt 4
+55. The Stanford Prison Experiment, Pt 5
+56. TSPE, Constrained Optimization, Pt 6
+57. TSPE, Constrained Cognition, Pt 7
+58. TSPE, Constrained Cognition, Pt 8
+59. TSPE, Curiosity, Pt 9
+60. The Stanford Prison Experiment, Pt 10
+61. TSPE, Secrecy and Openness, Pt 11
+62. The Stanford Prison Experiment, Final
+63. TSPE, Aftermaths
+64. Omake Files 4, Alternate Parallels
+65. Contagious Lies
+66. Self Actualization, Pt 1
+67. Self Actualization, Pt 2
+68. Self Actualization, Pt 3
+69. Self Actualization, Pt 4
+70. Self Actualization, Pt 5
+71. Self Actualization, Pt 6
+72. SA, Plausible Deniability, Pt 7
+73. SA, The Sacred and the Mundane, Pt 8
+74. SA, Escalation of Conflicts, Pt 9
+75. Self Actualization Final, Responsibility
+76. Interlude with the Confessor: Sunk Costs
+77. SA, Aftermaths: Surface Appearances
+78. Taboo Tradeoffs Prelude: Cheating
+79. Taboo Tradeoffs, Pt 1
+80. Taboo Tradeoffs, Pt 2, The Horns Effect
+81. Taboo Tradeoffs, Pt 3
+82. Taboo Tradeoffs, Final
+83. Taboo Tradeoffs, Aftermath 1
+84. Taboo Tradeoffs, Aftermath 2
+85. Taboo Tradeoffs, Aftermath 3, Distance
+
+~~~
diff --git a/www/statics/books/hpmor3.md b/www/statics/books/hpmor3.md
new file mode 100644
index 0000000..3a98873
--- /dev/null
+++ b/www/statics/books/hpmor3.md
@@ -0,0 +1,84 @@
+HPMOR-LyX
+=========
+
+[Harry Potter and the Methods of Rationality](http://hpmor.com/) LyX files
+
+----------
+
+
+"Cleaner" version than the one by IlCensore: *(but still - big thanks to him, for creating all the lyx files for all the chapters)*
+ - Removed Images
+ - Split into three books (1+2 | 3+4 | 5+6)
+ - Same style across all three volumes
+ - Removed compiler errors (at least on my machine)
+ - etc etc
+
+*you will need the [Crimson](https://www.google.com/fonts/specimen/Crimson+Text) and [Biolinum](http://sourceforge.net/projects/linuxlibertine/?source=typ_redirect) font - and [LyX](http://www.lyx.org/)*
+
+### Calculations ([official](http://hpmor.com/) PDFs)
+~~~
+Book 1: HJPEV and the Methods of Rationality :: 351 p
+Book 2: HJPEV and the Professor's Games :: 287 p
+Book 3: HJPEV and the Shadows of Death :: 397 p
+Book 4: HJG and the Phoenix's Call :: 393 p
+Book 5: HJPEV and the Last Enemy :: 231 p
+Book 6: HJPEV and the Philosopher's Stone :: 319 p
+
+VOL 1 : 638
+VOL 2 : 790
+VOL 3 : 550
+________________
+SUM : 1978 p
+~~~
+
+### Calculations (my LyX files)
+~~~
+VOL 1 : Ch 001-021 + 022-037 -> 597p ( epubli: 32€ )
+VOL 2 : Ch 038-064 + 065-085 -> 719p ( epubli: 45€ )
+VOL 3 : Ch 086-099 + 100-122 -> 493p ( epubli: 38€ )
+________________
+1809p ( 115 € )
+~~~
+
+### Chapters
+~~~
+
+86. Multiple Hypothesis Testing
+87. Hedonic Awareness
+88. Time Pressure, Pt 1
+89. Time Pressure, Pt 2
+90. Roles, Pt 1
+91. Roles, Pt 2
+92. Roles, Pt 3
+93. Roles, Pt 4
+94. Roles, Pt 5
+95. Roles, Pt 6
+96. Roles, Pt 7
+97. Roles, Pt 8
+98. Roles, Final
+99. Roles, Aftermath
+100. Precautionary Measures, Pt 1
+101. Precautionary Measures, Pt 2
+102. Caring
+103. Tests
+104. The Truth, Pt 1, Riddles and Answers
+105. The Truth, Pt 2
+106. The Truth, Pt 3
+107. The Truth, Pt 4
+108. The Truth, Pt 5, Answers and Riddles
+109. Reflections
+110. Reflections, Pt 2
+111. Failure, Pt 1
+112. Failure, Pt 2
+113. Final Exam
+114. Shut Up and Do The Impossible
+115. Shut Up and Do The Impossible, Pt 2
+116. Aftermath, Something to Protect, Pt 0
+117. Something to Protect: Minerva McGonagall
+118. Something to Protect: Professor Quirrell
+119. Something to Protect: Albus Dumbledore
+120. Something to Protect: Draco Malfoy
+121. Something to Protect: Severus Snape
+122. Something to Protect: Hermione Granger
+
+~~~
diff --git a/www/statics/books/mm.md b/www/statics/books/mm.md
new file mode 100644
index 0000000..88374fd
--- /dev/null
+++ b/www/statics/books/mm.md
@@ -0,0 +1,32 @@
+The Metropolitan Man (LyX)
+===============================
+
+[The Metropolitan Man](https://www.fanfiction.net/s/10360716/1/) LyX files
+
+----------
+
+A PDF version of *The Metropolitan* used for printing the book on [epubli.com](https://www.epubli.de/)
+
+Font and back cover image created with [Paint.net](http://www.getpaint.net/) and [Gimp](https://www.gimp.org/)
+Front cover art from [Justin Maller](http://justinmaller.com/wallpapers/)
+
+*You will need the [Crimson Text](https://www.google.com/fonts/specimen/Crimson+Text) and [ Linux Biolinum](http://sourceforge.net/projects/linuxlibertine/?source=typ_redirect) font - and [LyX 2.1.5](http://www.lyx.org/)*
+
+### Chapters
+~~~
+
+1. Literally Incredible
+2. Dissemination of Information
+3. The All-Seeing Eye
+4. Like Clockwork
+5. A Stopped Clock
+6. Private Wars
+7. Choices
+8. Peeling Back the Veil
+9. Dust to Dust
+10. A Vast and Terrifying Enemy
+11. Actions and Consequences
+12. Finale, Part 1
+13. Finale, Part 2
+
+~~~
diff --git a/www/statics/books/mol.md b/www/statics/books/mol.md
new file mode 100644
index 0000000..f7c7734
--- /dev/null
+++ b/www/statics/books/mol.md
@@ -0,0 +1,168 @@
+Mother of Learning (LyX)
+===============================
+
+[Mother of Learning](https://www.fictionpress.com/s/2961893) LyX files
+
+----------
+
+A PDF version of *Mother of Learning* used for printing the book on [epubli.com](https://www.epubli.de/)
+
+Front and back cover created with [Gimp](https://www.gimp.org/) and [Paint.net](http://www.getpaint.net/)
+Front cover art from [Zilch](https://www.pixiv.net/en/artworks/69959210)
+Mid book art from [lonsheep](https://lonsheep.tumblr.com/post/148979172041)
+
+*You will need the [Crimson Text](https://www.google.com/fonts/specimen/Crimson+Text) and [ Linux Biolinum](http://sourceforge.net/projects/linuxlibertine/?source=typ_redirect) font - and [LyX 2.1.5](http://www.lyx.org/)*
+
+epubli Settings:
+~~~
+Titel: Mother of Learning
+Autor: Domagoj Kurmaic
+Bindungsart: Softcover
+Papiertyp: 90 g/m² cremeweiß, matt
+Format: Taschenbuch
+Druck Cover: matt
+Druck Inhalt: schwarz/weiß
+Cover-Vorlage: epubli Cover Schwarz
+~~~
+
+| N | Book | Pages | Cost
+|---|------------------|----------|-----------------
+| 1 | Arc I - Part 1 | 298 (+2) | 7.76 €
+| 2 | Arc I - Part 2 | 328 | 8.23 €
+| 3 | Arc II - Part 1 | 330 (+2) | 8.30 €
+| 4 | Arc II - Part 2 | 362 (+2) | 8.84 €
+| 5 | Arc III - Part 1 | 372 | 8.97 €
+| 6 | Arc III - Part 2 | 346 (+2) | 8.57 €
+| 7 | Arc III - Part 3 | 396 | 9.37 €
+| 8 | Arc III - Part 4 | ? | ?
+
+
+
+### Book 1 (Arc I - Part 1)
+~~~
+1 Good Morning Brother
+2 Life’s Little Problems
+3 The Bitter Truth
+4 Stars Fell
+5 Start Over
+6 Concentrate and Try Again
+7 Of Gaps And Pretending
+8 Perspective
+9 Cheaters
+10 Overlooked Details
+11 Limiters
+12 Soul Web
+13 Any Second Now
+~~~
+
+### Book 2 (Arc I - Part 2)
+~~~
+14 The Sister Effect
+15 Busy Friday
+16 We Need To Talk
+17 Sympathy for the Spider
+18 The Pact is Sealed
+19 Tangled Webs
+20 A Matter of Faith
+21 Wheel of Fortune
+22 Complications
+23 Lighting the Fuse
+24 Smoke and Mirrors
+25 The Unexpected
+26 Soulkill
+~~~
+
+### Book 3 (Arc II - Part 1)
+~~~
+27 Cast Adrift
+28 Cauldron
+29 The Hunters and the Hunted
+30 A Game of Shops
+31 Marked
+32 Alternatives
+33 Gateways
+34 Unreasonable Things
+35 Mistakes Have Been Made
+36 A Battle of Minds
+37 Slow Burn
+38 Return to Cyoria
+39 Suspicious Coincidences
+40 Shifting Tracks
+~~~
+
+### Book 4 (Arc II - Part 2)
+~~~
+41 Myriad Clashing Motives
+42 Sum of its Parts
+43 Overwhelmed
+44 A Show of Trust
+45 Fine Structures
+46 The Other Side
+47 Politics
+48 Well of Souls
+49 Substitution
+50 Containment
+51 Out of Control
+52 Things Fall Apart
+53 Phantoms
+54 The Gate Is Barred
+~~~
+
+### Book 5 (Arc III - Part 1)
+~~~
+55 Threshold
+56 Obscure
+57 Unwanted
+58 Questions and Answers
+59 One Step Forward
+60 Into the Abyss
+61 Anthills
+62 Improperly Used
+63 The March of Days
+64 Distance
+65 Dangerous Ground
+66 Marred Perfection
+67 Convergence
+68 Green Hell
+~~~
+
+### Book 6 (Arc III - Part 2)
+~~~
+69 Ruin
+70 Carried Away
+71 Shadows of the Past
+72 Crossroads
+73 Plodding Ahead
+74 The Return
+75 Soul Stealer
+76 Critical Blunder
+77 Testing
+78 Grinding Stone
+79 Crime and Evading Punishment
+80 Enemies
+81 A Civil Conversation
+82 Ancient Circles
+~~~
+
+### Book 7 (Arc III - Part 3)
+~~~
+83 Scorpion
+84 Powerless
+85 Critical Mass
+86 A New World
+87 Agents of the Crown
+88 Mysterious Ways
+89 Victory
+90 Change of Plans
+91 A Path Paid in Blood
+92 The Scramble
+93 Shelter in the Storm
+94 Ghosts
+95 Betrayer
+96 Contract
+~~~
+
+### Book 8 (Arc III - Part 4)
+~~~
+???
+~~~
\ No newline at end of file