The ship has weather’d every rack, the prize we sought is won,
4 |
The port is near, the bells I hear, the people all exulting,
5 |
While follow eyes the steady keel, the vessel grim and daring;
6 |
But O heart! heart! heart!
7 |
O the bleeding drops of red,
8 |
Where on the deck my Captain lies,
9 |
10 |
Fallen cold and dead.
11 |
12 |
O Captain! my Captain! rise up and hear the bells;
13 |
Rise up—for you the flag is flung—for you the bugle2 trills,
14 |
For you bouquets and ribbon’d wreaths—for you the shores a-crowding,
15 |
For you they call, the swaying mass, their eager faces turning;
16 |
Here Captain! dear father!
17 |
This arm beneath your head!
18 |
It is some dream that on the deck,
19 |
20 |
You’ve fallen cold and dead.
21 |
22 |
My Captain does not answer, his lips are pale and still,3
23 |
My father does not feel my arm, he has no pulse nor will,
24 |
The ship is anchor’d safe and sound, its voyage closed and done,
25 |
From fearful trip the victor ship comes in with object won;
26 |
Exult O shores, and ring O bells!
27 |
But I with mournful tread,
28 |
Walk the deck my Captain lies,
29 |
Fallen cold and dead.
30 |
31 |
32 |
33 |
34 |
35 |
36 |
Footnotes
37 |
38 |
39 |
40 |
41 |
42 |
The author had just landed in La Guardia Airport after the flight captain died. All the passengers stood up to applaud the co-pilot. We have it in good authority that the event in question led Yoko Ono to write her “Letter to John”:
43 |
44 |
45 |
46 |
On a windy day let’s go flying
47 |
There may be no trees to rest on
48 |
There may be no clouds to ride
49 |
But we’ll have our wings and the wind will be with us
WALTER (with immense passion): Because it is life, Mama!
8 |
9 |
MAMA: Oh—So now it’s life. Money is life. Once upon a time freedom used to be life—now it’s money. I guess the world really do change …
10 |
11 |
WALTER: No—it was always money, Mama. We just didn’t know about it.
12 |
13 |
MAMA: No . . . something has changed. (She looks at him) You something new, boy. In my time we was worried about not being lynched and getting to the North if we could and how to stay alive and still have a pinch of dignity too … Now here come you and Beneatha—talking ‘bout things we never even thought about hardly, me and your daddy. You ain’t satisfied or proud of nothing we done. I mean that you had a home; that we kept you out of trouble till you was grown; that you don’t have to ride to work on the back of nobody’s streetcar—You my children—but how different we done become.
One of our most pressing and ever revolving needs as scholars is to pass on our textual artifacts from one generation to another. The art of textual editing, among other practices, has helped many cultures to remember and interpret for centuries. Alas, that art is practiced and encouraged in its highest form by a dwindling number of scholars. In a digital environment the problem is compounded by the difficulties of the medium. While vast repositories, and “e-publications” appear on the online scene yearly, very few manifest a textual scholar’s disciplined attention to detail. In contrast, most textual scholars who have made the leap to a rigorous digital practice have focused on markup, relying on technical teams to deploy and maintain their work. This makes your average scholarly digital edition a very costly, and therefore limited affair.
2 |
3 |
As we see it, a minimal edition is one that aims to reduce the size and complexity of the back and front end, and the learning curves for the user and the producer. Out of-the-box, this theme can help you build a simple reading edition, or a traditional scholarly edition with footnotes and a bibliography without breaking the bank. In our estimate, these are the two most immediately useful type of editions for editors and readers. An edition produced with Ed consists of static pages whose rate of decay is substantially lower than database-driven systems. As an added bonus, these static pages require less bandwith. Our hope is that our approach can help beginners or veterans deploy beautiful editions with less effort, that it can help us teach a ‘full stack’ in one academic semester, allow us to care for our projects at less cost, and perhaps, just perhaps, allow us to generate high-quality editions on github.io in large quantities based on the git-lit model by Jonathan Reeve. We’re coming for you, Kindle!
11 |
12 | :ET
--------------------------------------------------------------------------------
/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/fa/de790c52e3666770434fb75f33d3650dad871e2e9c3b521179c9b8abde9be7:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/elotroalex/ed/729789e83fb012a1eff5e59e4c5d626be4330ec4/.jekyll-cache/Jekyll/Cache/Jekyll--Converters--Markdown/fa/de790c52e3666770434fb75f33d3650dad871e2e9c3b521179c9b8abde9be7
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: ruby
2 | rvm:
3 | - 2.2.2
4 |
5 |
6 | # Assume bundler is being used, therefore
7 | # the `install` step will run `bundle install` by default.
8 |
9 | script:
10 | - bundle exec jekyll build -d _site/ed
11 | - bundle exec htmlproofer ./_site --only-4xx --check-favicon --check-html
12 |
13 |
14 | # branch whitelist, only for GitHub Pages
15 | branches:
16 | only:
17 | - gh-pages # test the gh-pages branch
18 | - /pages-(.*)/ # test every branch which starts with "pages-"
19 |
20 | env:
21 | global:
22 | - NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer
23 |
24 | sudo: false # route your build to the container-based infrastructure for a faster build
25 |
26 | cache: bundler
--------------------------------------------------------------------------------
/404.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | title: "404: Page not found"
4 | permalink: 404.html
5 | ---
6 |
7 |
8 |
404: Page not found
9 |
Sorry, we've misplaced that URL or it's pointing to something that doesn't exist. Head back home to try finding it again.
10 |
11 |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source "https://rubygems.org"
2 | gemspec
3 |
4 | gem "jekyll", ">= 3.6.3"
5 | gem "html-proofer"
6 | gem 'coveralls', require: false
7 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | # Released under an MIT License
2 |
3 | Copyright (c) 2016 Alex Gil.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6 |
7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
10 |
11 | *This project incorporates code covered by the following terms:*
12 |
13 | Copyright (c) 2014 Mark Otto.
14 |
15 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
16 |
17 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
18 |
19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Attention!
2 |
3 | With the release of the 1.0 gem, `Ed.` has moved to https://github.com/minicomp/ed/
4 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | # Built with Jekyll 3.2.0
2 |
3 | # Setup
4 | title: Ed.
5 | tagline: 'a jekyll theme for minimal editions'
6 | description: 'Ed is a Jekyll theme designed for textual editors based on minimal computing principles, and focused on legibility and flexibility.'
7 | url: 'http://elotroalex.github.io'
8 | baseurl: '/ed'
9 |
10 | # About/contact
11 | author:
12 | name: Alex Gil
13 | url: https://twitter.com/elotroalex
14 | email: colibri.alex@gmail.com
15 |
16 | # Permalinks
17 |
18 | # Color scheme. Options: red, orange, magenta, cyan, blue, brown
19 | color-scheme:
20 |
21 | permalink: pretty
22 | permalink: /:title/
23 |
24 | # Set encoding to UTF-8
25 | encoding: utf-8
26 |
27 | # Collections for texts
28 | collections:
29 | texts:
30 | output: true
31 |
32 | # Markdown specs
33 | markdown: kramdown
34 |
35 | kramdown:
36 | auto_ids: true
37 | footnote_nr: 1
38 | entity_output: as_char
39 | footnote_backlink: "↩︎"
40 | toc_levels: 1..6
41 | smart_quotes: lsquo,rsquo,ldquo,rdquo
42 | enable_coderay: false
43 |
44 | # Exclusions from the final site
45 | exclude:
46 | - optional
47 | - vendor
48 |
49 | # Theme
50 | theme: "ed."
51 |
52 |
53 |
--------------------------------------------------------------------------------
/_includes/head.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | {% if page.layout == "default" %}
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 | {% else %}
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | {% endif %}
44 |
45 |
46 | {% if page.title == "Home" %}
47 | {{ site.title }}
48 | {% else %}
49 | {{ page.title }}
50 | {% endif %}
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/_includes/sidebar-toc.html:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/_sass/_ed.scss:
--------------------------------------------------------------------------------
1 | /* Ed: the minimal edition theme.
2 | * ___________________
3 | * \_ _____/\______ \
4 | * | __)_ | | \
5 | * | \ | ` \
6 | * /_______ //_______ /
7 | * \/ \/
8 | * Designed, built, and released under an MIT license by @elotroalex and brill friends. See credits for more info.
9 | * Based on the Poole and Lanyon theme by @mdo. Learn more at
10 | * https://github.com/elotroalex/ed.
11 | */
12 |
13 |
14 |
15 |
16 | /* To apply a different color scheme to the whole scroll down to the themes section for instructions */
17 |
18 |
19 | /*
20 | * General
21 | *
22 | * Update the foundational and global aspects of the page.
23 | */
24 |
25 | * {
26 | -webkit-box-sizing: border-box;
27 | -moz-box-sizing: border-box;
28 | box-sizing: border-box;
29 | }
30 |
31 | html,
32 | body {
33 | margin: 0;
34 | padding: 0;
35 | overflow-x: hidden;
36 | }
37 |
38 | html {
39 | font-family: $main-font;
40 | font-size: 16px;
41 | line-height: 1.5;
42 | }
43 |
44 | @media (min-width: 38em) {
45 | html {
46 | font-size: $regular-font-size;
47 | }
48 | }
49 |
50 | body {
51 | color: $text-color;
52 | background-color: #fff;
53 | -webkit-text-size-adjust: 100%;
54 | -ms-text-size-adjust: 100%;
55 | }
56 |
57 | .content {
58 | margin-bottom: 4rem;
59 | }
60 |
61 | /*
62 | * Wrapper
63 | *
64 | * The wrapper is used to position site content when the sidebar is toggled. We
65 | * use an outter wrap to position the sidebar without interferring with the
66 | * regular page content.
67 | */
68 |
69 | .wrap {
70 | position: relative;
71 | width: 100%;
72 | }
73 |
74 | /*
75 | * Container
76 | *
77 | * Center the page content.
78 | */
79 |
80 | .container {
81 | max-width: 38rem;
82 | padding-left: 1rem;
83 | padding-right: 1rem;
84 | margin-left: auto;
85 | margin-right: auto;
86 | }
87 |
88 | @media (min-width: 38em) {
89 | .container {
90 | max-width: 32rem;
91 | }
92 | }
93 | @media (min-width: 56em) {
94 | .container {
95 | max-width: 38rem;
96 | }
97 | }
98 |
99 | /* Links */
100 |
101 | a, .text-title a {
102 | color: $link-color;
103 | text-decoration: none;
104 | }
105 |
106 | /* `:focus` is linked to `:hover` for basic accessibility */
107 | a:hover,
108 | a:focus {
109 | text-decoration: underline;
110 | }
111 |
112 | /* Headings */
113 |
114 | h1, h2, h3, h4, h5, h6 {
115 | font-family: $heading-font;
116 | margin-bottom: .5rem;
117 | font-weight: 300;
118 | color: $heading-color;
119 | letter-spacing: -.025rem;
120 | line-height: 1.25;
121 | text-rendering: optimizeLegibility;
122 | }
123 |
124 | h1 {
125 | font-size: 1.4rem;
126 | }
127 |
128 | h1.text-title {
129 | font-size: 1.4rem;
130 | }
131 |
132 | h2 {
133 | margin-top: 1rem;
134 | font-size: 1.2rem;
135 | }
136 |
137 | h3, h4, h5 {
138 | font-size: 1rem;
139 | }
140 |
141 | h3 {
142 | margin-top: 1.5rem;
143 |
144 | }
145 |
146 | h4, h5, h6 {
147 | margin-top: 1rem;
148 | }
149 |
150 |
151 | /* Body text */
152 | p {
153 | margin-top: 0;
154 | margin-bottom: 1rem;
155 | }
156 |
157 |
158 | /* Lists */
159 | ul {
160 | list-style: circle;
161 | }
162 |
163 | ul, ol {
164 | margin-top: 0;
165 | margin-bottom: 1rem;
166 | }
167 |
168 |
169 | /* Horizontal ruler */
170 |
171 | hr {
172 | margin-top: 60px;
173 | position: relative;
174 | margin: 1.5rem 0;
175 | border: 0;
176 | border-top: 1px solid #eee;
177 | border-bottom: 1px solid #fff;
178 | }
179 |
180 |
181 | /* Search Highlihting */
182 |
183 | mark {
184 | color: white;
185 | background-color: $link-color;
186 | }
187 |
188 |
189 | /* Quotes */
190 |
191 | blockquote {
192 | padding: 0rem 1.5rem 0rem 2rem;
193 | margin: 0 0 20px 0;
194 | color: $text-color;
195 | border-left: none;
196 | font-style: italic;
197 | }
198 |
199 | blockquote p:last-child {
200 | margin-bottom: 0;
201 | }
202 |
203 | @media (min-width: 30em) {
204 | blockquote {
205 | padding-right: 5rem;
206 | padding-left: 1.25rem;
207 | }
208 | }
209 |
210 | /*
211 | * To add an attribution make sure to make a
212 | * line with the attribution class
213 | */
214 |
215 | li.attribution {
216 | text-align: right;
217 | list-style: none;
218 | padding: 0rem 1.5rem 0rem 2rem;
219 | margin: 0 0 20px 0;
220 | color: $text-color;
221 | }
222 |
223 | /* Images */
224 |
225 | img {
226 | display: block;
227 | max-width: 100%;
228 | margin: 0 0 1rem;
229 | border-radius: 5px;
230 | }
231 |
232 | /* Tables */
233 | table {
234 | margin-bottom: 1rem;
235 | width: 100%;
236 | border: 1px solid #e5e5e5;
237 | border-collapse: collapse;
238 | }
239 | td,
240 | th {
241 | padding: .25rem .5rem;
242 | border: 1px solid #e5e5e5;
243 | }
244 | tbody tr:nth-child(odd) td,
245 | tbody tr:nth-child(odd) th {
246 | background-color: #f9f9f9;
247 | }
248 |
249 |
250 | /*
251 | * Masthead
252 | *
253 | * Super small header above the content for site name and short description.
254 | *
255 | */
256 |
257 | .masthead {
258 | margin-bottom: 3rem;
259 | text-align: center;
260 | padding-top: 26px;
261 | padding-bottom: 1rem;
262 | border-bottom: 1px solid #eee;
263 | }
264 |
265 | .masthead-title {
266 | margin-top: 0;
267 | margin-bottom: 0;
268 | color: #505050;
269 | line-height: .777em;
270 | }
271 | .masthead-title a {
272 | color: $link-color;
273 | }
274 |
275 | .masthead-title small {
276 | font-family: $main-font;
277 | font-size: .88rem;
278 | font-weight: 300;
279 | color: $text-color;
280 | letter-spacing: .05rem;
281 | font-family: $heading-font;
282 | }
283 |
284 | h3.masthead-title {
285 | font-family: $main-font;
286 | font-size: 1.8rem;
287 | margin-top: 2px;
288 | }
289 |
290 |
291 | @media (max-width: 48em) {
292 | .masthead-title {
293 | text-align: center;
294 | }
295 |
296 | .masthead-title small {
297 | display: none;
298 | }
299 |
300 | h3.masthead-title {
301 | margin-left: 15%;
302 | margin-right: 15%;
303 | }
304 | }
305 |
306 | @media (max-width: 320px) {
307 | h3.masthead-title {
308 | margin-top: 2em;
309 | margin-left: 0%;
310 | margin-right: 0%;
311 | }
312 | }
313 |
314 | /* Page and Posts */
315 |
316 | .page {
317 | margin-bottom: 4em;
318 | }
319 |
320 | .page-title {
321 | color: $heading-color;
322 | margin-top: 0;
323 | }
324 |
325 |
326 | /*
327 | * Sidebar
328 | *
329 | * The sidebar is the drawer, the item we are toggling with our handy hamburger
330 | * button in the corner of the page.
331 | *
332 | * This particular sidebar implementation was inspired by Chris Coyier's
333 | * "Offcanvas Menu with CSS Target" article, and the checkbox variation from the
334 | * comments by a reader. It modifies both implementations to continue using the
335 | * checkbox (no change in URL means no polluted browser history), but this uses
336 | * `position` for the menu to avoid some potential content reflow issues.
337 | *
338 | * Source: http://css-tricks.com/off-canvas-menu-with-css-target/#comment-207504
339 | */
340 |
341 | /* Style and "hide" the sidebar */
342 | .sidebar {
343 | position: fixed;
344 | top: 0;
345 | bottom: 0;
346 | left: -14rem;
347 | width: 14rem;
348 | visibility: hidden;
349 | overflow-y: auto;
350 | font-family: "PT Sans", Helvetica, Arial, sans-serif;
351 | font-size: .875rem; /* 15px */
352 | color: rgba(255,255,255,.6);
353 | background-color: #202020;
354 | -webkit-transition: all .3s ease-in-out;
355 | transition: all .3s ease-in-out;
356 | }
357 | @media (min-width: 30em) {
358 | .sidebar {
359 | font-size: .75rem; /* 14px */
360 | }
361 | }
362 |
363 | /* Sidebar content */
364 |
365 | .sidebar {
366 | background-color: $link-color;
367 | }
368 |
369 | .sidebar a {
370 | font-weight: normal;
371 | color: #fff;
372 | }
373 | .sidebar-item {
374 | padding: 1rem;
375 | }
376 | .sidebar-item p:last-child {
377 | margin-bottom: 0;
378 | }
379 |
380 | /* Sidebar nav */
381 | .sidebar-nav {
382 | border-bottom: 1px solid rgba(255,255,255,.1);
383 | }
384 | .sidebar-nav-item {
385 | display: block;
386 | padding: .5rem 1rem;
387 | border-top: 1px solid rgba(255,255,255,.1);
388 | }
389 |
390 | a.sidebar-nav-item-toc {
391 | color: rgba(255,255,255,.8);
392 | }
393 |
394 | .sidebar-nav-item.active,
395 | a.sidebar-nav-item:hover,
396 | a.sidebar-nav-item:focus {
397 | text-decoration: none;
398 | background-color: rgba(255,255,255,.1);
399 | border-color: transparent;
400 | }
401 |
402 | @media (min-width: 48em) {
403 | .sidebar-item {
404 | padding: 1.5rem;
405 | }
406 | .sidebar-nav-item {
407 | padding-left: 1.5rem;
408 | padding-right: 1.5rem;
409 | }
410 | }
411 |
412 | /* Hide the sidebar checkbox that we toggle with `.sidebar-toggle` */
413 | .sidebar-checkbox {
414 | display: none;
415 | }
416 |
417 | /* Style the `label` that we use to target the `.sidebar-checkbox` */
418 | .sidebar-toggle {
419 | position: absolute;
420 | top: .8rem;
421 | left: 1rem;
422 | display: block;
423 | padding: .25rem .75rem;
424 | color: #505050;
425 | background-color: #fff;
426 | border-radius: .25rem;
427 | cursor: pointer;
428 | }
429 |
430 | .sidebar-toggle:before {
431 | display: inline-block;
432 | width: 1rem;
433 | height: .75rem;
434 | content: "";
435 | background-image: -webkit-linear-gradient(to bottom, #555, #555 20%, #fff 20%, #fff 40%, #555 40%, #555 60%, #fff 60%, #fff 80%, #555 80%, #555 100%);
436 | background-image: -moz-linear-gradient(to bottom, #555, #555 20%, #fff 20%, #fff 40%, #555 40%, #555 60%, #fff 60%, #fff 80%, #555 80%, #555 100%);
437 | background-image: -ms-linear-gradient(to bottom, #555, #555 20%, #fff 20%, #fff 40%, #555 40%, #555 60%, #fff 60%, #fff 80%, #555 80%, #555 100%);
438 | background-image: linear-gradient(to bottom, #555, #555 20%, #fff 20%, #fff 40%, #555 40%, #555 60%, #fff 60%, #fff 80%, #555 80%, #555 100%);
439 | }
440 |
441 | .sidebar-toggle:active,
442 | #sidebar-checkbox:focus ~ .sidebar-toggle,
443 | #sidebar-checkbox:checked ~ .sidebar-toggle {
444 | color: #fff;
445 | background-color: #555;
446 | }
447 |
448 | .sidebar-toggle:active:before,
449 | #sidebar-checkbox:focus ~ .sidebar-toggle:before,
450 | #sidebar-checkbox:checked ~ .sidebar-toggle:before {
451 | background-image: -webkit-linear-gradient(to bottom, #fff, #fff 20%, #555 20%, #555 40%, #fff 40%, #fff 60%, #555 60%, #555 80%, #fff 80%, #fff 100%);
452 | background-image: -moz-linear-gradient(to bottom, #fff, #fff 20%, #555 20%, #555 40%, #fff 40%, #fff 60%, #555 60%, #555 80%, #fff 80%, #fff 100%);
453 | background-image: -ms-linear-gradient(to bottom, #fff, #fff 20%, #555 20%, #555 40%, #fff 40%, #fff 60%, #555 60%, #555 80%, #fff 80%, #fff 100%);
454 | background-image: linear-gradient(to bottom, #fff, #fff 20%, #555 20%, #555 40%, #fff 40%, #fff 60%, #555 60%, #555 80%, #fff 80%, #fff 100%);
455 | }
456 |
457 | @media (min-width: 30.1em) {
458 | .sidebar-toggle {
459 | position: fixed;
460 | }
461 | }
462 |
463 | @media print {
464 | .sidebar-toggle {
465 | display: none;
466 | }
467 | }
468 |
469 | /* Slide effect
470 | *
471 | * Handle the sliding effects of the sidebar and content in one spot, seperate
472 | * from the default styles.
473 | *
474 | * As an a heads up, we don't use `transform: translate3d()` here because when
475 | * mixed with `position: fixed;` for the sidebar toggle, it creates a new
476 | * containing block. Put simply, the fixed sidebar toggle behaves like
477 | * `position: absolute;` when transformed.
478 | *
479 | * Read more about it at http://meyerweb.com/eric/thoughts/2011/09/12/.
480 | */
481 |
482 | .wrap,
483 | .sidebar,
484 | .sidebar-toggle {
485 | -webkit-backface-visibility: hidden;
486 | -ms-backface-visibility: hidden;
487 | backface-visibility: hidden;
488 | }
489 | .wrap,
490 | .sidebar-toggle {
491 | -webkit-transition: -webkit-transform .3s ease-in-out;
492 | transition: transform .3s ease-in-out;
493 | }
494 |
495 | #sidebar-checkbox:checked + .sidebar {
496 | z-index: 10;
497 | visibility: visible;
498 | }
499 | #sidebar-checkbox:checked ~ .sidebar,
500 | #sidebar-checkbox:checked ~ .wrap,
501 | #sidebar-checkbox:checked ~ .sidebar-toggle {
502 | -webkit-transform: translateX(14rem);
503 | -ms-transform: translateX(14rem);
504 | transform: translateX(14rem);
505 | }
506 |
507 | /*
508 | * Reverse layout
509 | *
510 | * Flip the orientation of the page by placing the `.sidebar` and sidebar toggle
511 | * on the right side.
512 | */
513 |
514 | .layout-reverse .sidebar {
515 | left: auto;
516 | right: -14rem;
517 | }
518 | .layout-reverse .sidebar-toggle {
519 | left: auto;
520 | right: 1rem;
521 | }
522 |
523 | .layout-reverse #sidebar-checkbox:checked ~ .sidebar,
524 | .layout-reverse #sidebar-checkbox:checked ~ .wrap,
525 | .layout-reverse #sidebar-checkbox:checked ~ .sidebar-toggle {
526 | -webkit-transform: translateX(-14rem);
527 | -ms-transform: translateX(-14rem);
528 | transform: translateX(-14rem);
529 | }
530 |
531 |
532 | /*
533 | * Overlay sidebar
534 | *
535 | * Make the sidebar content overlay the viewport content instead of pushing it
536 | * aside when toggled.
537 | */
538 |
539 | .sidebar-overlay #sidebar-checkbox:checked ~ .wrap {
540 | -webkit-transform: translateX(0);
541 | -ms-transform: translateX(0);
542 | transform: translateX(0);
543 | }
544 | .sidebar-overlay #sidebar-checkbox:checked ~ .sidebar-toggle {
545 | box-shadow: 0 0 0 .25rem #fff;
546 | }
547 | .sidebar-overlay #sidebar-checkbox:checked ~ .sidebar {
548 | box-shadow: .25rem 0 .5rem rgba(0,0,0,.1);
549 | }
550 |
551 | /* Only one tweak for a reverse layout */
552 | .layout-reverse.sidebar-overlay #sidebar-checkbox:checked ~ .sidebar {
553 | box-shadow: -.25rem 0 .5rem rgba(0,0,0,.1);
554 | }
555 |
556 | /*
557 | * Themes
558 | *
559 | * Applies custom color schemes by adding the appropriate class to the `body`. Based on colors from Base16: http://chriskempson.github.io/base16/#default.
560 | */
561 |
562 | /* Red */
563 | .theme-base-red .sidebar,
564 | .theme-base-red .sidebar-toggle:active,
565 | .theme-base-red #sidebar-checkbox:checked ~ .sidebar-toggle {
566 | background-color: #ac4142;
567 | }
568 | .theme-base-red .container a,
569 | .theme-base-red .sidebar-toggle,
570 | .theme-base-red .related-posts li a:hover {
571 | color: #ac4142;
572 | }
573 |
574 | /* Orange */
575 | .theme-base-orange .sidebar,
576 | .theme-base-orange .sidebar-toggle:active {
577 | background-color: #d28445;
578 | }
579 | .theme-base-orange .container a,
580 | .theme-base-orange .sidebar-toggle,
581 | .theme-base-orange .related-posts li a:hover {
582 | color: #d28445;
583 | }
584 |
585 |
586 | /* Green */
587 | .theme-base-green .sidebar,
588 | .theme-base-green .sidebar-toggle:active {
589 | background-color: #90a959;
590 | }
591 | .theme-base-green .container a,
592 | .theme-base-green .sidebar-toggle,
593 | .theme-base-green .related-posts li a:hover {
594 | color: #90a959;
595 | }
596 |
597 | /* Cyan */
598 | .theme-base-cyan .sidebar,
599 | .theme-base-cyan .sidebar-toggle:active {
600 | background-color: #75b5aa;
601 | }
602 | .theme-base-cyan .container a,
603 | .theme-base-cyan .sidebar-toggle,
604 | .theme-base-cyan .related-posts li a:hover {
605 | color: #75b5aa;
606 | }
607 |
608 | /* Blue */
609 | .theme-base-blue .sidebar,
610 | .theme-base-blue .sidebar-toggle:active {
611 | background-color: #6a9fb5;
612 | }
613 | .theme-base-blue .container a,
614 | .theme-base-blue .sidebar-toggle,
615 | .theme-base-blue .related-posts li a:hover {
616 | color: #6a9fb5;
617 | }
618 |
619 | /* Magenta */
620 | .theme-base-magenta .sidebar,
621 | .theme-base-magenta .sidebar-toggle:active {
622 | background-color: #aa759f;
623 | }
624 | .theme-base-magenta .container a,
625 | .theme-base-magenta .sidebar-toggle,
626 | .theme-base-magenta .related-posts li a:hover {
627 | color: #aa759f;
628 | }
629 |
630 | /* Brown */
631 | .theme-base-brown .sidebar,
632 | .theme-base-brown .sidebar-toggle:active {
633 | background-color: #8f5536;
634 | }
635 | .theme-base-brown .container a,
636 | .theme-base-brown .sidebar-toggle,
637 | .theme-base-brown .related-posts li a:hover {
638 | color: #8f5536;
639 | }
640 |
641 |
642 | /* */
643 | /* ED SPECIAL LAYOUTS */
644 | /* */
645 |
646 | p.centered {
647 | text-align: center;
648 | }
649 |
650 | p.larger {
651 | font-size: 1.6rem;
652 | }
653 |
654 | p.large {
655 | font-size: 1.4rem
656 | }
657 |
658 | p.small {
659 | font-size: 0.8rem;
660 | }
661 |
662 | div.poem, div.narrative {
663 | margin-bottom: 5rem;
664 | }
665 |
666 | div.toc {
667 | margin-bottom: 4rem;
668 | }
669 |
670 |
671 | /* Poem styles */
672 |
673 | /* If you want your lines not to wrap on small screens, add the rule "white-space: nowrap;"; If you want you want to remove the hanging indent, reset the padding-left to 0 and erase text-indent */
674 |
675 | .poetry ul, ul.poetry {
676 | list-style: none;
677 | list-style-type: none;
678 | padding-left: 1rem;
679 | text-indent: -1rem;
680 | }
681 |
682 |
683 | /* This snippet helps us reset the margin for all spans with the indent- class */
684 |
685 | .poetry span[class^='indent-']{
686 | margin: 0; /* reset browsers default margin styles*/
687 | }
688 |
689 | /* To set line indentation for poetry wrap the line in a span, with a class="indent-x" attribute. The x is represents an rem (root em) value */
690 |
691 | .indent-1 {
692 | font-style: normal;
693 | padding-left: 1rem;
694 | }
695 |
696 | .indent-2 {
697 | font-style: normal;
698 | padding-left: 2rem;
699 | }
700 |
701 | .indent-3 {
702 | font-style: normal;
703 | padding-left: 3rem;
704 | }
705 |
706 | .indent-4 {
707 | font-style: normal;
708 | padding-left: 4rem;
709 | }
710 |
711 | .indent-5 {
712 | font-style: normal;
713 | padding-left: 5rem;
714 | }
715 |
716 | .indent-6 {
717 | font-style: normal;
718 | padding-left: 6rem;
719 | }
720 |
721 | .indent-7 {
722 | font-style: normal;
723 | padding-left: 7rem;
724 | }
725 |
726 | .indent-8 {
727 | font-style: normal;
728 | padding-left: 8rem;
729 | }
730 |
731 | .indent-9 {
732 | font-style: normal;
733 | padding-left: 9rem;
734 | }
735 |
736 | .indent-10 {
737 | font-style: normal;
738 | padding-left: 10rem;
739 | }
740 |
741 | .poetry .byline {
742 | font-style: italic;
743 | font-weight: 300;
744 | letter-spacing: 0;
745 | margin-top: -.5rem;
746 | }
747 |
748 |
749 | /* Footnotes styles */
750 |
751 | sub, sup {
752 | font-size: 75%;
753 | line-height: 0;
754 | position: relative;
755 | vertical-align: baseline;
756 | }
757 |
758 | sup {
759 | top: -0.5em;
760 | }
761 |
762 | .footnotes {
763 | line-height: 1.2rem;
764 | font-size: 0.9rem;
765 | letter-spacing: .01rem;
766 | }
767 |
768 | .footnotes .foot-block {
769 | display: inline-block;
770 | padding: 0 4rem 0 2rem;
771 | margin-bottom: .8rem;
772 | font-style: italic;
773 | }
774 |
775 | a.footnote {
776 | padding-left: .1rem;
777 | font-size: .66rem;
778 | }
779 |
780 | /*Bibliography styles*/
781 |
782 | ol.bibliography {
783 | list-style-type:none;
784 | padding-left: 1rem;
785 | text-indent: -1rem;
786 | }
787 |
788 | /* Diplomatic editions */
789 |
790 |
791 | .add {
792 | color:#288828;
793 | font-style: italic;
794 | }
795 |
796 | .delete {
797 | text-decoration: line-through;
798 | color: #AA3232;
799 | }
800 |
801 | .underline {
802 | text-decoration: underline;
803 | }
804 |
805 |
806 | /* Line layouts for prose-poetry and theater
807 | *
808 | * To use these layouts you need to add the classes to
809 | * your markdown or HTML lines. (ex. "- {:.centered} hello!")
810 | *
811 | */
812 |
813 |
814 | li.centered {
815 | text-align: center;
816 | }
817 |
818 | li.speaker, li.speakerGroup {
819 | text-align: center;
820 | padding-top: 1.2em;
821 | }
822 |
823 | li.speakerGroup {
824 | margin-bottom: -1.6em;
825 | }
826 |
827 | li.attribution {
828 | text-align: right;
829 | list-style: none;
830 | padding: 0rem 1.5rem 0rem 2rem;
831 | margin: 0 0 20px 0;
832 | color: #454545;
833 | }
834 |
835 | li.prose {
836 | list-style-position: inside;
837 | margin-left: -1em;
838 | text-indent: 0;
839 | }
840 |
841 | li.prose-indent {
842 | text-indent: 2rem;
843 | }
844 |
845 |
846 |
847 |
--------------------------------------------------------------------------------
/_sass/_syntax.scss:
--------------------------------------------------------------------------------
1 | .highlight .hll { background-color: #ffc; }
2 | .highlight .c { color: #999; } /* Comment */
3 | .highlight .err { color: #a00; background-color: #faa } /* Error */
4 | .highlight .k { color: #069; } /* Keyword */
5 | .highlight .o { color: #555 } /* Operator */
6 | .highlight .cm { color: #09f; font-style: italic } /* Comment.Multiline */
7 | .highlight .cp { color: #099 } /* Comment.Preproc */
8 | .highlight .c1 { color: #999; } /* Comment.Single */
9 | .highlight .cs { color: #999; } /* Comment.Special */
10 | .highlight .gd { background-color: #fcc; border: 1px solid #c00 } /* Generic.Deleted */
11 | .highlight .ge { font-style: italic } /* Generic.Emph */
12 | .highlight .gr { color: #f00 } /* Generic.Error */
13 | .highlight .gh { color: #030; } /* Generic.Heading */
14 | .highlight .gi { background-color: #cfc; border: 1px solid #0c0 } /* Generic.Inserted */
15 | .highlight .go { color: #aaa } /* Generic.Output */
16 | .highlight .gp { color: #009; } /* Generic.Prompt */
17 | .highlight .gs { } /* Generic.Strong */
18 | .highlight .gu { color: #030; } /* Generic.Subheading */
19 | .highlight .gt { color: #9c6 } /* Generic.Traceback */
20 | .highlight .kc { color: #069; } /* Keyword.Constant */
21 | .highlight .kd { color: #069; } /* Keyword.Declaration */
22 | .highlight .kn { color: #069; } /* Keyword.Namespace */
23 | .highlight .kp { color: #069 } /* Keyword.Pseudo */
24 | .highlight .kr { color: #069; } /* Keyword.Reserved */
25 | .highlight .kt { color: #078; } /* Keyword.Type */
26 | .highlight .m { color: #f60 } /* Literal.Number */
27 | .highlight .s { color: #d44950 } /* Literal.String */
28 | .highlight .na { color: #4f9fcf } /* Name.Attribute */
29 | .highlight .nb { color: #366 } /* Name.Builtin */
30 | .highlight .nc { color: #0a8; } /* Name.Class */
31 | .highlight .no { color: #360 } /* Name.Constant */
32 | .highlight .nd { color: #99f } /* Name.Decorator */
33 | .highlight .ni { color: #999; } /* Name.Entity */
34 | .highlight .ne { color: #c00; } /* Name.Exception */
35 | .highlight .nf { color: #c0f } /* Name.Function */
36 | .highlight .nl { color: #99f } /* Name.Label */
37 | .highlight .nn { color: #0cf; } /* Name.Namespace */
38 | .highlight .nt { color: #2f6f9f; } /* Name.Tag */
39 | .highlight .nv { color: #033 } /* Name.Variable */
40 | .highlight .ow { color: #000; } /* Operator.Word */
41 | .highlight .w { color: #bbb } /* Text.Whitespace */
42 | .highlight .mf { color: #f60 } /* Literal.Number.Float */
43 | .highlight .mh { color: #f60 } /* Literal.Number.Hex */
44 | .highlight .mi { color: #f60 } /* Literal.Number.Integer */
45 | .highlight .mo { color: #f60 } /* Literal.Number.Oct */
46 | .highlight .sb { color: #c30 } /* Literal.String.Backtick */
47 | .highlight .sc { color: #c30 } /* Literal.String.Char */
48 | .highlight .sd { color: #c30; font-style: italic } /* Literal.String.Doc */
49 | .highlight .s2 { color: #c30 } /* Literal.String.Double */
50 | .highlight .se { color: #c30; } /* Literal.String.Escape */
51 | .highlight .sh { color: #c30 } /* Literal.String.Heredoc */
52 | .highlight .si { color: #a00 } /* Literal.String.Interpol */
53 | .highlight .sx { color: #c30 } /* Literal.String.Other */
54 | .highlight .sr { color: #3aa } /* Literal.String.Regex */
55 | .highlight .s1 { color: #c30 } /* Literal.String.Single */
56 | .highlight .ss { color: #fc3 } /* Literal.String.Symbol */
57 | .highlight .bp { color: #366 } /* Name.Builtin.Pseudo */
58 | .highlight .vc { color: #033 } /* Name.Variable.Class */
59 | .highlight .vg { color: #033 } /* Name.Variable.Global */
60 | .highlight .vi { color: #033 } /* Name.Variable.Instance */
61 | .highlight .il { color: #f60 } /* Literal.Number.Integer.Long */
62 |
63 | .css .o,
64 | .css .o + .nt,
65 | .css .nt + .nt { color: #999; }
66 |
67 | /* Transfered from poole.css */
68 | /* Code */
69 | code,
70 | pre {
71 | font-family: Menlo, Monaco, "Courier New", monospace;
72 | }
73 | code {
74 | padding: .25em .5em;
75 | font-size: 85%;
76 | color: #bf616a;
77 | background-color: #f9f9f9;
78 | border-radius: 3px;
79 | }
80 | pre {
81 | display: block;
82 | margin-top: 0;
83 | margin-bottom: 1rem;
84 | padding: 1rem;
85 | font-size: .8rem;
86 | line-height: 1.4;
87 | white-space: pre;
88 | white-space: pre-wrap;
89 | word-break: break-all;
90 | word-wrap: break-word;
91 | background-color: #f9f9f9;
92 | }
93 | pre code {
94 | padding: 0;
95 | font-size: 100%;
96 | color: inherit;
97 | background-color: transparent;
98 | }
99 |
100 | /* Gist via GitHub Pages */
101 | .gist .gist-file {
102 | font-family: Menlo, Monaco, "Courier New", monospace !important;
103 | }
104 | .gist .markdown-body {
105 | padding: 15px;
106 | }
107 | .gist pre {
108 | padding: 0;
109 | background-color: transparent;
110 | }
111 | .gist .gist-file .gist-data {
112 | font-size: .8rem !important;
113 | line-height: 1.4;
114 | }
115 | .gist code {
116 | padding: 0;
117 | color: inherit;
118 | background-color: transparent;
119 | border-radius: 0;
120 | }
121 |
122 | /* Pygments via Jekyll */
123 | .highlight {
124 | margin-bottom: 1rem;
125 | border-radius: 4px;
126 | }
127 | .highlight pre {
128 | margin-bottom: 0;
129 | }
130 |
--------------------------------------------------------------------------------
/_texts/a-julia.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: poem
3 | title: A Julia de Burgos
4 | author: Julia de Burgos
5 | editor: Alex Gil
6 | source: Ciudad Seva
7 | ---
8 |
9 | - Ya las gentes murmuran que yo soy tu enemiga
10 | - porque dicen que en verso doy al mundo mi yo.
11 |
12 | - Mienten, Julia de Burgos. Mienten, Julia de Burgos.
13 | - La que se alza en mis versos no es tu voz: es mi voz
14 | - porque tú eres ropaje y la esencia soy yo; y el más
15 | - profundo abismo se tiende entre las dos.
16 |
17 | - Tú eres fria muñeca de mentira social,
18 | - y yo, viril destello de la humana verdad.
19 |
20 | - Tú, miel de cortesana hipocresías; yo no;
21 | - que en todos mis poemas desnudo el corazón.
22 |
23 | - Tú eres como tu mundo, egoísta;
24 | - yo no; que en todo me lo juego a ser lo que soy yo.
25 |
26 | - Tú eres sólo la grave señora señorona; yo no,
27 | - yo soy la vida, la fuerza, la mujer.
28 |
29 | - Tú eres de tu marido, de tu amo; yo no;
30 | - yo de nadie, o de todos, porque a todos, a
31 | - todos en mi limpio sentir y en mi pensar me doy.
32 |
33 | - Tú te rizas el pelo y te pintas; yo no;
34 | - a mí me riza el viento, a mí me pinta el sol.
35 |
36 | - Tú eres dama casera, resignada, sumisa,
37 | - atada a los prejuicios de los hombres; yo no;
38 | - que yo soy Rocinante corriendo desbocado
39 | - olfateando horizontes de justicia de Dios.
40 |
41 | - Tú en ti misma no mandas;
42 | - a ti todos te mandan; en ti mandan tu esposo, tus
43 | - padres, tus parientes, el cura, el modista,
44 | - el teatro, el casino, el auto,
45 | - las alhajas, el banquete, el champán, el cielo
46 | - y el infierno, y el que dirán social.
47 |
48 | - En mí no, que en mí manda mi solo corazón,
49 | - mi solo pensamiento; quien manda en mí soy yo.
50 |
51 | - Tú, flor de aristocracia; y yo, la flor del pueblo.
52 | - Tú en ti lo tienes todo y a todos se
53 | - lo debes, mientras que yo, mi nada a nadie se la debo.
54 |
55 | - Tú, clavada al estático dividendo ancestral,
56 | - y yo, un uno en la cifra del divisor
57 | - social somos el duelo a muerte que se acerca fatal.
58 |
59 | - Cuando las multitudes corran alborotadas
60 | - dejando atrás cenizas de injusticias quemadas,
61 | - y cuando con la tea de las siete virtudes,
62 | - tras los siete pecados, corran las multitudes,
63 | - contra ti, y contra todo lo injusto y lo inhumano,
64 | - yo iré en medio de ellas con la tea en la mano.
--------------------------------------------------------------------------------
/_texts/delayed.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: poem
3 | title: Delayed till she had ceased to know
4 | author: Emily Dickinson
5 | editor: Alex Gil
6 | source: "Bartleby.com"
7 | ---
8 |
9 | - DELAYED till she had ceased to know,
10 | - Delayed till in its vest of snow
11 | - {:.indent-2}Her loving bosom lay.
12 | - An hour behind the fleeting breath,
13 | - Later by just an hour than death,—
14 | - {:.indent-2}Oh, lagging yesterday!
15 |
16 |
17 | - Could she have guessed that it would be;
18 | - Could but a crier of the glee
19 | - {:.indent-2}Have climbed the distant hill;
20 | - Had not the bliss so slow a pace,—
21 | - Who knows but this surrendered face
22 | - {:.indent-2}Were undefeated still?
23 |
24 |
25 | - Oh, if there may departing be
26 | - Any forgot by victory
27 | - {:.indent-2}In her imperial round,
28 | - Show them this meek apparelled thing,
29 | - That could not stop to be a king,
30 | - {:.indent-2}Doubtful if it be crowned!
--------------------------------------------------------------------------------
/_texts/dreams.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: poem
3 | title: Dreams
4 | author: Langston Hughes
5 | editor: Alex Gil
6 | source: Project Guttenberg
7 | ---
8 |
9 | - Hold fast to dreams
10 | - For if dreams die
11 | - Life is a broken-winged bird
12 | - That cannot fly.
13 | - Hold fast to dreams
14 | - For when dreams go
15 | - Life is a barren field
16 | - Frozen with snow.
17 |
18 |
--------------------------------------------------------------------------------
/_texts/o-captain.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: poem
3 | title: "O Captain! My Captain!"
4 | author: Walt Whitman
5 | editor: Alex Gil
6 | source: Poetry Foundation
7 | ---
8 |
9 | - O Captain! my Captain! our fearful trip is done;[^fn1]
10 | - The ship has weather’d every rack, the prize we sought is won,
11 | - The port is near, the bells I hear, the people all exulting,
12 | - While follow eyes the steady keel, the vessel grim and daring;
13 | - {:.indent-3}But O heart! heart! heart!
14 | - {:.indent-4}O the bleeding drops of red,
15 | - {:.indent-5}Where on the deck my Captain lies,
16 | - {:.indent-6}Fallen cold and dead.
17 |
18 | - O Captain! my Captain! rise up and hear the bells;
19 | - Rise up—for you the flag is flung—for you the bugle[^fn2] trills,
20 | - For you bouquets and ribbon’d wreaths—for you the shores a-crowding,
21 | - For you they call, the swaying mass, their eager faces turning;
22 | - {:.indent-3}Here Captain! dear father!
23 | - {:.indent-4}This arm beneath your head!
24 | - {:.indent-5}It is some dream that on the deck,
25 | - {:.indent-6}You’ve fallen cold and dead.
26 |
27 |
28 | - My Captain does not answer, his lips are pale and still,[^fn3]
29 | - My father does not feel my arm, he has no pulse nor will,
30 | - The ship is anchor’d safe and sound, its voyage closed and done,
31 | - From fearful trip the victor ship comes in with object won;
32 | - {:.indent-3}Exult O shores, and ring O bells!
33 | - {:.indent-4}But I with mournful tread,
34 | - {:.indent-5}Walk the deck my Captain lies,
35 | - {:.indent-6}Fallen cold and dead.
36 |
37 |
38 |
39 | ---
40 |
41 | ## Footnotes
42 |
43 | [^fn1]:
44 |
45 | The author had just landed in La Guardia Airport after the flight captain died. All the passengers stood up to applaud the co-pilot. We have it in good authority that the event in question led Yoko Ono to write her "Letter to John":
46 |
47 | > - On a windy day let's go flying
48 | > - There may be no trees to rest on
49 | > - There may be no clouds to ride
50 | > - But we'll have our wings and the wind will be with us
51 | > - That's enough for me, that's enough for me.
52 | {:.poetry}
53 |
54 | [^fn2]: The bugle is a small trumpet implicated in the military industrial complex.
55 |
56 | [^fn3]: Another footnote. Why not?
57 |
--------------------------------------------------------------------------------
/_texts/raising.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: drama
3 | title: A Raisin in the Sun
4 | author: Lorraine Hansberry
5 | editor: Alex Gil
6 | source: "Hansberry, Lorraine, and Robert Nemiroff. A Raisin in the Sun. Rep Rei edition. New York: Vintage, 2004. Print."
7 |
8 | ---
9 |
10 |
by {{ page.author }}
11 |
12 | (excerpt)
13 |
14 | MAMA: Son—how come you talk so much 'bout money?
15 |
16 | WALTER (*with immense passion*): Because it is life, Mama!
17 |
18 | MAMA: Oh—So now it’s life. Money is life. Once upon a time freedom used to be life—now it’s money. I guess the world really do change ...
19 |
20 | WALTER: No—it was always money, Mama. We just didn’t know about it.
21 |
22 | MAMA: No . . . something has changed. (*She looks at him*) You something new, boy. In my time we was worried about not being lynched and getting to the North if we could and how to stay alive and still have a pinch of dignity too ... Now here come you and Beneatha—talking 'bout things we never even thought about hardly, me and your daddy. You ain’t satisfied or proud of nothing we done. I mean that you had a home; that we kept you out of trouble till you was grown; that you don’t have to ride to work on the back of nobody’s streetcar—You my children—but how different we done become.
--------------------------------------------------------------------------------
/about.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: page
3 | title: About
4 | ---
5 |
6 | One of our most pressing and ever revolving needs as scholars is to pass on our textual artifacts from one generation to another. The art of textual editing, among other practices, has helped many cultures to remember and interpret for centuries. Alas, that art is practiced and encouraged in its highest form by a dwindling number of scholars. In a digital environment the problem is compounded by the difficulties of the medium. While vast repositories, and "e-publications" appear on the online scene yearly, very few manifest a textual scholar's disciplined attention to detail. In contrast, most textual scholars who have made the leap to a rigorous digital practice have focused on markup, relying on technical teams to deploy and maintain their work. This makes your average scholarly digital edition a very costly, and therefore limited affair.
7 |
8 | As we see it, a minimal edition is one that aims to reduce the size and complexity of the back and front end, and the learning curves for the user and the producer. Out of-the-box, this theme can help you build a simple reading edition, or a traditional scholarly edition with footnotes and a bibliography without breaking the bank. In our estimate, these are the two most immediately useful type of editions for editors and readers. An edition produced with Ed consists of static pages whose rate of decay is substantially lower than database-driven systems. As an added bonus, these static pages require less bandwith. Our hope is that our approach can help beginners or veterans deploy beautiful editions with less effort, that it can help us teach a 'full stack' in one academic semester, allow us to care for our projects at less cost, and perhaps, just perhaps, allow us to generate high-quality editions on github.io in large quantities based on the [git-lit](http://jonreeve.com/2015/09/introducing-git-lit/) model by Jonathan Reeve. We're coming for you, Kindle!
9 |
10 |
11 | ## Sample Ed editions.
12 |
13 | - [Our sample site](http://elotroalex.github.io/ed/) is the first edition built with Ed.
14 | - [Fugitive Verses](http://fugitiverses.viraltexts.org/): Popular Reprinted Poetry from Nineteenth Century Newspapers
15 | - [mini lazarillo](http://minilazarillo.github.io/): A minimal edition of the *Lazarillo de Tormes*
16 | - [Making and Knowing](https://cu-mkp.github.io/GR8975-edition/): The BnF Ms Fr 640 in Translation
17 | - [Daisy Miller: A Comedy in Three Acts](https://britaneeelizabeth.github.io/ed/texts/DaisyMillerPlay/)
18 |
19 |
20 |
21 | ## Current Features
22 | - Templates for narrative, drama and poetry
23 | - Responsive design for mobile phones, tablets and PCs.
24 | - Relatively easy to learn and teach
25 | - Works well in high- or low- bandwitdh scenarios
26 | - Easier for digital archives and libraries to preserve
27 | - Open source, open access
28 | - Unobtrusive footnotes
29 | - Metadata in Dublin Core and OpenGraph to play nice with Zotero, libraries and social media.
30 | - Automatic table of content generation
31 | - Simple search functionality
32 | - Annotations via [hypothes.is](https://hypothes.is/)
33 | - Optional: Ability to generate well-formatted bibliographies and linked citations
34 |
35 |
36 | ## Installing and using Ed
37 |
38 | To learn how to install and begin using Ed, please visit our [documentation page](http://elotroalex.github.io/ed/documentation/).
--------------------------------------------------------------------------------
/assets/apple-touch-icon-precomposed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/elotroalex/ed/729789e83fb012a1eff5e59e4c5d626be4330ec4/assets/apple-touch-icon-precomposed.png
--------------------------------------------------------------------------------
/assets/css/style.scss:
--------------------------------------------------------------------------------
1 | ---
2 | sitemap: false
3 | ---
4 |
5 | /*
6 | * Common Variables
7 | *
8 | * Feel free to change!
9 | *
10 | */
11 |
12 | /* FONTS */
13 |
14 | $main-font: "Palatino Linotype", "Book Antiqua", Palatino, serif;
15 | $heading-font: sans-serif;
16 | $regular-font-size: 20px;
17 |
18 | /*
19 | * COLOR.
20 | *
21 | * Make sure to leave color-scheme in config file empty for granular control
22 | *
23 | */
24 |
25 | $text-color: #454545;
26 | $heading-color: #404040;
27 | $link-color: #841212;
28 |
29 |
30 | @import "ed";
31 | @import "syntax";
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/assets/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/elotroalex/ed/729789e83fb012a1eff5e59e4c5d626be4330ec4/assets/favicon.ico
--------------------------------------------------------------------------------
/assets/js/elasticlunr.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * elasticlunr - http://weixsong.github.io
3 | * Lightweight full-text search engine in Javascript for browser search and offline search. - 0.8.8
4 | *
5 | * Copyright (C) 2016 Oliver Nightingale
6 | * Copyright (C) 2016 Wei Song
7 | * MIT Licensed
8 | * @license
9 | */
10 | !function(){var e=function(t){var n=new e.Index;return n.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),t&&t.call(n,n),n};e.version="0.8.8",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},e.EventEmitter=function(){this.events={}},e.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},e.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!=n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},e.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)})}},e.EventEmitter.prototype.hasHandler=function(e){return e in this.events},e.tokenizer=function(t){if(!arguments.length||null===t||void 0===t)return[];if(Array.isArray(t)){var n=t.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(t){return e.utils.toString(t).toLowerCase()});var i=[];return n.forEach(function(t){var n=t.split(e.tokenizer.seperator);i=i.concat(n)},this),i}return t.toString().trim().toLowerCase().split(e.tokenizer.seperator)},e.tokenizer.defaultSeperator=/[\s\-]+/,e.tokenizer.seperator=e.tokenizer.defaultSeperator,e.tokenizer.setSeperator=function(t){null!==t&&void 0!==t&&"object"==typeof t&&(e.tokenizer.seperator=t)},e.tokenizer.resetSeperator=function(){e.tokenizer.seperator=e.tokenizer.defaultSeperator},e.tokenizer.getSeperator=function(){return e.tokenizer.seperator},e.Pipeline=function(){this._queue=[]},e.Pipeline.registeredFunctions={},e.Pipeline.registerFunction=function(t,n){n in e.Pipeline.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+n),t.label=n,e.Pipeline.registeredFunctions[n]=t},e.Pipeline.getRegisteredFunction=function(t){return t in e.Pipeline.registeredFunctions!=!0?null:e.Pipeline.registeredFunctions[t]},e.Pipeline.warnIfFunctionNotRegistered=function(t){var n=t.label&&t.label in this.registeredFunctions;n||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var n=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.getRegisteredFunction(t);if(!i)throw new Error("Cannot load un-registered function: "+t);n.add(i)}),n},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._queue.push(t)},this)},e.Pipeline.prototype.after=function(t,n){e.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(t);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},e.Pipeline.prototype.before=function(t,n){e.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(t);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},e.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},e.Pipeline.prototype.reset=function(){this._queue=[]},e.Pipeline.prototype.get=function(){return this._queue},e.Pipeline.prototype.toJSON=function(){return this._queue.map(function(t){return e.Pipeline.warnIfFunctionNotRegistered(t),t.label})},e.Index=function(){this._fields=[],this._ref="id",this.pipeline=new e.Pipeline,this.documentStore=new e.DocumentStore,this.index={},this.eventEmitter=new e.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},e.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},e.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},e.Index.load=function(t){t.version!==e.version&&e.utils.warn("version mismatch: current "+e.version+" importing "+t.version);var n=new this;n._fields=t.fields,n._ref=t.ref,n.documentStore=e.DocumentStore.load(t.documentStore),n.pipeline=e.Pipeline.load(t.pipeline),n.index={};for(var i in t.index)n.index[i]=e.InvertedIndex.load(t.index[i]);return n},e.Index.prototype.addField=function(t){return this._fields.push(t),this.index[t]=new e.InvertedIndex,this},e.Index.prototype.setRef=function(e){return this._ref=e,this},e.Index.prototype.saveDocument=function(t){return this.documentStore=new e.DocumentStore(t),this},e.Index.prototype.addDoc=function(t,n){if(t){var n=void 0===n?!0:n,i=t[this._ref];this.documentStore.addDoc(i,t),this._fields.forEach(function(n){var o=this.pipeline.run(e.tokenizer(t[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",t,this)}},e.Index.prototype.removeDocByRef=function(t){if(t){if(0==this.documentStore.isDocStored())return void e.utils.warn("remove doc by ref is not allowed, because currectly not storing documents in DocumentStore");if(this.documentStore.hasDoc(t)){var n=this.documentStore.getDoc(t);this.removeDoc(n)}}},e.Index.prototype.removeDoc=function(t,n){if(t){var n=void 0===n?!0:n,i=t[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(e.tokenizer(t[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",t,this))}},e.Index.prototype.update=function(e,t){var t=void 0===t?!0:t;this.removeDoc(e,!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},e.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},e.Index.prototype.getFields=function(){return this._fields.slice()},e.Index.prototype.search=function(t,n){if(!t)return[];var i=null;null!=n&&(i=JSON.stringify(n));var o=new e.Configuration(i,this.getFields()).get(),r=this.pipeline.run(e.tokenizer(t)),s={};for(var u in o){var a=this.fieldSearch(r,u,o),l=o[u].boost;for(var d in a)a[d]=a[d]*l;for(var d in a)d in s?s[d]+=a[d]:s[d]=a[d]}var c=[];for(var d in s)c.push({ref:d,score:s[d]});return c.sort(function(e,t){return t.score-e.score}),c},e.Index.prototype.fieldSearch=function(e,t,n){var i=n[t].bool,o=n[t].expand,r={},s={};return e.forEach(function(e){var n=[e];1==o&&(n=this.index[t].expandToken(e)),n.forEach(function(n){var i=this.index[t].getDocs(n),o=this.idf(n,t);for(var u in i){var a=this.index[t].getTermFrequency(n,u),l=this.documentStore.getFieldLength(u,t),d=1;0!=l&&(d=1/Math.sqrt(l));var c=1;n!=e?c=.15*(1-(n.length-e.length)/n.length):this.fieldSearchStats(s,n,i);var f=a*o*d*c;u in r?r[u]+=f:r[u]=f}},this)},this),"AND"==i&&(r=this.intersect(r,s,e.length)),r=this.coordNorm(r,s,e.length)},e.Index.prototype.fieldSearchStats=function(e,t,n){for(var i in n)i in e?e[i].push(t):e[i]=[t]},e.Index.prototype.intersect=function(e,t,n){var i={};for(var o in e)o in t&&t[o].length==n&&(i[o]=e[o]);return i},e.Index.prototype.coordNorm=function(e,t,n){for(var i in e)if(i in t){var o=t[i].length;e[i]=e[i]*o/n}return e},e.Index.prototype.toJSON=function(){var t={};return this._fields.forEach(function(e){t[e]=this.index[e].toJSON()},this),{version:e.version,fields:this._fields,ref:this._ref,documentStore:this.documentStore.toJSON(),index:t,pipeline:this.pipeline.toJSON()}},e.Index.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},e.DocumentStore=function(e){this._save=null===e||void 0===e?!0:e,this.docs={},this.docInfo={},this.length=0},e.DocumentStore.load=function(e){var t=new this;return t.length=e.length,t.docs=e.docs,t.docInfo=e.docInfo,t._save=e.save,t},e.DocumentStore.prototype.isDocStored=function(){return this._save},e.DocumentStore.prototype.addDoc=function(e,t){this.hasDoc(e)||this.length++,this.docs[e]=this._save===!0?t:null},e.DocumentStore.prototype.getDoc=function(e){return this.hasDoc(e)===!1?null:this.docs[e]},e.DocumentStore.prototype.hasDoc=function(e){return e in this.docs},e.DocumentStore.prototype.removeDoc=function(e){this.hasDoc(e)&&(delete this.docs[e],delete this.docInfo[e],this.length--)},e.DocumentStore.prototype.addFieldLength=function(e,t,n){null!==e&&void 0!==e&&0!=this.hasDoc(e)&&(this.docInfo[e]||(this.docInfo[e]={}),this.docInfo[e][t]=n)},e.DocumentStore.prototype.updateFieldLength=function(e,t,n){null!==e&&void 0!==e&&0!=this.hasDoc(e)&&this.addFieldLength(e,t,n)},e.DocumentStore.prototype.getFieldLength=function(e,t){return null===e||void 0===e?0:e in this.docs&&t in this.docInfo[e]?this.docInfo[e][t]:0},e.DocumentStore.prototype.toJSON=function(){return{docs:this.docs,docInfo:this.docInfo,length:this.length,save:this._save}},e.stemmer=function(){var e={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},t={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",o=n+"[^aeiouy]*",r=i+"[aeiou]*",s="^("+o+")?"+r+o,u="^("+o+")?"+r+o+"("+r+")?$",a="^("+o+")?"+r+o+r+o,l="^("+o+")?"+i,d=new RegExp(s),c=new RegExp(a),f=new RegExp(u),h=new RegExp(l),p=/^(.+?)(ss|i)es$/,v=/^(.+?)([^s])s$/,g=/^(.+?)eed$/,m=/^(.+?)(ed|ing)$/,y=/.$/,x=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),I=new RegExp("^"+o+i+"[^aeiouwxy]$"),S=/^(.+?[^aeiou])y$/,b=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,D=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,F=/^(.+?)(s|t)(ion)$/,_=/^(.+?)e$/,P=/ll$/,k=new RegExp("^"+o+i+"[^aeiouwxy]$"),z=function(n){var i,o,r,s,u,a,l;if(n.length<3)return n;if(r=n.substr(0,1),"y"==r&&(n=r.toUpperCase()+n.substr(1)),s=p,u=v,s.test(n)?n=n.replace(s,"$1$2"):u.test(n)&&(n=n.replace(u,"$1$2")),s=g,u=m,s.test(n)){var z=s.exec(n);s=d,s.test(z[1])&&(s=y,n=n.replace(s,""))}else if(u.test(n)){var z=u.exec(n);i=z[1],u=h,u.test(i)&&(n=i,u=x,a=w,l=I,u.test(n)?n+="e":a.test(n)?(s=y,n=n.replace(s,"")):l.test(n)&&(n+="e"))}if(s=S,s.test(n)){var z=s.exec(n);i=z[1],n=i+"i"}if(s=b,s.test(n)){var z=s.exec(n);i=z[1],o=z[2],s=d,s.test(i)&&(n=i+e[o])}if(s=E,s.test(n)){var z=s.exec(n);i=z[1],o=z[2],s=d,s.test(i)&&(n=i+t[o])}if(s=D,u=F,s.test(n)){var z=s.exec(n);i=z[1],s=c,s.test(i)&&(n=i)}else if(u.test(n)){var z=u.exec(n);i=z[1]+z[2],u=c,u.test(i)&&(n=i)}if(s=_,s.test(n)){var z=s.exec(n);i=z[1],s=c,u=f,a=k,(s.test(i)||u.test(i)&&!a.test(i))&&(n=i)}return s=P,u=c,s.test(n)&&u.test(n)&&(s=y,n=n.replace(s,"")),"y"==r&&(n=r.toLowerCase()+n.substr(1)),n};return z}(),e.Pipeline.registerFunction(e.stemmer,"stemmer"),e.stopWordFilter=function(t){return t&&e.stopWordFilter.stopWords[t]!==!0?t:void 0},e.clearStopWords=function(){e.stopWordFilter.stopWords={}},e.addStopWords=function(t){null!=t&&Array.isArray(t)!==!1&&t.forEach(function(t){e.stopWordFilter.stopWords[t]=!0},this)},e.resetStopWords=function(){e.stopWordFilter.stopWords=e.defaultStopWords},e.defaultStopWords={"":!0,a:!0,able:!0,about:!0,across:!0,after:!0,all:!0,almost:!0,also:!0,am:!0,among:!0,an:!0,and:!0,any:!0,are:!0,as:!0,at:!0,be:!0,because:!0,been:!0,but:!0,by:!0,can:!0,cannot:!0,could:!0,dear:!0,did:!0,"do":!0,does:!0,either:!0,"else":!0,ever:!0,every:!0,"for":!0,from:!0,get:!0,got:!0,had:!0,has:!0,have:!0,he:!0,her:!0,hers:!0,him:!0,his:!0,how:!0,however:!0,i:!0,"if":!0,"in":!0,into:!0,is:!0,it:!0,its:!0,just:!0,least:!0,let:!0,like:!0,likely:!0,may:!0,me:!0,might:!0,most:!0,must:!0,my:!0,neither:!0,no:!0,nor:!0,not:!0,of:!0,off:!0,often:!0,on:!0,only:!0,or:!0,other:!0,our:!0,own:!0,rather:!0,said:!0,say:!0,says:!0,she:!0,should:!0,since:!0,so:!0,some:!0,than:!0,that:!0,the:!0,their:!0,them:!0,then:!0,there:!0,these:!0,they:!0,"this":!0,tis:!0,to:!0,too:!0,twas:!0,us:!0,wants:!0,was:!0,we:!0,were:!0,what:!0,when:!0,where:!0,which:!0,"while":!0,who:!0,whom:!0,why:!0,will:!0,"with":!0,would:!0,yet:!0,you:!0,your:!0},e.stopWordFilter.stopWords=e.defaultStopWords,e.Pipeline.registerFunction(e.stopWordFilter,"stopWordFilter"),e.trimmer=function(e){if(null===e||void 0===e)throw new Error("token should not be undefined");return e.replace(/^\W+/,"").replace(/\W+$/,"")},e.Pipeline.registerFunction(e.trimmer,"trimmer"),e.InvertedIndex=function(){this.root={docs:{},df:0},this.length=0},e.InvertedIndex.load=function(e){var t=new this;return t.root=e.root,t.length=e.length,t},e.InvertedIndex.prototype.addToken=function(e,t,n){for(var n=n||this.root,i=0;i<=e.length-1;){var o=e[i];o in n||(n[o]={docs:{},df:0}),i+=1,n=n[o]}var r=t.ref;n.docs[r]?n.docs[r]={tf:t.tf}:(n.docs[r]={tf:t.tf},n.df+=1,this.length+=1)},e.InvertedIndex.prototype.hasToken=function(e){if(!e)return!1;for(var t=this.root,n=0;n0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},e.InvertedIndex.prototype.toJSON=function(){return{root:this.root,length:this.length}},e.Configuration=function(t,n){var t=t||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(t),this.buildUserConfig(i,n)}catch(o){e.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},e.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},e.Configuration.prototype.buildUserConfig=function(t,n){var i="OR",o=!1;if(this.reset(),"bool"in t&&(i=t.bool||i),"expand"in t&&(o=t.expand||o),"fields"in t)for(var r in t.fields)if(n.indexOf(r)>-1){var s=t.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||1,bool:s.bool||i,expand:u}}else e.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},e.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},e.Configuration.prototype.get=function(){return this.config},e.Configuration.prototype.reset=function(){this.config={}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.elasticlunr=t()}(this,function(){return e})}();
--------------------------------------------------------------------------------
/assets/js/search.js:
--------------------------------------------------------------------------------
1 | ---
2 |
3 | ---
4 | // Based on a script by Kathie Decora : katydecorah.com/code/lunr-and-jekyll/
5 |
6 | //Create the lunr index for the search
7 |
8 | var index = elasticlunr(function () {
9 | this.addField('title')
10 | this.addField('author')
11 | this.addField('layout')
12 | this.addField('content')
13 | this.setRef('id')
14 | });
15 |
16 | //Add to this index the proper metadata from the Jekyll content
17 |
18 |
19 | {% assign count = 0 %}{% for text in site.texts %}
20 | index.addDoc({
21 | title: {{text.title | jsonify}},
22 | author: {{text.author | jsonify}},
23 | layout: {{text.layout | jsonify}},
24 | content: {{text.content | jsonify | strip_html}},
25 | id: {{count}}
26 | });{% assign count = count | plus: 1 %}{% endfor %}
27 | console.log( jQuery.type(index) );
28 |
29 | // Builds reference data (maybe not necessary for us, to check)
30 |
31 |
32 | var store = [{% for text in site.texts %}{
33 | "title": {{text.title | jsonify}},
34 | "author": {{text.author | jsonify}},
35 | "layout": {{ text.layout | jsonify }},
36 | "link": {{text.url | jsonify}},
37 | }
38 | {% unless forloop.last %},{% endunless %}{% endfor %}]
39 |
40 | //Query
41 |
42 | var qd = {}; //Gets values from the URL
43 | location.search.substr(1).split("&").forEach(function(item) {
44 | var s = item.split("="),
45 | k = s[0],
46 | v = s[1] && decodeURIComponent(s[1]);
47 | (k in qd) ? qd[k].push(v) : qd[k] = [v]
48 | });
49 |
50 | function doSearch() {
51 | var resultdiv = $('#results');
52 | var query = $('input#search').val();
53 |
54 | //The search is then launched on the index built with Lunr
55 | var result = index.search(query);
56 | resultdiv.empty();
57 | if (result.length == 0) {
58 | resultdiv.append('
';
68 | resultdiv.append(searchitem);
69 | }
70 | }
71 |
72 | $(document).ready(function() {
73 | if (qd.q) {
74 | $('input#search').val(qd.q[0]);
75 | doSearch();
76 | }
77 | $('input#search').on('keyup', doSearch);
78 | });
79 |
--------------------------------------------------------------------------------
/assets/open-graph-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/elotroalex/ed/729789e83fb012a1eff5e59e4c5d626be4330ec4/assets/open-graph-logo.png
--------------------------------------------------------------------------------
/assets/screenshot-home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/elotroalex/ed/729789e83fb012a1eff5e59e4c5d626be4330ec4/assets/screenshot-home.png
--------------------------------------------------------------------------------
/atom.xml:
--------------------------------------------------------------------------------
1 | ---
2 | layout: null
3 | ---
4 |
5 |
6 |
7 |
8 | {{ site.title }}
9 |
10 |
11 | {{ site.time | date_to_xmlschema }}
12 | {{ site.url }}
13 |
14 | {{ site.author.name }}
15 | {{ site.author.email }}
16 |
17 |
18 | {% for post in site.posts %}
19 |
20 | {{ post.title }}
21 |
22 | {{ post.date | date_to_xmlschema }}
23 | {{ site.url }}{{ site.baseurl }}{{ post.id }}
24 | {{ post.content | xml_escape }}
25 |
26 | {% endfor %}
27 |
28 |
29 |
--------------------------------------------------------------------------------
/credits.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: page
3 | title: Credits
4 | ---
5 |
6 | ### [Susanna Allés Torrent](http://susannalles.github.io/) | Hyper philologist
7 |
8 | Susanna teaches Digital Humanities in the Department of Latin American and Iberian Cultures. She earned her Ph.D in Romance Studies at the University of Barcelona in 2012, and completed a M.A. in «Nouvelles technologies appliquées à l’histoire» at the École Nationale des Chartes (Paris). She has taught at the University of Barcelona and she has been a postdoctoral fellow at the Spanish National Research Council (CSIC). Her research explores several aspects of digital humanities, especially, scholarly digital editions, electronic text analysis, intertextuality and text reuse, and digital lexicography. She also works with the intersection of the Iberian Peninsula and Italy in the Middle Ages and the Renaissance, reconstructing cultural and literary networks between the two.
9 |
10 |
11 | ### [Terry Catapano](https://github.com/tcatapano) | Metadata ninja
12 |
13 | Terry Catapano is a Librarian in Columbia University Libraries' Digital Program Division. He was Chair of the Society of American Archivists' Schema Development Team, responsible for the development of Encoded Archival Description version 3, and is a member of the ArchivesSpace Technical Advisory Group and the Editorial Board for the Metadata Encoding and Transmission Standard (METS). As Vice President of Plazi Verein, he leads the development of the TaxPub extension of the National Library of Medicine/National Center for Biotechnology Information Journal Publishing DTD, and has worked on digitizing, text mining, and providing open access to the literature of biological systematics, including collaborations with WikiData, the Encylopedia of Life, the Global Biodiversity Information Facility (GBIF), ZooBank, and CERN.
14 |
15 | ### [Alex Gil](http://www.elotroalex.com/) | Resident minimalist
16 |
17 | Alex is the Digital Scholarship Coordinator for the Humanities and History at Columbia University. He is vice chair of the [Global Outlook::Digital Humanities](http://www.globaloutlookdh.org/) initiative focusing on minimal computing and translation, is one of the founders and directors of [Columbia's Group for Experimental Methods in the Humanities](http://xpmethod.plaintext.in/) and the [Studio@Butler](https://studio.cul.columbia.edu/), and is actively engaged in several digital humanities projects at Columbia and around the world.
18 |
19 | ### [Johann Gillium](https://github.com/JohannGillium) | Search master
20 |
21 | After having studied digital humanities at the Ecole nationale des Chartes in Paris, Johann has worked in France as a librarian at the Bibliothèque interuniversaire de Santé, where he most notably contributed to the [Vesalius project](http://www3.biusante.parisdescartes.fr/vesale/debut.htm), the digital edition of several works by the great anatomist Andreas Vesalius.
22 |
23 |
24 | ---
25 |
26 | ## Acknowledgments
27 |
28 | As many open source projects, Ed is the work of community. The project starts with the open web, and everything in between leading to [Jekyll](https://jekyllrb.com/) and the wonderful team who wrangled that Ruby in our favor. The theme stylesheets are built on top of [Lanyon](https://github.com/poole/lanyon), a Jekyll theme based on [Poole](http://getpoole.com), "the Jekyll butler," both created by [Mark Otto](https://github.com/mdo) and distributed with an MIT license. Thanks, Mark, for your helpful streamlining! Special hat tips to brother-in-markdown-arms, [Chris Forster](https://github.com/c-forster), and the generous [Sylvester Keil](https://github.com/inukshuk/) for his work on Jekyll Scholar.
29 |
30 |
31 | We are strongly indebted to the research work and conversations stemming out of our [Columbia's Group for Experimental Methods in the Humanities](http://xpmethod.plaintext.in/)—or as we like to call it: #xpmethod; the wonderful international comradery of [GO::DH](http://www.globaloutlookdh.org/); and of course, the support of our [Columbia University Libraries](http://library.columbia.edu/) and its cozy [Studio@Butler](https://studio.cul.columbia.edu/).
32 |
33 | ...and to the writers that inspire us to scribble notes on the margins we protect with our work. Thank you.
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/documentation.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: page
3 | title: Documentation
4 | author: Alex Gil
5 | ---
6 |
7 | ## Contents
8 | {:.no_toc}
9 |
10 | * ToC
11 | {:toc}
12 |
13 | ---
14 |
15 | ## Prerequisites
16 |
17 | This documentation was built with beginners in mind, but has the necessary information for more seasoned producers.
18 |
19 | To install and use Ed you will be using your terminal. If you need a refresher, I highly recommend "[The Command Line Crash Course](http://cli.learncodethehardway.org/book/)." Working knowledge of HTML and CSS is also taken for granted. If you're new to HTML and CSS, you may want to check out the relevant courses on [codecademy.com](https://www.codecademy.com/learn/web).
20 |
21 | Jekyll does not run very well on Windows machines for now. If you are using Windows, this theme won't work for you, but we hope that you simply deploy our principles, and parts of our stylesheet, on a system like [Hugo](https://gohugo.io/), which does work on Windows.
22 |
23 | ---
24 |
25 | ## Installing Ed: Easy
26 |
27 | The easy way to do this is not necessarily the more robust, and may simply not work on your system. The easy way could also be called the 'lucky' way. It will work if your system is ready for Ed. Two major caveats to keep in mind if you go the easy route: a) You may run into problems later when some Ed components need updating; and, b) You may run into conflicts if you run several Ruby environments for different projects. That said, if you just want to quickly try Ed, and you don't run into problems installing, this is perhaps the best approach.
28 |
29 |
30 | If you're using a Mac, make sure you have the appropriate version of [XCode command line tools](https://developer.apple.com/xcode/download/) for your OSX. Using the terminal's `cd` command, switch to the directory where you want to install your project. Once inside the folder, you are ready to download and start using Ed. Enter each of these lines into your terminal (remember to ignore the `$`):
31 |
32 | ~~~ bash
33 | $ git clone https://github.com/elotroalex/ed.git
34 | $ cd ed
35 | $ gem install bundler
36 | $ bundle install
37 | ~~~
38 |
39 | That's it. To see if Ed is working properly we will take advantage of Jekyll's built in server. You can build the first version of your site and run the jekyll server at the same time by entering:
40 |
41 | ~~~ bash
42 | $ jekyll serve
43 | ~~~
44 |
45 | If at any point during this process you had an error you could not resolve, move on to the next section. If the site was rendered fine, copy the url from your terminal log and paste it into your browser of choice (I recommend Firefox). This url usually looks something like this `http://127.0.0.1:4000/ed`. At this point you should be looking at your very own working version of Ed:
46 |
47 | 
48 |
49 | ---
50 |
51 | ## Installing Ed: Robust
52 |
53 | The first step to install Ed is to download the source files from GitHub. To do so you must have git installed on your computer. You probably have git already, but if you don't, the easiest way is probably to install [Github Desktop](https://desktop.github.com/) (even though we will be using git and github from the terminal in this tutorial). Mac users may want to ensure they have [Xcode](https://developer.apple.com/xcode/) and its command line tools installed as well. To check if git is running on your system enter the following line on your terminal (remember to ignore the $):
54 |
55 | ~~~ bash
56 | $ git --version
57 | ~~~
58 |
59 | If you don't get an error, you're good to go. Using the `cd` command on your terminal, navigate to the folder where you keep your web projects. Once you're in the folder where you want Ed to live, download it from github using the following line (remember you can copy and paste):
60 |
61 | ~~~ bash
62 | $ git clone https://github.com/elotroalex/ed.git
63 | ~~~
64 |
65 | At this point you should navigate inside your Ed project folder and stay there until further notice:
66 |
67 | ~~~ bash
68 | $ cd ed
69 | ~~~
70 |
71 | Jekyll is a Ruby gem (Ruby's name for software packages). The best way to ensure you have the right environment is to use Ruby Version Manager, or [rvm](https://rvm.io/), and the latest stable version of Ruby. To install rvm *and* a recent version of Ruby at the same time, follow the instructions on rvm's site. Remember to add `--ruby=2.3.0` at the end of the `curl` command to install ruby at the same time.
72 |
73 | After the process runs succesfully, read the last few lines generated by the terminal. You will see final instructions for making rvm run. Once you finish the process, check to see if rvm is running by entering:
74 |
75 | ~~~ bash
76 | $ rvm --version
77 | ~~~
78 |
79 | If you don't get an error, you're ready for the next step. If you do get an error, and don't feel comfortable troubleshooting on the terminal, this is a good opportunity to reach out to a friend who can help. You can leave me a note on [the issues page](https://github.com/elotroalex/ed/issues), for example. I'll try to get to it as soon as my other commitments permit. If you're comfortable troubleshooting on your own, I recommend Jekyll's own [troubleshooting documentation](http://jekyllrb.com/docs/troubleshooting/). Another great strategy for troubleshooting on the terminal is to copy and paste the errors you receive (sans personal information) into your favorite search engine.
80 |
81 | The next step is to create a gemset for your jekyll projects. A gemset is a set of gems. If you don't create and use a gemset, every gem you install will be applied system-wide. This is not necessarily a bad thing, but if you will have several projects with several setups, this strategy will serve you well in the long run. To create a gemset:
82 |
83 | ~~~ bash
84 | $ rvm gemset create ed
85 | ~~~
86 |
87 | To use the gemset you just created:
88 |
89 | ~~~ bash
90 | $ rvm gemset use ed
91 | ~~~
92 |
93 | N.B. Everytime you open a new tab or window on your terminal you need to declare your gemset using `rvm gemset use ed`, or else it will revert to `(default)`.
94 |
95 | Now that rvm and Ruby are set up, we're ready to install our first gem: Bundler. Bundler is a gem that allows you to install many gems at the same time using Gemfiles, which is a simple list of specific gems that lives in your project folder. Once you install it, you will be ready to run the Gemfile I provided in the source files. To install Bundler:
96 |
97 | ~~~ bash
98 | $ gem install bundler
99 | ~~~
100 |
101 | You're very close. Now that Bundler is installed, the final step is to install the right version of Jekyll. To do so run the Gemfile this way (remember you must be inside the `ed` folder for this to work):
102 |
103 | ~~~ bash
104 | $ bundle install
105 | ~~~
106 |
107 |
108 | If you don't get any errors, Ed should work at this point. To see if Ed is working properly we will take advantage of Jekyll's built in server. You can build the first version of your site and run the jekyll server at the same time by entering:
109 |
110 | ~~~ bash
111 | $ jekyll serve
112 | ~~~
113 |
114 | If you are running multiple Ruby environments using bundler, you will need to add `bundle exec` to the command:
115 |
116 | ~~~ bash
117 | $ bundle exec jekyll serve
118 | ~~~
119 |
120 | Copy the url from your terminal log and paste it into your browser of choice (I recommend Firefox). This url usually looks something like this `http://127.0.0.1:4000/ed`. At this point you should be looking at your very own working version of Ed:
121 |
122 | 
123 |
124 | ---
125 |
126 | ## Installing Ed: Replacing an existing Jekyll theme
127 |
128 | Ed, like Jekyll, is also a gem. Jekyll gives you the option to switch themes, as long as those themes are gems as well. If you have existing content and would like to use Ed, you need to add the following line to your _config.yml file, usually at the bottom:
129 |
130 | ~~~
131 | theme: "ed."
132 | ~~~
133 |
134 | You also need to add the gem to your Gemfile file:
135 |
136 | ~~~
137 | gem "ed.", "0.1.1"
138 | ~~~
139 |
140 | Make sure to replace the version number with the one you need. I will do my best to document what changes come with each new gem. If your current theme does not have a Gemfile, you would need to create one and add the line above. The Gemfile is a plain text file like all other files in Jekyll, and should not have a file extension.
141 |
142 | After these files have been modified, you need to update your Bundle in the terminal:
143 |
144 | ~~~ bash
145 | $ bundle update
146 | ~~~
147 |
148 | When using the gem on top of a previous theme, you will not have all the files of a full Ed install immediately available to you. More importantly, you may not have a _texts folder. You need to create one or copy them from a full installation of Ed. You might also want to add the search and index file. The gem comes bundled with all these files once you install it on your system, but they won't be in the same folder as your project. To locate them you can refer to the [Jekyll documentation for gem-based themes](https://jekyllrb.com/docs/themes/). With some previous themes you might need to erase lingering files that interfere with the functioning of Ed. This can be an advanced operation I can't do justice to here. At that point you might need to familiarize yourself with the architecture of Jekyll, or pay close attention to errors when you try to serve the site, and reverse-engineer from there.
149 |
150 | Going forward, updating to a new version of Ed is as simple as changing the release version and running the bundle update. I will try to keep changes in the actual markup to a minimum, but will let users know if any changes require a global find and replace in your editions.
151 |
152 | ---
153 |
154 | ## Jekyll
155 |
156 | Ed is a Jekyll theme. That means you will need some familiarity with Jekyll to take advantage of its full potential. While running a Jekyll site is a bit more involved than Wordpress and other similar tools, the payoff in the long term is worth the effort to learn it. If you are new to Jekyll, I recommend you take a look at ["How (and Why) to Generate a Static Website Using Jekyll"](http://chronicle.com/blogs/profhacker/jekyll1/60913) at ProfHacker, Amanda Visconti's excellent [Building a static website with Jekyll and GitHub Pages](http://programminghistorian.org/lessons/building-static-sites-with-jekyll-github-pages) on *The Programming Historian* and [Jekyll's own documentation](http://jekyllrb.com/) to start getting a sense of how it works.
157 |
158 | Once you have gone through these tutorials, you can get started using Ed by replacing the sample texts included in in the `_texts` folder in Ed with your own edited texts. Remember to always and only edit files in Ed using [a plain text editor](https://en.wikipedia.org/wiki/Text_editor), and *not* a word processor. I'm composing this file using a plain text editor called [Sublime Text](http://www.sublimetext.com/).
159 |
160 | An easy way to make new texts is to copy an existing text, replace the content and rename the file. Remember to always use the jekyll convention for naming files: `your-title.md`. You should also make sure that all your texts have the YAML front matter (the information at the top of the file). YAML stands for "YAML Ain't Markup Language"---no disrespect to XML---and it's the main way that Jekyll handles named data. Here's an example of YAML front matter:
161 |
162 | ~~~ yaml
163 | ---
164 | layout: poem
165 | title: "Cahier d'un retour au pays natal"
166 | author: Aimé Césaire
167 | ---
168 | ~~~
169 |
170 | Besides replacing content and creating new texts, you will probably want to edit the `_config.yml` file to replace the boilerplate information we provided with your own personalized information in the relevant categories. Avoid replacing the information in categories that are not clear to you. Make sure to use proper YAML formatting when writing in the `_config.yml` file. Here's [a good reference source](http://docs.ansible.com/ansible/YAMLSyntax.html) in case you have doubts.
171 |
172 | ---
173 |
174 | ## Markdown and kramdown
175 |
176 | Ed is designed for scholars and amateur editors who want to produce either a clean reading edition or a scholarly annotated edition of a text. The main language we use to write in the Jekyll environment is called Markdown. To learn more about the Markdown family, see Dennis Tenen and Grant Wythoff's "[Sustainable Authorship in Plain Text using Pandoc and Markdown](http://programminghistorian.org/lessons/sustainable-authorship-in-plain-text-using-pandoc-and-markdown)."
177 |
178 | Our version of Jekyll uses a special Markdown processor called kramdown. The processor can be said to use it's own 'flavor' of Markdown, and sometimes the Markdown syntax will be different than other flavors of Markdown. Kramdown is convenient for scholars because of the way it handles footnotes. You can become familiar with the kramdown syntax in the [kramdown documentation](http://kramdown.gettalong.org/syntax.html). Another way to become familiar is to examine the sample text source files we provided.
179 |
180 | ---
181 |
182 | ## Genres
183 |
184 | Ed offers three different layouts: poem, narrative and drama. The genre is indicated in the YAML front matter on your texts. The templates that govern how these genres are displayed can be found in the `_layouts` folder. Using these layouts will allow you to tweak the stylesheets according to your different needs. Out of the box, Ed contains some special instructions for poetry in its stylesheets that allow you to deal with some of the peculiarities of poetry layouts.
185 |
186 | To indicate lines in poetry we use the line syntax from Markdown:
187 |
188 | ~~~ markdown
189 | - Hold fast to dreams
190 | - For if dreams die
191 | - Life is a broken-winged bird
192 | - That cannot fly.
193 | - Hold fast to dreams
194 | - For when dreams go
195 | - Life is a barren field
196 | - Frozen with snow.
197 | ~~~
198 |
199 | To indent specific lines we take advantage of a feature in kramdown that allows us to indicate classes for a line. This approach still allows the line to be readable while editing.
200 |
201 | ~~~ markdown
202 | - {:.indent-3} But O heart! heart! heart!
203 | - {:.indent-4} O the bleeding drops of red,
204 | - {:.indent-5} Where on the deck my Captain lies,
205 | - {:.indent-6} Fallen cold and dead.
206 | ~~~
207 |
208 | The `-` at the beginning of each line indicates that these are lines. The `{:.indent-3}` is what we need to in order to indicate the indent value for that line. Values can range from 1-10. You can expand the range or adjust the values in the Ed stylesheet (`_ed.scss`) in the `_sass` folder.
209 |
210 | The example from Raisin in the Sun shows us that we don't need much special markup for theater as long as we use CAPITAL LETTERS for speakers. Italics for directions are easy enough. Just use `*` around the words you want to italicize.
211 |
212 | *Narrative of the Life of Frederick Douglass* shows us an example of narrative that includes footnotes and quoted poetry. See the sections below for how to accomplish these different effects.
213 |
214 | ---
215 |
216 | ## Footnotes
217 |
218 | Footnotes are the bread and butter of scholarship. Kramdown makes footnotes a fairly simple affair:
219 |
220 |
221 | ~~~
222 | - O Captain! my Captain! rise up and hear the bells;
223 | - Rise up—for you the flag is flung—for you the bugle[^fn2] trills,
224 |
225 | ...
226 |
227 | [^fn2]: The bugle is a small trumpet implicated in the military industrial complex.
228 | ~~~
229 |
230 | These footnotes can be placed anywhere, but they will always be generated at the bottom of the document. To have a multi-paragraph footnote you need to start the footnote text on the next line after the footnote anchor and indent it:
231 |
232 | ~~~
233 | [^fn3]:
234 | Ugh pinterest fixie cronut pitchfork beard. Literally deep
235 | cold-pressed distillery pabst austin.
236 |
237 | Typewriter 90's roof party poutine, kickstarter raw
238 | denim pabst readymade biodiesel umami chicharrones XOXO.
239 | ~~~
240 |
241 | The footnotes system provided by kramdown does have one limitation: It generates the numeration for you automatically, and it only allows you to have one set of footnotes for a text. In some cases we have to separate the author's footnotes from our own, in others we want to represent the author's own footnote style. In these cases we have to use HTML. Here's the example from *Narrative of the Life*:
242 |
243 | ~~~ html
244 | ... At this time, Anna,\* my intended wife, came on;
245 |
246 | ...
247 |
248 | * She was free. [↩︎](#ref2)
249 | ~~~
250 |
251 | Notice the double HTML Entity (hex), `↩︎`, used at the end of the footnote to return us to the top. The first hex is the ↩︎ symbol proper. The second assigns the proper variant glyph. This is a necessary hack while we wait for Apple devices to stop turning everything into unseemly emojis.
252 |
253 | ---
254 |
255 | ## Blockquotes
256 |
257 | *Narrative of the Life* also includes several blockquotes. You can also find another example of blockquote use in the footnote of "O Captain! My Captain!" Simple blockquotes are simple enough in kramdown:
258 |
259 | ~~~
260 | > This is to certify that I, the undersigned, have given the bearer, my servant, full liberty to go to Baltimore, and spend the Easter holidays.
261 | >
262 | > Written with mine own hand, &c., 1835.
263 | > WILLIAM HAMILTON,
264 | ~~~
265 |
266 | To use a line break in block elements add two spaces after the end of the line where you want the break. You can't see them after `&c., 1835.` but they are there.
267 |
268 | Things get a bit complicated when we want to use poetry inside the block or when the block is included in another block element, like a footnote. Here's the last two stanzas from "A Parody" in *Narrative of the Life*, which shows an example of a blockquote of poetry:
269 |
270 | ~~~
271 | ...
272 | > - Two others oped their iron jaws,
273 | > - And waved their children-stealing paws;
274 | > - There sat their children in gewgaws;
275 | > - By stinting negroes' backs and maws,
276 | > - They kept up heavenly union.
277 | > ^
278 | > - All good from Jack another takes,
279 | > - And entertains their flirts and rakes,
280 | > - Who dress as sleek as glossy snakes,
281 | > - And cram their mouths with sweetened cakes;
282 | > - And this goes down for union.
283 | {:.poetry}
284 | ~~~
285 |
286 | The `{:.poetry}` tag at the end tells the processor to think of the lines above it as poetry. The `{:.poetry}` tag is an example of kramdown class assignments for block-elements. Because this segment of poetry exists in the 'narrative' layout, and because it is part of a blockquote, we need to signal to the processor to process poetry this way, so that the right class is invoked in the stylesheet. Notice also the `^` separating the stanzas. This bit of kramdown syntax helps us separate the stanzas while staying within the blockquote. The good news is this is the most complex kramdown syntax layout you will encounter in Ed.
287 |
288 |
289 | ## Pages
290 |
291 | Your editions are treated as [collections](https://jekyllrb.com/docs/collections/) in Ed. Other web pages in your site exist outside the `_texts` folder. The homepage, for example, is constructed from the `index.html` file found on the root folder of your Ed project.
292 |
293 | You will notice that the homepage in particular has a `.html` file ending instead of a `.md` ending. All template files in Jekyll are HTML, and the index behaves as a template file. Although these files are mostly written in HTML, notice that they still contain YAML front matter and liquid tags. To edit the homepage replace the content on the file shipped with Ed, making sure that your changes to `index.html` are written in valid HTML. The same goes for the template files in the `_layouts` folder.
294 |
295 | Ed also comes with a search page, `search.html`. This page implements [elastic lunr](http://elasticlunr.com/), "a lightweight full-text search engine in Javascript for browser search and offline search." This simple search page can be useful if you have large collections of texts. If you don't, and don't feel the need, go ahead and delete it along with the `assets/js` folder.
296 |
297 | Besides the homepage and the search page, Ed ships with an About page, `about.md` and a documentation page, `documentation.md`, i.e. this page. As you can see, these are regular `.md` files. You can replace the contents of each file using normal kramdown syntax. This also applies to any new page you create, which you should remember to save with an `.md` extension. When editing the `bibliography.md` file, be careful not to replace the liquid tag that generates your bibliography, unless you don't want to have a bibliography at all.
298 |
299 | ---
300 |
301 | ## Tables of Content
302 |
303 | You will find three kinds of Tables of Content in Ed. The first example is in the list of Sample Texts in the Homepage. This list is generated using the [Liquid Templating language](http://liquidmarkup.org/). This is one of the major components of Jekyll, and I recommend you deepen your knowledge of it if you want to modify the logic that automates much of Ed. Here is the code that generates the Sample Texts list on the homepage:
304 |
305 | ~~~ html
306 |
318 | ~~~
319 |
320 | As you can see, the liquid tags `{%raw%}{% %}{%endraw%}` and `{%raw%}{{ }}{%endraw%}` are embedded into the HTML. Those with `{%raw%}{% %}{%endraw%}` often use programmatic logic, as is the case here. If you are not already familiar with programming languages, you may need to start elsewhere. I recommend learning Ruby, since this is the language used to build jekyll and jekyll-scholar in the first place (it's also the first programming language I used, so I'm biased). The `{%raw%}{{ }}{%endraw%}` simply pulls data from your project. In the example above it pulls the title from each 'post', i.e. each edited text. As you may have noticed already, we are basically adapting the blogging features of Jekyll to our own ends, what Cuban designer and theorist Ernesto Oroza would call "[technological dissobedience](http://www.ernestooroza.com/)."
321 |
322 | The second kind of table of content is exemplified in this documentation. If you open the source file for the documentation, you will notice at the top this snippet:
323 |
324 | ~~~ markdown
325 | ## Contents
326 | {:.no_toc}
327 |
328 | * ToC
329 | {:toc}
330 | ~~~
331 |
332 | This is the kramdown way. The first tag, `{:.no_toc}` tells the processor not to add `## Contents` to the ToC. The second part creates an empty list and then tells the processor to replace it with a table of contents based on headers in the document. You can use this syntax in any page on the site that uses headers.
333 |
334 | The third way is slightly more involved, but very useful for long texts. If we add the table of contents to the YAML front matter of a page, Ed will activate the optional table of content sidebar (`_includes/sidebar-toc.html`) and move the table of contents to a special sidebar for that page. *Narrative of the Life* uses this method for its table of content. If you would like to replicate this functionality in your own long texts, make sure to use the same syntax:
335 |
336 | ~~~ yaml
337 | toc:
338 | - Title Page
339 | - Preface
340 | - Letter From Wendell Phillips
341 | - Chapter I
342 | - Chapter II
343 | ~~~
344 |
345 | The internal links pointing to the right sections in your document are generated from the title names automatically. In order for the links to work the names on section headings must contain the same words as the section headers. The punctuation and capitalization is irrelevant. If you can figure out how Ed accomplishes this trick, you have graduated from the Ed school of minimal editions.
346 |
347 | ---
348 |
349 | ## Bibliographies
350 |
351 | If you want to include a small bibliography, and you feel it would be easier to write it out directly, Ed can help you render it with hanging indentation. To achieve this effect make sure to use the `.bibliography` class in an ordered list. For example:
352 |
353 | ~~~ markdown
354 | 1. Douglass, Frederick et al. Narrative of the Life of Frederick Douglass: An American Slave. Charlottesville, Va.: University of Virginia Library, 1996. Open WorldCat. Web. 17 Apr. 2016.
355 | 2. Hansberry, Lorraine, and Robert Nemiroff. A Raisin in the Sun. Rep Rei edition. New York: Vintage, 2004. Print.
356 | {.bibliography}
357 | ~~~
358 |
359 | Which should display like this:
360 |
361 | 1. Douglass, Frederick et al. Narrative of the Life of Frederick Douglass: An American Slave. Charlottesville, Va.: University of Virginia Library, 1996. Open WorldCat. Web. 17 Apr. 2016.
362 | 2. Hansberry, Lorraine, and Robert Nemiroff. A Raisin in the Sun. Rep Rei edition. New York: Vintage, 2004. Print.
363 | {:.bibliography}
364 |
365 | ---
366 |
367 |
368 | To help us style and generate bibliographies and citations *automatically*, Ed can use the jekyll-scholar gem by [Sylvester Keil](https://github.com/inukshuk/). To learn more about the gem beyond the basic instructions below, make sure to read the documentation on the [jekyll-scholar](https://github.com/inukshuk/jekyll-scholar) GitHub page. Keep in mind, though, that installing jekyll-scholar and working with it may be a bit difficult for beginners.
369 |
370 |
371 | If you can get over the hurdles, jekyll-scholar can save you enormous amounts of time in the long term for your citation and bibliographic work. To begin, you must move the contents of the `jekyll-scholar starter kit` in your `optional` folder into the root folder. This will effectively replace the original `_config.yml` and `Gemfile` files, and add a `_bibliography` folder, and the `bibliography.md` and `Rakefile` files. To enable jekyll-scholar you must re-run `bundle install` again.
372 |
373 | If everything goes smoothly, you should be able to start using jekyll-scholar at this point. The first thing you may want to do is provide Jekyll with your own bibliographic information in the form of a `.bib` file to replace the content of the `references.bib` file we've provided in the `_bibliography` folder.
374 |
375 | To make it easy to create your own version of this file and to keep track of your bibliography for your project, in general I recommend you use [Zotero](http://zotero.org/). To export from Zotero in this format select the references you need from within your Zotero library, right click and select `export in...` and choose the BibLaTeX format. Rename your file to `references.bib` and move it into the `_bibliography` folder. You are, of course, free to create your `references.bib` file using any method you prefer as long as it is a BibTeX file.
376 |
377 | Because as textual editors we are more likely than not to use citations in footnotes or pages that contain footnotes, and because footnotes will be necessarily generated at the bottom of the page, Ed also needs a separate page for your Bibliography or works cited. This is the role of the `bibliography.md` file. Feel free to edit the sample text, but make sure to leave the following line intact:
378 |
379 |
380 | {% bibliography %}
381 |
382 |
383 | To link your citations to the bibliography page, instead of writing them by hand, you can use the cite function in jekyll-scholar:
384 |
385 |
386 | {% cite cesaire_discourse_2001 %}
387 |
388 |
389 | Here's the breakdown:
390 |
391 | * `cite` is the jekyllscholar command.
392 | * `cesaire_discourse_2001` is the unique ID for Césaire's *Discourse on Colonialism* entry included in the reference.bib file.
393 |
394 | Note that our jekyll-scholar starter kit comes ready for MLA style. To use Chicago style or more advanced citation features, refer to the documentation on jekyll-scholar to make the appropriate changes.
395 |
396 | **Publishing your site on Github Pages with jekyll-scholar**
397 |
398 | If you install jekyll-scholar, or most other plugins in Jekyll, you will need a workaround to publish your site on Github Pages, which only runs in 'safe mode.' I've provided a slightly modified version of a `Rakefile` originally created by [Robert Rawlins](https://blog.sorryapp.com/blogging-with-jekyll/2014/01/31/using-jekyll-plugins-on-github-pages.html) that will help you accomplish this task. Once you are ready to publish, switch to your `gh-pages` branch and run the following command:
399 |
400 | ~~~ bash
401 | $ rake ed:publish
402 | ~~~
403 |
404 | ---
405 |
406 | ## Tips and Tricks
407 |
408 | - The folding sidebar menu is generated from the `sidebar.html` file in the `_includes` folder. The top menu items are generated automatically from your pages. The bottom menu items are manually written in HTML. This structure can allow you to add external links. If you don't have that many pages, you may choose to do all the links by hand.
409 | - For more hand-crafted layouts---such as [the title page in *The Narrative of the Life*]({{ site.baseurl }}/texts/narrative/index.html#title-page)---you may choose to work directly with HTML. One of the great advantages of working with the kramdown processor is that we have a lot of flexibility to mix HTML with the kramdown syntax. Note though, that even in the case of the title page, you can achieve these effects using kramdown syntax.
410 | - Make sure to add horizontal rules, `---`, to separate sections in your texts. This creates a more pleasant layout.
411 | - You can clean unnecessary folders and files from the original Ed package before publishing your site. This will help you reduce overhead. For example, you can erase this page, the sample texts and the `syntax.css` file (used for styling code).
412 | - Consider providing tips for your readers on how to make their font bigger or smaller by taking advantage of Command + + and Command + -. Or returning to the top of the page using Command + Up Arrow. Part of the philosophy behind Ed is to avoid duplicating features that are already easily available in most web ecosystems.
413 | - If you want to allow annotations on your site, consider providing a `via.hypothes.is` link. Our sample site can be annotated, for example, using the following link: `https://via.hypothes.is/http://elotroalex.github.io/ed/`, which readers can access on the sidebar. Once you've indicated your own URL in the config file, the link will update automatically. Make sure to visit [hypothes.is](https://hypothes.is/) to learn more.
414 | - Ed includes metadata in the headers that makes it easier for users of Zotero, and other systems to grab bibliographic information for the site and individual texts. Our metadata functionality may not be enough to generate a full proper citation. Consider providing visible citation information in your about page or homepage.
415 | - Make sure to deepen your knowledge of the building blocks of Ed: Jekyll, YAML and Liquid. A great list of resources can be found in the blog "[Jekyll for Web Designers](http://jameswillweb.github.io/jekyll-for-designers/resources.html)".
416 | - Our base themes Poole/Lanyon allow for easily customization of the interface. You can, for example, switch the position of the sidebar, change the theme colors and overlay options. To learn more check out the [Lanyon documentation](https://github.com/poole/lanyon#themes), and make sure to try the green, `.theme-base-0b`, it's really nice.
417 | - You can change the look and feel of the site as a whole by changing the `color-scheme` in the `_config.yml` file. If you want to have more granularity, short of editing the `css`, you can change the variable values in the `assets/css/style.scss` file.
418 | - In the `optional` folder you will find a sample `xslt` to help you get started converting TEI to Ed. You will also find css for adding pop-up "balloons" or tooltips to your texts.
419 |
420 | ---
421 |
422 | ## Publishing: A UNIX server
423 |
424 | Publishing and Ed edition can be done in one of two ways. One way is to host it on a server you rent, own or have access to. Most mortals pay a hosting provider to host their sites. I recommend [Reclaim Hosting](https://reclaimhosting.com/), which is run by scholars for scholars. If you are affiliated with a university, chances are that your institution provides you with a UNIX account and a bit of server space. Since Jekyll generates a full static site for you, that means you can park it there too. To do so you need to build the site first. If you have been keeping your eye on your project by using `jekyll serve`, chances are you have a current built site in your project folder labelled `_site`.
425 |
426 | If you don't already, you can build one easily by using the following Jekyll command:
427 |
428 | ~~~ bash
429 | $ jekyll build
430 | ~~~
431 |
432 | Or, again, if you have multiple environments:
433 |
434 | ~~~ bash
435 | $ bundle exec jekyll serve
436 | ~~~
437 |
438 | Using an FTP client like [Filezilla](https://filezilla-project.org/), or [SSH on your terminal](https://www.siteground.com/tutorials/ssh/), you need to push the contents of the `_site` folder to the folder on your server where you would like your project to exist. Depending on your host provider, you may be able to receive help from the sys admins with this step.
439 |
440 | Please refer to the [note below on base urls](#a-note-on-your-base-url) to make sure your new links work on your new site.
441 |
442 | ## Publishing: GitHub pages
443 |
444 | The second option is to publish your site for free on GitHub Pages.
445 | Whether you decide to publish on GitHub pages or not, we recommend that you still use git and GitHub to version your edition and make the data available via another channel other than your webpage. This is one of the great advantages of using our system, increasing the chances of survival of your work and opening new audiences for it.
446 |
447 | If you do decide to use the GitHub pages option, please make sure to read the [note below on base urls](#a-note-on-your-base-url).
448 |
449 | To publish on GitHub pages, you must have a copy of the repository in GitHub. That means you also need an account there. Once you've created the repository that you will use, you must link your local repository to the one on GitHub. Notice that because you cloned the original source files from my repository, it will be linked to my repository (to which you don't have writing privileges) until you do this step. Instructions for changing the remote URL can be found [here](https://help.github.com/articles/changing-a-remote-s-url/).
450 |
451 | The usual way of doing it is to create a different git branch called `gh-pages` within your local repository for your site. This is a branch is published by GitHub by default. GitHub also gives you the option to select [any branch you want to publish](https://github.com/blog/2228-simpler-github-pages-publishing), including the master branch.
452 |
453 | In the following I use the gh-pages branch. To create and use that branch use the following command:
454 |
455 | ~~~ bash
456 | $ git checkout -b gh-pages
457 | ~~~
458 |
459 | Once you are using that branch, you are ready to publish your site. To do so use simply push the gh-pages branch to github:
460 |
461 | ~~~ bash
462 | $ git push origin gh-pages
463 | ~~~
464 |
465 | You can now access your site using an address that looks like `http://your-username.github.io/your-project-name`. The sample page for Ed, for example, is hosted at [elotroalex.github.io/ed](http://elotroalex.github.io/ed).
466 |
467 | **A note on your base url**
468 |
469 | When you publish on a subfolder—automatic on GitHub pages—many of your links will break unless you indicate the name of your sub-folder in the `baseurl` value in your `_config.html` file. In addition, you need to make sure that your site-wide links (your links to your CSS files, for example) are preceded by the `{{ site.baseurl }}` tag. The base Ed install already uses this system, so you can simply replace the value `/ed` in your `baseurl` to `/your-project-slug`.
470 |
471 | If on the other hand you are running your site on a root folder, simply erase `/ed`, but do make sure to leave the single quotes:
472 |
473 | ~~~ yaml
474 | baseurl: ''
475 | ~~~
476 |
477 | ---
478 |
479 | That should do it. If you have suggestions on how to improve Ed, make sure to leave us a line on [our issues page](https://github.com/elotroalex/ed/issues), or send us a pull request.
480 |
481 | Happy editing!
482 |
483 | Alex Gil
484 | April 2016
--------------------------------------------------------------------------------
/ed..gemspec:
--------------------------------------------------------------------------------
1 | # coding: utf-8
2 |
3 | Gem::Specification.new do |spec|
4 | spec.name = "ed."
5 | spec.version = "1.0"
6 | spec.authors = ["Alex Gil"]
7 | spec.email = ["colibri.alex@gmail.com"]
8 |
9 | spec.summary = "A Jekyll theme for minimal editions"
10 | spec.homepage = "http://minicomp.github.io/ed/"
11 | spec.license = "MIT"
12 |
13 | spec.files = `git ls-files -z`.split("\x0").select { |f| f.match(%r{^(assets|optional|_layouts|_includes|_sass|_texts|index|search|about|credits|documentation|atom|Gemfile|LICENSE|README)}i) }
14 |
15 | spec.add_runtime_dependency "jekyll", ">= 3.6.3"
16 | spec.add_development_dependency "bundler", ">= 2.1.4"
17 | spec.add_development_dependency "rake", ">= 12.3.3"
18 | end
19 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | title: "Ed."
4 | ---
5 |
6 |
hi.
7 |
8 |
Ed is a Jekyll theme designed for textual editors based on minimal computing principles, and focused on legibility, durability, ease and flexibility. Our underlying technology is easy to learn and teach, and can produce beautifully rendered scholarly or reading editions of texts meant to last. To start using Ed, please see our documentation for installation instructions and more. To learn more about the ideas behind Ed and a list of current features see our about section. To see Ed in action, we've provided some sample minimal editions for you below.
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/optional/balloon-css/_balloon.scss:
--------------------------------------------------------------------------------
1 | //******
2 | // SEE https://github.com/kazzkiq/balloon.css
3 | // ******
4 |
5 |
6 | //
7 | // Variables
8 | // -----------------------------------------
9 |
10 | $balloon-bg: fade-out(#111, .1);
11 | $balloon-base-size: 12px;
12 | $balloon-arrow-height: 6px;
13 |
14 | $breakpoint: 860px; //When to not show annotations
15 |
16 |
17 | //
18 | // Mixins
19 | // -----------------------------------------
20 |
21 | @mixin svg-arrow ($color, $position: up) {
22 |
23 | $degrees: 0;
24 | $height: 6px;
25 | $width: 18px;
26 |
27 | @if ($position == down) {
28 | $degrees: 180 18 6;
29 | } @else if ($position == left) {
30 | $degrees: -90 18 18;
31 | $width: 6px;
32 | $height: 18px;
33 | } @else if ($position == right) {
34 | $degrees: 90 6 6;
35 | $width: 6px;
36 | $height: 18px;
37 | }
38 |
39 | background: no-repeat url('data:image/svg+xml;utf8,');
40 | background-size: 100% auto;
41 | width: $width;
42 | height: $height;
43 | }
44 |
45 | @mixin transition ($args...) {
46 | -webkit-transition: $args;
47 | -moz-transition: $args;
48 | -ms-transition: $args;
49 | -o-transition: $args;
50 | transition: $args;
51 | }
52 |
53 | @mixin transform ($val) {
54 | -webkit-transform: $val;
55 | -moz-transform: $val;
56 | -ms-transform: $val;
57 | transform: $val;
58 | }
59 |
60 | @mixin transform-origin ($val) {
61 | -webkit-transform-origin: $val;
62 | -moz-transform-origin: $val;
63 | -ms-transform-origin: $val;
64 | transform-origin: $val;
65 | }
66 |
67 | @mixin opacity ($trans) {
68 | filter: alpha(opactiy=($trans * 100));
69 | -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=#{$trans * 100})";
70 | -moz-opacity: $trans;
71 | -khtml-opacity: $trans;
72 | opacity: $trans;
73 | }
74 |
75 | @mixin base-effects () {
76 | @include opacity(0);
77 | pointer-events: none;
78 | @include transition(all .18s ease-out .18s);
79 | }
80 |
81 |
82 | //
83 | // Styles
84 | // -----------------------------------------
85 |
86 | @media screen and (min-width: $breakpoint) {
87 | [data-balloon] {
88 | position: relative; // alt. absolute or fixed
89 |
90 | &:after {
91 | @include base-effects();
92 |
93 | background: $balloon-bg;
94 | border-radius: 4px;
95 | color: #fff;
96 | content: attr(data-balloon);
97 | font-family: Helvetcia, sans-serif;
98 | text-align: left;
99 | font-size: $balloon-base-size + 2;
100 | padding: .5em 1em;
101 | position: absolute;
102 | white-space: nowrap;
103 | z-index: 10;
104 | }
105 |
106 | &:before {
107 | @include svg-arrow($balloon-bg);
108 | @include base-effects();
109 |
110 | content: '';
111 | position: absolute;
112 | z-index: 10;
113 | }
114 |
115 | &:hover {
116 | &:before,
117 | &:after {
118 | @include opacity(1);
119 | pointer-events: auto;
120 | }
121 | }
122 |
123 | &[data-balloon-break] {
124 | &:after {
125 | white-space: normal;
126 | }
127 | }
128 |
129 | &[data-balloon-pos="up"] {
130 | &:after {
131 | bottom: 100%;
132 | left: 50%;
133 | margin-bottom: 5px + $balloon-arrow-height;
134 | @include transform(translate(-50%, 10px));
135 | @include transform-origin(top);
136 | }
137 | &:before {
138 | bottom: 100%;
139 | left: 50%;
140 | margin-bottom: 5px;
141 | @include transform(translate(-50%, 10px));
142 | @include transform-origin(top);
143 | }
144 |
145 | &:hover {
146 | &:after {
147 | @include transform(translate(-50%, 0));
148 | }
149 |
150 | &:before {
151 | @include transform(translate(-50%, 0));
152 | }
153 | }
154 |
155 | }
156 |
157 | &[data-balloon-pos='down'] {
158 | &:after {
159 | left: 50%;
160 | margin-top: 5px + $balloon-arrow-height;
161 | top: 100%;
162 | @include transform(translate(-50%, -10px));
163 | }
164 |
165 | &:before {
166 | @include svg-arrow($balloon-bg, 'down');
167 |
168 | left: 50%;
169 | margin-top: 5px;
170 | top: 100%;
171 | @include transform(translate(-50%, -10px));
172 | }
173 |
174 | &:hover {
175 | &:after {
176 | @include transform(translate(-50%, 0));
177 | }
178 |
179 | &:before {
180 | @include transform(translate(-50%, 0));
181 | }
182 | }
183 | }
184 |
185 | &[data-balloon-pos='left'] {
186 | &:after {
187 | margin-right: 5px + $balloon-arrow-height;
188 | right: 100%;
189 | top: 50%;
190 | @include transform(translate(10px, -50%));
191 | }
192 |
193 | &:before {
194 | @include svg-arrow($balloon-bg, 'left');
195 |
196 | margin-right: 5px;
197 | right: 100%;
198 | top: 50%;
199 | @include transform(translate(10px, -50%));
200 | }
201 |
202 | &:hover {
203 | &:after {
204 | @include transform(translate(0, -50%));
205 | }
206 |
207 | &:before {
208 | @include transform(translate(0, -50%));
209 | }
210 | }
211 |
212 | }
213 |
214 | &[data-balloon-pos='right'] {
215 | &:after {
216 |
217 | left: 100%;
218 | margin-left: 5px + $balloon-arrow-height;
219 | top: 50%;
220 | @include transform(translate(-10px, -50%));
221 | }
222 |
223 | &:before {
224 | @include svg-arrow($balloon-bg, 'right');
225 |
226 | left: 100%;
227 | margin-left: 5px;
228 | top: 50%;
229 | @include transform(translate(-10px, -50%));
230 | }
231 |
232 | &:hover {
233 | &:after {
234 | @include transform(translate(0, -50%));
235 | }
236 |
237 | &:before {
238 | @include transform(translate(0, -50%));
239 | }
240 | }
241 | }
242 |
243 | &[data-balloon-length='small'] {
244 | &:after {
245 | white-space: normal;
246 | width: 80px;
247 | }
248 | }
249 |
250 | &[data-balloon-length='medium'] {
251 | &:before {
252 | white-space: normal;
253 | width: 150px;
254 | }
255 | }
256 |
257 | &[data-balloon-length='large'] {
258 | &:after {
259 | white-space: normal;
260 | width: 260px;
261 | }
262 | }
263 |
264 | &[data-balloon-length='xlarge'] {
265 | &:after {
266 | white-space: normal;
267 | width: 380px;
268 |
269 | @media screen and (max-width: 768px) {
270 | white-space: normal;
271 | width: 90vw;
272 | }
273 | }
274 | }
275 |
276 | &[data-balloon-length='fit'] {
277 | &:after {
278 | white-space: normal;
279 | width: 100%;
280 | }
281 | }
282 | }
283 | }
284 |
285 | // Additional styles to make the buttons look like text
286 |
287 | button {
288 | border: none;
289 | background: none;
290 | font-size: inherit;
291 | font-family: inherit;
292 | color: inherit;
293 | margin: 0;
294 | padding: 0;
295 | border-bottom: 1px dotted $dark-grey;
296 | cursor: help;
297 | }
298 |
299 | div#smallscreens {
300 | display:none;
301 | }
302 |
303 |
304 | @media screen and (max-width: ($breakpoint - 1)) {
305 | div#annotatededition {
306 | display: none;
307 | }
308 |
309 | div#smallscreens {
310 | display:inline;
311 | }
312 | }
313 |
--------------------------------------------------------------------------------
/optional/jekyll-scholar starter kit/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 | gem "jekyll", ">= 3.6.3"
3 | gem 'jekyll-scholar'
4 |
--------------------------------------------------------------------------------
/optional/jekyll-scholar starter kit/Rakefile:
--------------------------------------------------------------------------------
1 | # Rakefile provided by http://blog.sorryapp.com/edging-with-jekyll/2014/01/31/using-jekyll-plugins-on-github-pages.html
2 |
3 | # To run: rake ed:publish
4 |
5 | # Require jekyll to compile the site.
6 |
7 | require "jekyll"
8 |
9 | # Call method
10 | require 'tmpdir'
11 |
12 | # Github pages publishing.
13 | namespace :ed do
14 | #
15 | # Because we are using 3rd party plugins for jekyll to manage the asset pipeline
16 | # and suchlike we are unable to just branch the code, we have to process the site
17 | # localy before pushing it to the branch to publish.
18 | #
19 | # We built this little rake task to help make that a little bit eaiser.
20 | #
21 |
22 | # To publish your site:
23 | # bundle exec rake ed:publish
24 |
25 |
26 | desc "Publish ed to gh-pages"
27 | task :publish do
28 | # Compile the Jekyll site using the config.
29 | Jekyll::Site.new(Jekyll.configuration({
30 | "source" => ".",
31 | "destination" => "_site",
32 | "config" => "_config.yml"
33 | })).process
34 |
35 | # Get the origin to which we are going to push the site.
36 | origin = `git config --get remote.origin.url`
37 |
38 | # Make a temporary directory for the build before production release.
39 | # This will be torn down once the task is complete.
40 | Dir.mktmpdir do |tmp|
41 | # Copy accross our compiled _site directory.
42 | cp_r "_site/.", tmp
43 |
44 | # Switch in to the tmp dir.
45 | Dir.chdir tmp
46 |
47 | # Prepare all the content in the repo for deployment.
48 | system "git init" # Init the repo.
49 | system "git add . && git commit -m 'Site updated at #{Time.now.utc}'" # Add and commit all the files.
50 |
51 | # Add the origin remote for the parent repo to the tmp folder.
52 | system "git remote add origin #{origin}"
53 |
54 | # Push the files to the gh-pages branch, forcing an overwrite.
55 | system "git push origin master:refs/heads/gh-pages --force"
56 | end
57 |
58 | # Done.
59 | end
60 | end
61 |
--------------------------------------------------------------------------------
/optional/jekyll-scholar starter kit/_bibliography/references.bib:
--------------------------------------------------------------------------------
1 |
2 | @book{goyal_romance_2010,
3 | title = {Romance, Diaspora, and Black Atlantic Literature},
4 | isbn = {978-1-139-48671-2},
5 | abstract = {Romance, Diaspora, and Black Atlantic Literature offers a rich, interdisciplinary treatment of modern black literature and cultural history, showing how debates over Africa in the works of major black writers generated productive models for imagining political agency. Yogita Goyal analyzes the tensions between romance and realism in the literature of the African diaspora, examining a remarkably diverse group of twentieth-century authors, including W. E. B. Du Bois, Chinua Achebe, Richard Wright, Ama Ata Aidoo and Caryl Phillips. Shifting the center of black diaspora studies by considering Africa as constitutive of black modernity rather than its forgotten past, Goyal argues that it is through the figure of romance that the possibility of diaspora is imagined across time and space. Drawing on literature, political history and postcolonial theory, this significant addition to the cross-cultural study of literatures will be of interest to scholars of African American studies, African studies and American literary studies.},
6 | pagetotal = {289},
7 | publisher = {Cambridge University Press},
8 | author = {Goyal, Yogita},
9 | date = {2010-04-22},
10 | langid = {english}
11 | }
12 |
13 | @book{lau_libraries_2012,
14 | location = {Berlin, Boston},
15 | title = {Libraries Driving Access to Knowledge},
16 | isbn = {978-3-11-026312-1},
17 | url = {http://www.degruyter.com/viewbooktoc/product/129022},
18 | publisher = {De Gruyter Saur},
19 | author = {Lau, Jesús and Tammaro, Anna Maria and Bothma, Theo J. D.},
20 | urldate = {2016-01-14},
21 | date = {2012}
22 | }
23 |
24 | @book{cesaire_discourse_2001,
25 | location = {New York},
26 | title = {Discourse on Colonialism},
27 | isbn = {978-1-58367-025-5},
28 | abstract = {"Césaire's essay stands as an important document in the development of third world consciousness--a process in which [he] played a prominent role." --Library Journal This classic work, first published in France in 1955, profoundly influenced the generation of scholars and activists at the forefront of liberation struggles in Africa, Latin America, and the Caribbean. Nearly twenty years later, when published for the first time in English, Discourse on Colonialism inspired a new generation engaged in the Civil Rights, Black Power, and anti-war movements and has sold more than 75,000 copies to date. Aimé Césaire eloquently describes the brutal impact of capitalism and colonialism on both the colonizer and colonized, exposing the contradictions and hypocrisy implicit in western notions of "progress" and "civilization" upon encountering the "savage," "uncultured," or "primitive." Here, Césaire reaffirms African values, identity, and culture, and their relevance, reminding us that "the relationship between consciousness and reality are extremely complex. . . . It is equally necessary to decolonize our minds, our inner life, at the same time that we decolonize society." An interview with Césaire by the poet René Depestre is also included.},
29 | pagetotal = {102},
30 | publisher = {Monthly Review Press},
31 | author = {Césaire, Aimé},
32 | date = {2001}
33 | }
34 |
35 | @book{mcgann_radiant_2001,
36 | location = {New York},
37 | edition = {1st edition},
38 | title = {Radiant Textuality: Literary Studies after the World Wide Web},
39 | isbn = {978-1-4039-6436-6},
40 | shorttitle = {Radiant Textuality},
41 | abstract = {This book describes and explains the fundamental changes that are now taking place in the most traditional areas of humanities theory and method, scholarship and education. The changes flow from the re-examination of the very foundations of the humanities - its theories of textuality and communication - that are being forced by developments in information technology. A threshold was crossed during the last decade of the twentieth century with the emergence of the World Wide Web, which has (1) globalized access to computerized resources and information, and (2) made interface and computer graphics paramount concerns for work in digital culture. While these changes are well known, their consequences are not well understood, despite so much discussion by digital enthusiasts and digital doomsters alike. In reconsidering these matters, Radiant Textuality introduces some remarkable new proposals for integrating computerized tools into the central interpretative and critical activities of traditional humanities disciplines, and of literary studies in particular.},
42 | pagetotal = {272},
43 | publisher = {Palgrave Macmillan},
44 | author = {{McGann}, J.},
45 | date = {2001-12-06}
46 | }
47 |
48 | @book{nakamura_race_2012,
49 | location = {New York},
50 | title = {Race after the Internet},
51 | isbn = {978-0-415-80235-2 0-415-80235-0 978-0-415-80236-9 0-415-80236-9},
52 | abstract = {"Digital media technologies like the Internet create and host the social networks, virtual worlds, online communities, and media texts where it was once thought that we would all be the same, anonymous users with infinite powers. Instead, the essays in Race After the Internet show us that the Internet and other computer-based technologies are complex topographies of power and privilege, made up of walled gardens, new (plat)forms of economic and technological exclusion, and both new and old styles of race as code, interaction, and image. Investigating how racialization and racism are changing in web 2.0 digital media culture, Race After the Internet contains interdisciplinary essays on the shifting terrain of racial identity and its connections to digital media, including Facebook and {MySpace}, {YouTube} and viral video, {WiFi} infrastructure, the One Laptop Per Child ({OLPC}) program, genetic ancestry testing, {DNA} databases in health and law enforcement, and popular online games like World of Warcraft. Ultimately, the collection broadens the definition of the "digital divide" in order to convey a more nuanced understanding of usage, meaning, participation, and production of digital media technology in light of racial inequality. "-- "Race After the Internet explores racial identity in the digital age, grappling with the complex role that the Internet and other digital technologies play in shaping our ideas about race. The readings are separated into sections that examine how digital media has complicated racial identity as well as the connection between limited digital access and social inequality. Other essays address new racial identities created by users of popular media of virtual worlds like World of Warcraft, and social networks like Facebook and {MySpace}. And a final group of essays enters the world of biotechnology to find ways that biometrics and new surveillance technologies are creating different forms of racial profiling. Race After the Internet investigates how racialization and racism are changing in web 2.0 digital media culture, thus making it a valuable text for anyone interested in digital media and race and ethnic studies.The essays incorporate science and technology studies, social scientific, rhetorical, textual, theoretical, and ethnographic approaches with some carefully selected demographic studies of Internet and technology use. This collection aims to broaden the definition of the "digital divide" in order to convey a more nuanced understanding of usage, meaning, participation, and production of digital media technology in light of racial inequality"--},
53 | publisher = {Routledge},
54 | author = {Nakamura, Lisa and Chow-White, Peter},
55 | date = {2012},
56 | langid = {english}
57 | }
--------------------------------------------------------------------------------
/optional/jekyll-scholar starter kit/_config.yml:
--------------------------------------------------------------------------------
1 | # Built with Jekyll 3.2.0
2 | #
3 | # Permalinks
4 | #
5 | # Use of `relative_permalinks` ensures post links from the index work properly.
6 | permalink: none
7 |
8 | # Set encoding to UTF-8
9 | encoding: utf-8
10 |
11 | # Markdown specs
12 | markdown: kramdown
13 |
14 | collections:
15 | texts:
16 | output: true
17 |
18 | kramdown:
19 | auto_ids: true
20 | footnote_nr: 1
21 | entity_output: as_char
22 | footnote_backlink: "↩︎"
23 | toc_levels: 1..6
24 | smart_quotes: lsquo,rsquo,ldquo,rdquo
25 | enable_coderay: false
26 |
27 | # Setup
28 | title: Ed.
29 | tagline: 'A Jekyll theme for minimal editions'
30 | description: 'Ed is a Jekyll theme designed for textual editors based on minimal computing principles, and focused on legibility and flexibility.'
31 | url: https://github.com/elotroalex/ed
32 | baseurl: '/ed'
33 |
34 | # About/contact
35 | author:
36 | name: Alex Gil
37 | url: https://twitter.com/elotroalex
38 | email: colibri.alex@gmail.com
39 |
40 | # Custom vars
41 | version: 0.0.5
42 |
43 | # Exclude optional folder
44 | exclude: [optional]
45 |
46 | # Gems
47 | gems: ['jekyll/scholar']
48 |
49 | # Scholar
50 | scholar:
51 | style: modern-language-association
52 | locale: en
53 |
54 | sort_by: none
55 | order: ascending
56 |
57 | group_by: none
58 | group_order: ascending
59 |
60 | source: ./_bibliography
61 | bibliography: references.bib
62 | bibliography_template: "{{reference}}"
63 | relative: "/ed/bibliography.html"
64 |
65 | replace_strings: true
66 | join_strings: true
67 |
68 | use_raw_bibtex_entry: false
69 |
70 | details_dir: bibliography
71 | details_layout: bibtex.html
72 | details_link: Details
73 |
74 | query: "@*"
75 |
76 |
--------------------------------------------------------------------------------
/optional/jekyll-scholar starter kit/bibliography.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: page
3 | title: Bibliography
4 | ---
5 |
6 | The sample bibliography should display below. If it doesn't, you need to install [jekyll-scholar](https://github.com/inukshuk/jekyll-scholar). We've provided a Gemfile for you that you can use with [Bundler](http://bundler.io/). Remember to do a bundle install. On that note, we also highly recommend that you use [rvm](https://rvm.io/) to manage your gems. Here's [a great tutorial](https://www.chapterthree.com/blog/ruby-rvm-gemsets-and-bundlergemfiles) on how to do both from Rob Decker.
7 |
8 | To use jekyll-scholar, we recommend reading up on the excellent documentation on the link above.
9 |
10 | ---
11 |
12 | ## Sample bibliography
13 |
14 |