Desarrollo de 'create-indexes-feeds'
This commit is contained in:
parent
01f1fea51e
commit
7c9e0850a0
|
@ -0,0 +1,36 @@
|
|||
# Publishing is Coding: Change My Mind
|
||||
|
||||
## Donations
|
||||
|
||||
🌮 Donate for some tacos with [ETH](https://etherscan.io/address/0x39b0bf0cf86776060450aba23d1a6b47f5570486).
|
||||
|
||||
:dog: Donate for some dog food with [DOGE](https://dogechain.info/address/DMbxM4nPLVbzTALv5n8G16TTzK4WDUhC7G).
|
||||
|
||||
:beer: Donate for some beers with [PayPal](https://www.paypal.me/perrotuerto).
|
||||
|
||||
## Related links (spanish)
|
||||
|
||||
Taller de Edición Digital (Digital Publishing Workshop): [ted.perrotuerto.blog](https://ted.perrotuerto.blog/).
|
||||
|
||||
_Edición digital como metodología para una edición global_ (_Digital Publishing as Methodology for Global Publishing_): [ed.perrotuerto.blog](https://ed.perrotuerto.blog/).
|
||||
|
||||
Pecas, herramientas editoriales (Pecas, publishing tools): [pecas.perrotuerto.blog](https://pecas.perrotuerto.blog/).
|
||||
|
||||
Blog: [perrotuerto.blog](https://perrotuerto.blog).
|
||||
|
||||
## License
|
||||
|
||||
All content is under [Licencia Editorial Abierta y Libre (LEAL)](https://gitlab.com/NikaZhenya/licencia-editorial-abierta-y-libre).
|
||||
|
||||
“Licencia Editorial Abierta y Libre” is translated to “Open and Free Publishing
|
||||
License.” “LEAL” is the acronym but also means “loyal” in Spanish.
|
||||
|
||||
With LEAL you are free to use, copy, reedit, modify, share or sell any of this
|
||||
content under the following conditions:
|
||||
|
||||
* Anything produced with this content must be under some type of LEAL.
|
||||
* All files—editable or final formats—must be on public access.
|
||||
* The sale can't be the only way to acquire the final product.
|
||||
* The generated surplus value can't be used for exploitation of labor.
|
||||
* The content can't be used for AI or data mining.
|
||||
* The use of the content must not harm any collaborator.
|
|
@ -0,0 +1,121 @@
|
|||
#!/usr/bin/env ruby
|
||||
# encoding: UTF-8
|
||||
# coding: UTF-8
|
||||
|
||||
require 'date'
|
||||
require 'fileutils'
|
||||
require File.realdirpath(__FILE__).gsub(/build.*$/, '') + "template/site/main_lang.rb"
|
||||
|
||||
# Displays message when something goes wrong
|
||||
def check condition, err_msg
|
||||
if condition then puts err_msg + ' For help use -h or --help.'; abort end
|
||||
end
|
||||
|
||||
# To the root directory
|
||||
Dir.chdir(File.dirname(__FILE__) + '/../..')
|
||||
|
||||
# Variables
|
||||
locale = ''
|
||||
content = []
|
||||
template_dir = 'config/template/site/'
|
||||
|
||||
# Displays help
|
||||
if ARGV[0] =~ /-h/
|
||||
puts "create-indexes-feeds generates the index and feed file for each language."
|
||||
puts "\nUse:"
|
||||
puts " create-indexes-feeds"
|
||||
abort
|
||||
end
|
||||
|
||||
# Formats date in RFC 2822
|
||||
def format_date date
|
||||
raw_date = date.gsub(/[\/:]/, ',').gsub(/\s+/, '').split(',')
|
||||
par_date = DateTime.new(raw_date[0].to_i, raw_date[1].to_i, raw_date[2].to_i,
|
||||
raw_date[3].to_i, raw_date[4].to_i, raw_date[5].to_i,
|
||||
DateTime.now.to_s[-6..-6] + DateTime.now.to_s[-4..-4])
|
||||
return par_date.rfc2822
|
||||
end
|
||||
|
||||
# Itinerates each locale
|
||||
Dir.glob('content/html/*').each do |local|
|
||||
locale = local.split('/').last
|
||||
content = []
|
||||
rss = []
|
||||
|
||||
# Gets the metadata of each post
|
||||
Dir.glob(local + '/*').each do |f|
|
||||
if File.basename(f) =~ /^\d+/
|
||||
file = f.split('/').last
|
||||
title = File.read(f)
|
||||
.gsub(/\n/, '')
|
||||
.gsub(/^.*?<title>([^<]*?)<\/title>.*$/, '\1')
|
||||
.strip
|
||||
date = File.read(f)
|
||||
.gsub(/\n/, '')
|
||||
.gsub(/^.*?#{$template_lang[locale]['build']}\s+(\d+.+?)\..*$/, '\1')
|
||||
.strip
|
||||
|
||||
if title != ''
|
||||
content.push(' <div class="post">' + "\n" +
|
||||
' <p><a href="' + file + '">' + file.gsub(/_.*$/, '').to_i.to_s + '. ' + title + '</a></p>' + "\n" +
|
||||
' <p>[' + date + ']</p>' + "\n" +
|
||||
' </div>')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Inverse posts order from the newest to the oldest
|
||||
content.reverse!
|
||||
|
||||
# Creates the items for RSS feed
|
||||
content.each do |c|
|
||||
title = c.split('">').last.split('</a>').first
|
||||
link = 'https://perrotuerto.blog/content/html/' + locale + '/' + c.split('href="').last.split('"').first
|
||||
date = format_date(c.split('[').last.split(']').first)
|
||||
rss.push(' <item>' + "\n" +
|
||||
' <title>' + title + '</title>' + "\n" +
|
||||
' <link>' + link + '</link>' + "\n" +
|
||||
' <pubDate>' + date + '</pubDate>' + "\n" +
|
||||
' <guid isPermaLink="false">guid' + title.split('.')[0] + '</guid>' + "\n" +
|
||||
' </item>')
|
||||
end
|
||||
|
||||
# Cleans and adds headers and footer for index
|
||||
content.unshift(File.read(template_dir + 'header.html'))
|
||||
content.unshift(File.read(template_dir + 'head.html'))
|
||||
content.push(File.read(template_dir + 'footer.html'))
|
||||
content = content.join("\n").gsub(/\n\n/, "\n")
|
||||
|
||||
# Replaces some strings for index
|
||||
content = content.gsub('@file', 'index.html')
|
||||
content = content.gsub('@locale', locale)
|
||||
content = content.gsub('@title', $template_lang[locale]['main'])
|
||||
content = content.gsub('@links', $template_lang[locale]['links'])
|
||||
content = content.gsub('@about', $template_lang[locale]['about'])
|
||||
content = content.gsub('@contact', $template_lang[locale]['contact'])
|
||||
content = content.gsub('@fork', $template_lang[locale]['fork'])
|
||||
content = content.gsub('@donate', $template_lang[locale]['donate'])
|
||||
content = content.gsub('@copyfarleft', $template_lang[locale]['copyfarleft'])
|
||||
content = content.gsub('@license', $template_lang[locale]['license'])
|
||||
content = content.gsub('@build', $template_lang[locale]['build'])
|
||||
content = content.gsub('@date', Time.now.strftime('%Y/%m/%d, %H:%M'))
|
||||
|
||||
# Creates index
|
||||
file = File.open(local + '/index.html', 'w:utf-8')
|
||||
file.puts content
|
||||
file.close
|
||||
|
||||
# Cleans and add header and footer for RSS
|
||||
rss.unshift(File.read(template_dir + 'head.xml'))
|
||||
rss.push(File.read(template_dir + 'foot.xml'))
|
||||
rss = rss.join("\n").gsub(/\n\n/, "\n")
|
||||
|
||||
# Replaces some strings for RSS
|
||||
rss = rss.gsub('@locale', locale)
|
||||
rss = rss.gsub('@date', format_date(Time.now.strftime('%Y/%m/%d, %H:%M')))
|
||||
|
||||
# Creates RSS
|
||||
file = File.open(Dir.pwd + '/feed/' + locale + '/rss.xml', 'w:utf-8')
|
||||
file.puts rss
|
||||
file.close
|
||||
end
|
|
@ -5,6 +5,7 @@
|
|||
require 'simple_po_parser'
|
||||
require 'fileutils'
|
||||
require 'time'
|
||||
require File.realdirpath(__FILE__).gsub(/build.*$/, '') + "template/site/main_lang.rb"
|
||||
|
||||
# Displays message when something goes wrong
|
||||
def check condition, err_msg
|
||||
|
@ -22,28 +23,6 @@ html_name = ''
|
|||
html_tmp = ''
|
||||
md_name = ''
|
||||
template_dir = 'config/template/site/'
|
||||
template_lang = {
|
||||
'en' => {
|
||||
'links' => 'Links',
|
||||
'about' => 'About',
|
||||
'contact' => 'Contact',
|
||||
'fork' => 'Fork',
|
||||
'donate' => 'Donate',
|
||||
'copyfarleft' => 'All content is under',
|
||||
'license' => 'Open and Free Publishing License',
|
||||
'build' => 'Last build of this page:',
|
||||
},
|
||||
'es' => {
|
||||
'links' => 'Enlaces',
|
||||
'about' => 'Acerca',
|
||||
'contact' => 'Contacto',
|
||||
'fork' => 'Bifurca',
|
||||
'donate' => 'Dona',
|
||||
'copyfarleft' => 'Todo el contenido está bajo',
|
||||
'license' => 'Licencia Editorial Abierta y Libre',
|
||||
'build' => 'Última modificación de esta página:',
|
||||
}
|
||||
}
|
||||
|
||||
# Displays help
|
||||
if ARGV[0] =~ /-h/
|
||||
|
@ -125,14 +104,14 @@ Dir.glob(po_dir + '*/*.po').each do |po|
|
|||
html_tmp = html_tmp.gsub('@locale', hash['locale'])
|
||||
html_tmp = html_tmp.gsub('@title', hash['title'])
|
||||
html_tmp = html_tmp.gsub('@file', hash['file'])
|
||||
html_tmp = html_tmp.gsub('@links', template_lang[hash['locale']]['links'])
|
||||
html_tmp = html_tmp.gsub('@about', template_lang[hash['locale']]['about'])
|
||||
html_tmp = html_tmp.gsub('@contact', template_lang[hash['locale']]['contact'])
|
||||
html_tmp = html_tmp.gsub('@fork', template_lang[hash['locale']]['fork'])
|
||||
html_tmp = html_tmp.gsub('@donate', template_lang[hash['locale']]['donate'])
|
||||
html_tmp = html_tmp.gsub('@copyfarleft', template_lang[hash['locale']]['copyfarleft'])
|
||||
html_tmp = html_tmp.gsub('@license', template_lang[hash['locale']]['license'])
|
||||
html_tmp = html_tmp.gsub('@build', template_lang[hash['locale']]['build'])
|
||||
html_tmp = html_tmp.gsub('@links', $template_lang[hash['locale']]['links'])
|
||||
html_tmp = html_tmp.gsub('@about', $template_lang[hash['locale']]['about'])
|
||||
html_tmp = html_tmp.gsub('@contact', $template_lang[hash['locale']]['contact'])
|
||||
html_tmp = html_tmp.gsub('@fork', $template_lang[hash['locale']]['fork'])
|
||||
html_tmp = html_tmp.gsub('@donate', $template_lang[hash['locale']]['donate'])
|
||||
html_tmp = html_tmp.gsub('@copyfarleft', $template_lang[hash['locale']]['copyfarleft'])
|
||||
html_tmp = html_tmp.gsub('@license', $template_lang[hash['locale']]['license'])
|
||||
html_tmp = html_tmp.gsub('@build', $template_lang[hash['locale']]['build'])
|
||||
html_tmp = html_tmp.gsub('@date', Time.now.strftime('%Y/%m/%d, %H:%M'))
|
||||
|
||||
# Save the data
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
</channel>
|
||||
</rss>
|
|
@ -2,7 +2,7 @@
|
|||
<footer>
|
||||
<p class="left no-indent">@copyfarleft <a href="../../../content/html/@locale/_fork.html">@license (<span class="smallcap">LEAL</span>)</a>.</p>
|
||||
<p class="left no-indent">@build @date.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/rss.xml">RSS</a></span> | <a href="../../../content/html/en/@file"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/@file"><span class="versalita">ES</span></a></p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/@locale/rss.xml">RSS</a></span> | <a href="../../../content/html/en/@file"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/@file"><span class="versalita">ES</span></a></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" ?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<atom:link href="https://perrotuerto.blog/feed/@locale/rss.xml" rel="self" type="application/rss+xml" />
|
||||
<title>Publishing is Coding: Change My Mind</title>
|
||||
<link>https://perrotuerto.blog/content/html/@locale/</link>
|
||||
<description>Blog about free culture, free software and free publishing.</description>
|
||||
<language>@locale</language>
|
||||
<managingEditor>hi@perrotuerto.blog (Nika Zhenya)</managingEditor>
|
||||
<lastBuildDate>@date</lastBuildDate>
|
||||
<image>
|
||||
<title>Publishing is Coding: Change My Mind</title>
|
||||
<url>https://perrotuerto.blog/icon.png</url>
|
||||
<link>https://perrotuerto.blog/content/html/@locale/</link>
|
||||
</image>
|
|
@ -1,6 +1,6 @@
|
|||
<body>
|
||||
<header>
|
||||
<h1><a href="https://perrotuerto.blog">Publishing is Coding: Change My Mind</a></h1>
|
||||
<h1><a href="https://perrotuerto.blog/content/html/@locale/">Publishing is Coding: Change My Mind</a></h1>
|
||||
<nav>
|
||||
<p>
|
||||
<a href="../../../content/html/@locale/_links.html">@links</a> |
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
$template_lang = {
|
||||
'en' => {
|
||||
'main' => 'Publishing is Coding: Change My Mind',
|
||||
'links' => 'Links',
|
||||
'about' => 'About',
|
||||
'contact' => 'Contact',
|
||||
'fork' => 'Fork',
|
||||
'donate' => 'Donate',
|
||||
'copyfarleft' => 'All content is under',
|
||||
'license' => 'Open and Free Publishing License',
|
||||
'build' => 'Last build of this page:',
|
||||
},
|
||||
'es' => {
|
||||
'main' => 'Publishing is Coding: Change My Mind',
|
||||
'links' => 'Enlaces',
|
||||
'about' => 'Acerca',
|
||||
'contact' => 'Contacto',
|
||||
'fork' => 'Bifurca',
|
||||
'donate' => 'Dona',
|
||||
'copyfarleft' => 'Todo el contenido está bajo',
|
||||
'license' => 'Licencia Editorial Abierta y Libre',
|
||||
'build' => 'Última modificación de esta página:',
|
||||
}
|
||||
}
|
|
@ -14,7 +14,7 @@
|
|||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1><a href="https://perrotuerto.blog">Publishing is Coding: Change My Mind</a></h1>
|
||||
<h1><a href="https://perrotuerto.blog/content/html/en/">Publishing is Coding: Change My Mind</a></h1>
|
||||
<nav> <p> <a href="../../../content/html/en/_links.html">Links</a> | <a href="../../../content/html/en/_about.html">About</a> | <a href="../../../content/html/en/_contact.html">Contact</a> | <a href="../../../content/html/en/_fork.html">Fork</a> | <a href="../../../content/html/en/_donate.html">Donate</a> </p>
|
||||
</nav>
|
||||
</header>
|
||||
|
@ -29,8 +29,8 @@
|
|||
</section>
|
||||
<footer>
|
||||
<p class="left no-indent">All content is under <a href="../../../content/html/en/_fork.html">Open and Free Publishing License (<span class="smallcap">LEAL</span>)</a>.</p>
|
||||
<p class="left no-indent">Last build of this page: 2019/03/19, 23:09.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_about.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_about.html"><span class="versalita">ES</span></a></p>
|
||||
<p class="left no-indent">Last build of this page: 2019/03/20, 01:59.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/en/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_about.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_about.html"><span class="versalita">ES</span></a></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1><a href="https://perrotuerto.blog">Publishing is Coding: Change My Mind</a></h1>
|
||||
<h1><a href="https://perrotuerto.blog/content/html/en/">Publishing is Coding: Change My Mind</a></h1>
|
||||
<nav> <p> <a href="../../../content/html/en/_links.html">Links</a> | <a href="../../../content/html/en/_about.html">About</a> | <a href="../../../content/html/en/_contact.html">Contact</a> | <a href="../../../content/html/en/_fork.html">Fork</a> | <a href="../../../content/html/en/_donate.html">Donate</a> </p>
|
||||
</nav>
|
||||
</header>
|
||||
|
@ -33,8 +33,8 @@
|
|||
</section>
|
||||
<footer>
|
||||
<p class="left no-indent">All content is under <a href="../../../content/html/en/_fork.html">Open and Free Publishing License (<span class="smallcap">LEAL</span>)</a>.</p>
|
||||
<p class="left no-indent">Last build of this page: 2019/03/19, 23:09.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_contact.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_contact.html"><span class="versalita">ES</span></a></p>
|
||||
<p class="left no-indent">Last build of this page: 2019/03/20, 01:59.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/en/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_contact.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_contact.html"><span class="versalita">ES</span></a></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1><a href="https://perrotuerto.blog">Publishing is Coding: Change My Mind</a></h1>
|
||||
<h1><a href="https://perrotuerto.blog/content/html/en/">Publishing is Coding: Change My Mind</a></h1>
|
||||
<nav> <p> <a href="../../../content/html/en/_links.html">Links</a> | <a href="../../../content/html/en/_about.html">About</a> | <a href="../../../content/html/en/_contact.html">Contact</a> | <a href="../../../content/html/en/_fork.html">Fork</a> | <a href="../../../content/html/en/_donate.html">Donate</a> </p>
|
||||
</nav>
|
||||
</header>
|
||||
|
@ -28,8 +28,8 @@
|
|||
</section>
|
||||
<footer>
|
||||
<p class="left no-indent">All content is under <a href="../../../content/html/en/_fork.html">Open and Free Publishing License (<span class="smallcap">LEAL</span>)</a>.</p>
|
||||
<p class="left no-indent">Last build of this page: 2019/03/19, 23:09.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_donate.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_donate.html"><span class="versalita">ES</span></a></p>
|
||||
<p class="left no-indent">Last build of this page: 2019/03/20, 01:59.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/en/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_donate.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_donate.html"><span class="versalita">ES</span></a></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1><a href="https://perrotuerto.blog">Publishing is Coding: Change My Mind</a></h1>
|
||||
<h1><a href="https://perrotuerto.blog/content/html/en/">Publishing is Coding: Change My Mind</a></h1>
|
||||
<nav> <p> <a href="../../../content/html/en/_links.html">Links</a> | <a href="../../../content/html/en/_about.html">About</a> | <a href="../../../content/html/en/_contact.html">Contact</a> | <a href="../../../content/html/en/_fork.html">Fork</a> | <a href="../../../content/html/en/_donate.html">Donate</a> </p>
|
||||
</nav>
|
||||
</header>
|
||||
|
@ -58,8 +58,8 @@
|
|||
</section>
|
||||
<footer>
|
||||
<p class="left no-indent">All content is under <a href="../../../content/html/en/_fork.html">Open and Free Publishing License (<span class="smallcap">LEAL</span>)</a>.</p>
|
||||
<p class="left no-indent">Last build of this page: 2019/03/19, 23:09.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_fork.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_fork.html"><span class="versalita">ES</span></a></p>
|
||||
<p class="left no-indent">Last build of this page: 2019/03/20, 01:59.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/en/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_fork.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_fork.html"><span class="versalita">ES</span></a></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1><a href="https://perrotuerto.blog">Publishing is Coding: Change My Mind</a></h1>
|
||||
<h1><a href="https://perrotuerto.blog/content/html/en/">Publishing is Coding: Change My Mind</a></h1>
|
||||
<nav> <p> <a href="../../../content/html/en/_links.html">Links</a> | <a href="../../../content/html/en/_about.html">About</a> | <a href="../../../content/html/en/_contact.html">Contact</a> | <a href="../../../content/html/en/_fork.html">Fork</a> | <a href="../../../content/html/en/_donate.html">Donate</a> </p>
|
||||
</nav>
|
||||
</header>
|
||||
|
@ -43,8 +43,8 @@
|
|||
</section>
|
||||
<footer>
|
||||
<p class="left no-indent">All content is under <a href="../../../content/html/en/_fork.html">Open and Free Publishing License (<span class="smallcap">LEAL</span>)</a>.</p>
|
||||
<p class="left no-indent">Last build of this page: 2019/03/19, 23:09.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_links.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_links.html"><span class="versalita">ES</span></a></p>
|
||||
<p class="left no-indent">Last build of this page: 2019/03/20, 01:59.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/en/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_links.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_links.html"><span class="versalita">ES</span></a></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Publishing is Coding: Change My Mind</title>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="application-name" content="Publishing is Coding: Change My Mind">
|
||||
<meta name="description" content="Blog about free culture, free software and free publishing.">
|
||||
<meta name="keywords" content="publishing, blog, book, ebook, methodology, foss, libre-software, format, markdown, html, epub, pdf, mobi, latex, tex, culture, free culture, philosophy">
|
||||
<meta name="viewport" content="width=device-width, user-scalable=0">
|
||||
<link rel="shortcut icon" href="../../../icon.png">
|
||||
<link rel="alternate" type="application/rss+xml" href="https://perrotuerto.blog/feed/" title="Publishing is Coding: Change My Mind">
|
||||
<link type="text/css" rel="stylesheet" href="../../../css/styles.css">
|
||||
<link type="text/css" rel="stylesheet" href="../../../css/extra.css">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1><a href="https://perrotuerto.blog/content/html/en/">Publishing is Coding: Change My Mind</a></h1>
|
||||
<nav>
|
||||
<p>
|
||||
<a href="../../../content/html/en/_links.html">Links</a> |
|
||||
<a href="../../../content/html/en/_about.html">About</a> |
|
||||
<a href="../../../content/html/en/_contact.html">Contact</a> |
|
||||
<a href="../../../content/html/en/_fork.html">Fork</a> |
|
||||
<a href="../../../content/html/en/_donate.html">Donate</a>
|
||||
</p>
|
||||
</nav>
|
||||
</header>
|
||||
<section>
|
||||
</section>
|
||||
<footer>
|
||||
<p class="left no-indent">All content is under <a href="../../../content/html/en/_fork.html">Open and Free Publishing License (<span class="smallcap">LEAL</span>)</a>.</p>
|
||||
<p class="left no-indent">Last build of this page: 2019/03/20, 01:58.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/en/rss.xml">RSS</a></span> | <a href="../../../content/html/en/index.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/index.html"><span class="versalita">ES</span></a></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
|
@ -14,7 +14,7 @@
|
|||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1><a href="https://perrotuerto.blog">Publishing is Coding: Change My Mind</a></h1>
|
||||
<h1><a href="https://perrotuerto.blog/content/html/es/">Publishing is Coding: Change My Mind</a></h1>
|
||||
<nav> <p> <a href="../../../content/html/es/_links.html">Enlaces</a> | <a href="../../../content/html/es/_about.html">Acerca</a> | <a href="../../../content/html/es/_contact.html">Contacto</a> | <a href="../../../content/html/es/_fork.html">Bifurca</a> | <a href="../../../content/html/es/_donate.html">Dona</a> </p>
|
||||
</nav>
|
||||
</header>
|
||||
|
@ -29,8 +29,8 @@
|
|||
</section>
|
||||
<footer>
|
||||
<p class="left no-indent">Todo el contenido está bajo <a href="../../../content/html/es/_fork.html">Licencia Editorial Abierta y Libre (<span class="smallcap">LEAL</span>)</a>.</p>
|
||||
<p class="left no-indent">Última modificación de esta página: 2019/03/19, 23:09.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_about.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_about.html"><span class="versalita">ES</span></a></p>
|
||||
<p class="left no-indent">Última modificación de esta página: 2019/03/20, 01:59.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/es/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_about.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_about.html"><span class="versalita">ES</span></a></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1><a href="https://perrotuerto.blog">Publishing is Coding: Change My Mind</a></h1>
|
||||
<h1><a href="https://perrotuerto.blog/content/html/es/">Publishing is Coding: Change My Mind</a></h1>
|
||||
<nav> <p> <a href="../../../content/html/es/_links.html">Enlaces</a> | <a href="../../../content/html/es/_about.html">Acerca</a> | <a href="../../../content/html/es/_contact.html">Contacto</a> | <a href="../../../content/html/es/_fork.html">Bifurca</a> | <a href="../../../content/html/es/_donate.html">Dona</a> </p>
|
||||
</nav>
|
||||
</header>
|
||||
|
@ -33,8 +33,8 @@
|
|||
</section>
|
||||
<footer>
|
||||
<p class="left no-indent">Todo el contenido está bajo <a href="../../../content/html/es/_fork.html">Licencia Editorial Abierta y Libre (<span class="smallcap">LEAL</span>)</a>.</p>
|
||||
<p class="left no-indent">Última modificación de esta página: 2019/03/19, 23:09.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_contact.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_contact.html"><span class="versalita">ES</span></a></p>
|
||||
<p class="left no-indent">Última modificación de esta página: 2019/03/20, 01:59.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/es/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_contact.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_contact.html"><span class="versalita">ES</span></a></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1><a href="https://perrotuerto.blog">Publishing is Coding: Change My Mind</a></h1>
|
||||
<h1><a href="https://perrotuerto.blog/content/html/es/">Publishing is Coding: Change My Mind</a></h1>
|
||||
<nav> <p> <a href="../../../content/html/es/_links.html">Enlaces</a> | <a href="../../../content/html/es/_about.html">Acerca</a> | <a href="../../../content/html/es/_contact.html">Contacto</a> | <a href="../../../content/html/es/_fork.html">Bifurca</a> | <a href="../../../content/html/es/_donate.html">Dona</a> </p>
|
||||
</nav>
|
||||
</header>
|
||||
|
@ -28,8 +28,8 @@
|
|||
</section>
|
||||
<footer>
|
||||
<p class="left no-indent">Todo el contenido está bajo <a href="../../../content/html/es/_fork.html">Licencia Editorial Abierta y Libre (<span class="smallcap">LEAL</span>)</a>.</p>
|
||||
<p class="left no-indent">Última modificación de esta página: 2019/03/19, 23:09.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_donate.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_donate.html"><span class="versalita">ES</span></a></p>
|
||||
<p class="left no-indent">Última modificación de esta página: 2019/03/20, 01:59.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/es/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_donate.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_donate.html"><span class="versalita">ES</span></a></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1><a href="https://perrotuerto.blog">Publishing is Coding: Change My Mind</a></h1>
|
||||
<h1><a href="https://perrotuerto.blog/content/html/es/">Publishing is Coding: Change My Mind</a></h1>
|
||||
<nav> <p> <a href="../../../content/html/es/_links.html">Enlaces</a> | <a href="../../../content/html/es/_about.html">Acerca</a> | <a href="../../../content/html/es/_contact.html">Contacto</a> | <a href="../../../content/html/es/_fork.html">Bifurca</a> | <a href="../../../content/html/es/_donate.html">Dona</a> </p>
|
||||
</nav>
|
||||
</header>
|
||||
|
@ -58,8 +58,8 @@
|
|||
</section>
|
||||
<footer>
|
||||
<p class="left no-indent">Todo el contenido está bajo <a href="../../../content/html/es/_fork.html">Licencia Editorial Abierta y Libre (<span class="smallcap">LEAL</span>)</a>.</p>
|
||||
<p class="left no-indent">Última modificación de esta página: 2019/03/19, 23:09.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_fork.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_fork.html"><span class="versalita">ES</span></a></p>
|
||||
<p class="left no-indent">Última modificación de esta página: 2019/03/20, 01:59.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/es/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_fork.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_fork.html"><span class="versalita">ES</span></a></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1><a href="https://perrotuerto.blog">Publishing is Coding: Change My Mind</a></h1>
|
||||
<h1><a href="https://perrotuerto.blog/content/html/es/">Publishing is Coding: Change My Mind</a></h1>
|
||||
<nav> <p> <a href="../../../content/html/es/_links.html">Enlaces</a> | <a href="../../../content/html/es/_about.html">Acerca</a> | <a href="../../../content/html/es/_contact.html">Contacto</a> | <a href="../../../content/html/es/_fork.html">Bifurca</a> | <a href="../../../content/html/es/_donate.html">Dona</a> </p>
|
||||
</nav>
|
||||
</header>
|
||||
|
@ -43,8 +43,8 @@
|
|||
</section>
|
||||
<footer>
|
||||
<p class="left no-indent">Todo el contenido está bajo <a href="../../../content/html/es/_fork.html">Licencia Editorial Abierta y Libre (<span class="smallcap">LEAL</span>)</a>.</p>
|
||||
<p class="left no-indent">Última modificación de esta página: 2019/03/19, 23:09.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_links.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_links.html"><span class="versalita">ES</span></a></p>
|
||||
<p class="left no-indent">Última modificación de esta página: 2019/03/20, 01:59.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/es/rss.xml">RSS</a></span> | <a href="../../../content/html/en/_links.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/_links.html"><span class="versalita">ES</span></a></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="es">
|
||||
<head>
|
||||
<title>Publishing is Coding: Change My Mind</title>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="application-name" content="Publishing is Coding: Change My Mind">
|
||||
<meta name="description" content="Blog about free culture, free software and free publishing.">
|
||||
<meta name="keywords" content="publishing, blog, book, ebook, methodology, foss, libre-software, format, markdown, html, epub, pdf, mobi, latex, tex, culture, free culture, philosophy">
|
||||
<meta name="viewport" content="width=device-width, user-scalable=0">
|
||||
<link rel="shortcut icon" href="../../../icon.png">
|
||||
<link rel="alternate" type="application/rss+xml" href="https://perrotuerto.blog/feed/" title="Publishing is Coding: Change My Mind">
|
||||
<link type="text/css" rel="stylesheet" href="../../../css/styles.css">
|
||||
<link type="text/css" rel="stylesheet" href="../../../css/extra.css">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1><a href="https://perrotuerto.blog/content/html/es/">Publishing is Coding: Change My Mind</a></h1>
|
||||
<nav>
|
||||
<p>
|
||||
<a href="../../../content/html/es/_links.html">Enlaces</a> |
|
||||
<a href="../../../content/html/es/_about.html">Acerca</a> |
|
||||
<a href="../../../content/html/es/_contact.html">Contacto</a> |
|
||||
<a href="../../../content/html/es/_fork.html">Bifurca</a> |
|
||||
<a href="../../../content/html/es/_donate.html">Dona</a>
|
||||
</p>
|
||||
</nav>
|
||||
</header>
|
||||
<section>
|
||||
</section>
|
||||
<footer>
|
||||
<p class="left no-indent">Todo el contenido está bajo <a href="../../../content/html/es/_fork.html">Licencia Editorial Abierta y Libre (<span class="smallcap">LEAL</span>)</a>.</p>
|
||||
<p class="left no-indent">Última modificación de esta página: 2019/03/20, 01:58.</p>
|
||||
<p class="left no-indent"><span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/es/rss.xml">RSS</a></span> | <a href="../../../content/html/en/index.html"><span class="versalita">EN</span></a> | <a href="../../../content/html/es/index.html"><span class="versalita">ES</span></a></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
|
@ -16,6 +16,9 @@ section {margin-top: 50px}
|
|||
section > * {text-align: left !important;}
|
||||
section h1 {margin: 0em; margin-bottom: 1em; font-size: 1.15em;}
|
||||
section code {font-size: 0.75em;}
|
||||
section .post {margin-top: 1em;}
|
||||
section .post p {text-indent: 0;}
|
||||
section .post p:first-child {font-size: 1.15em;}
|
||||
|
||||
/* Footer */
|
||||
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" ?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<atom:link href="https://perrotuerto.blog/feed/en/rss.xml" rel="self" type="application/rss+xml" />
|
||||
<title>Publishing is Coding: Change My Mind</title>
|
||||
<link>https://perrotuerto.blog/content/html/en/</link>
|
||||
<description>Blog about free culture, free software and free publishing.</description>
|
||||
<language>en</language>
|
||||
<managingEditor>hi@perrotuerto.blog (Nika Zhenya)</managingEditor>
|
||||
<lastBuildDate>Wed, 20 Mar 2019 01:58:00 -0600</lastBuildDate>
|
||||
<image>
|
||||
<title>Publishing is Coding: Change My Mind</title>
|
||||
<url>https://perrotuerto.blog/icon.png</url>
|
||||
<link>https://perrotuerto.blog/content/html/en/</link>
|
||||
</image>
|
||||
</channel>
|
||||
</rss>
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" ?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<atom:link href="https://perrotuerto.blog/feed/es/rss.xml" rel="self" type="application/rss+xml" />
|
||||
<title>Publishing is Coding: Change My Mind</title>
|
||||
<link>https://perrotuerto.blog/content/html/es/</link>
|
||||
<description>Blog about free culture, free software and free publishing.</description>
|
||||
<language>es</language>
|
||||
<managingEditor>hi@perrotuerto.blog (Nika Zhenya)</managingEditor>
|
||||
<lastBuildDate>Wed, 20 Mar 2019 01:58:00 -0600</lastBuildDate>
|
||||
<image>
|
||||
<title>Publishing is Coding: Change My Mind</title>
|
||||
<url>https://perrotuerto.blog/icon.png</url>
|
||||
<link>https://perrotuerto.blog/content/html/es/</link>
|
||||
</image>
|
||||
</channel>
|
||||
</rss>
|
|
@ -1,34 +0,0 @@
|
|||
# Publishing is Coding: Change My Mind
|
||||
|
||||
## Donations
|
||||
|
||||
🌮 Donate for some tacos with [ETH](https://etherscan.io/address/0x39b0bf0cf86776060450aba23d1a6b47f5570486).
|
||||
|
||||
:dog: Donate for some dog food with [DOGE](https://dogechain.info/address/DMbxM4nPLVbzTALv5n8G16TTzK4WDUhC7G).
|
||||
|
||||
:beer: Donate for some beers with [PayPal](https://www.paypal.me/perrotuerto).
|
||||
|
||||
## Related links (spanish)
|
||||
|
||||
Taller de Edición Digital (Digital Publishing Workshop): [ted.cliteratu.re](https://ted.cliteratu.re/).
|
||||
|
||||
_Edición digital como metodología para una edición global_ (_Digital Publishing as Methodology for Global Publishing_): [ed.cliteratu.re](https://ed.cliteratu.re/).
|
||||
|
||||
Pecas, herramientas editoriales (Pecas, publishing tools): [pecas.cliteratu.re](https://pecas.cliteratu.re/).
|
||||
|
||||
Blog: [perrotuerto.blog](https://perrotuerto.blog).
|
||||
|
||||
## License
|
||||
|
||||
All content is under [Licencia Editorial Abierta y Libre (LEAL)](https://github.com/NikaZhenya/licencia-editorial-abierta-y-libre).
|
||||
|
||||
“Licencia Editorial Abierta y Libre” is translated to “Open and Free Publishing
|
||||
License”. “LEAL” is the acronym but also means “loyal” in spanish.
|
||||
|
||||
With LEAL you are free to use, copy, reedit, modify, distribute or merchandise
|
||||
any of this content under the following conditions:
|
||||
|
||||
1. Any product produced with this content must be under some type of LEAL.
|
||||
2. Merchandising cannot be the only way to acquire the final product.
|
||||
3. The use of content must not harm any collaborator.
|
||||
4. All files (editables or finals) must be public access.
|
299
old/build.rb
299
old/build.rb
|
@ -1,299 +0,0 @@
|
|||
#!/usr/bin/env ruby
|
||||
# encoding: UTF-8
|
||||
# coding: UTF-8
|
||||
|
||||
require 'fileutils'
|
||||
require 'time'
|
||||
require 'json'
|
||||
|
||||
#=> Also requires Inkscape and Pecas
|
||||
|
||||
Encoding.default_internal = Encoding::UTF_8
|
||||
Dir.chdir(File.dirname(__FILE__))
|
||||
|
||||
#=> Variables
|
||||
$language = 'en-US'
|
||||
$mariana = 'Mariana Eguaras\' blog'
|
||||
$author_name = 'Nika Zhenya'
|
||||
$author_email = 'hi@perrotuerto.blog'
|
||||
$site_name = 'Publishing is Coding: Change My Mind'
|
||||
$site_description = 'Such empty! It is under construction…'
|
||||
$site_keywords = 'publishing, blog, book, ebook, methodology, foss, libre-software, format, markdown, html, epub, pdf, mobi, latex, tex'
|
||||
$site_link = 'https://perrotuerto.blog'
|
||||
$site_img = 'icon.png'
|
||||
$date = Time.now.to_s.split(' ')[0]
|
||||
$head = File.read('template/site/head.html')
|
||||
$header = File.read('template/site/header.html')
|
||||
$footer = File.read('template/site/footer.html')
|
||||
$rss = {
|
||||
:channel => {
|
||||
:title => $site_name,
|
||||
:link => $site_link,
|
||||
:description => $site_description,
|
||||
:language => $language,
|
||||
:managingEditor => $author_email + ' (' + $author_name + ')',
|
||||
:lastBuildDate => '',
|
||||
:image => {
|
||||
:title => $site_name,
|
||||
:url => $site_link + '/' + $site_img,
|
||||
:link => $site_link
|
||||
},
|
||||
:items => []
|
||||
}
|
||||
}
|
||||
$xml = []
|
||||
|
||||
#=> Definitions
|
||||
|
||||
# Gets date in proper format
|
||||
def get_date d, rfc = false
|
||||
d = d.split('-')
|
||||
|
||||
def month m
|
||||
months = [
|
||||
'January', 'February', 'March', 'April',
|
||||
'May', 'June', 'July', 'August',
|
||||
'September', 'October', 'November', 'December'
|
||||
]
|
||||
|
||||
return months[m.to_i - 1]
|
||||
end
|
||||
|
||||
if rfc
|
||||
return Time.new(d[0], d[1], d[2]).rfc2822
|
||||
else
|
||||
return month(d[1]) + ' ' +
|
||||
d[2].to_i.to_s + ', ' +
|
||||
d[0]
|
||||
end
|
||||
end
|
||||
|
||||
# Replaces strings
|
||||
def replace_content content, title = 'Main'
|
||||
elements = [
|
||||
['language', $language],
|
||||
['site_name', $site_name],
|
||||
['site_description', $site_description],
|
||||
['site_keywords', $site_keywords],
|
||||
['site_link', $site_link],
|
||||
['site_img', $site_img],
|
||||
['author_name', $author_name],
|
||||
['author_email', $author_email],
|
||||
['date', get_date($date)],
|
||||
['title', title]
|
||||
]
|
||||
|
||||
elements.each do |e|
|
||||
content.gsub!("$#{e[0]}$", e[1])
|
||||
end
|
||||
|
||||
if content.split("\n")[0] == '<header>'
|
||||
content.gsub!($mariana, "<a target=\"_blank\" href=\"https://marianaeguaras.com/blog/\">#{$mariana}</a>")
|
||||
end
|
||||
|
||||
if title == 'Main'
|
||||
content.gsub!('href="../', 'href="')
|
||||
content.gsub!('src="../', 'src="')
|
||||
end
|
||||
|
||||
return content
|
||||
end
|
||||
|
||||
# Changes file content
|
||||
def change_file url, content
|
||||
file = File.new(url, 'w:UTF-8')
|
||||
file.puts content
|
||||
file.close
|
||||
end
|
||||
|
||||
# Converts MD in other formats
|
||||
def convert_md md
|
||||
md_content = []
|
||||
item = {
|
||||
:guid => $site_link + '/html/' + File.basename(md, '.*'),
|
||||
:title => '',
|
||||
:link => $site_link + '/html/' + File.basename(md, '.*') + '.html',
|
||||
:description => '',
|
||||
:author => $author_email + ' (' + $author_name + ')',
|
||||
:category => '',
|
||||
:pubDate => ''
|
||||
}
|
||||
|
||||
# Gets properties from MD
|
||||
def item_split s
|
||||
return s.gsub(/@\S+\['(.*?)'\]/, '\1').strip.split('\',\'')
|
||||
end
|
||||
|
||||
puts "Building '" + File.basename(md) + "'…"
|
||||
|
||||
# Analizes MD
|
||||
file = File.open(md, 'r:UTF-8')
|
||||
file.each_with_index do |l, i|
|
||||
if i == 0
|
||||
item[:title] = l.gsub(/^#/, '').strip
|
||||
end
|
||||
|
||||
if l =~ /^@meta\[.*?\]\s*?$/
|
||||
data = item_split(l)
|
||||
item[:pubDate] = get_date(data[0], true)
|
||||
item[:category] = data[1]
|
||||
item[:description] = data[2]
|
||||
md_content.push(
|
||||
'<p class="meta">' +
|
||||
get_date(data[0]) + ' | ' +
|
||||
data[1] + ' | ' +
|
||||
'<span class="smallcap"><a target="_blank" href="' + $site_link + '/md/' + File.basename(md) + '">MD</a></span> / ' +
|
||||
'<span class="smallcap"><a target="_blank" href="' + $site_link + '/ebooks/' + File.basename(md, ".*") + '.epub">EPUB</a></span> / ' +
|
||||
'<span class="smallcap"><a target="_blank" href="' + $site_link + '/ebooks/' + File.basename(md, ".*") + '.mobi">MOBI</a></span> / ' +
|
||||
'<a target="_blank" href="' + data[3] + '">spanish version</a>' +
|
||||
'</p>'
|
||||
)
|
||||
else
|
||||
md_content.push(l)
|
||||
end
|
||||
end
|
||||
|
||||
# Everything is gonna be created in a temporary directory
|
||||
Dir.mkdir('tmp')
|
||||
Dir.chdir('tmp')
|
||||
|
||||
# Some variables that are going to be used
|
||||
html_name = '../html/' + File.basename(md, '.*') + '.html'
|
||||
new_md_name = File.basename(md)
|
||||
cover_url = '../../template/ebooks/'
|
||||
|
||||
# Creates an MD with some changes so it can be converted to HTML
|
||||
change_file(new_md_name, md_content)
|
||||
system("pc-pandog -i #{new_md_name} -o #{html_name}")
|
||||
|
||||
# Will convert HTML to EPUB and MOBI
|
||||
system("pc-automata --init")
|
||||
Dir.chdir('epub-automata')
|
||||
|
||||
# Modifies the metadata
|
||||
yaml_content = File.read('meta-data.yaml')
|
||||
yaml_content.gsub!('title: Sin título', 'title: "' + item[:title] + '"')
|
||||
.gsub!('Apellido, Nombre', $author_name)
|
||||
.gsub!('publisher:', "publisher:\n - Perro Tuerto")
|
||||
.gsub!('synopsis:', 'synopsis: "' + item[:description] + '"')
|
||||
.gsub!('category:', "category:\n - \"" + item[:category] + '"')
|
||||
.gsub!('language: es', 'language: en')
|
||||
.gsub!('cover:', 'cover: cover.png')
|
||||
change_file('meta-data.yaml', yaml_content)
|
||||
|
||||
# Creates the cover
|
||||
FileUtils.cp(cover_url + 'svg/cover.svg', cover_url + 'svg/cover_tmp.svg')
|
||||
svg_content = File.read(cover_url + 'svg/cover_tmp.svg')
|
||||
svg_content = replace_content(svg_content, item[:title])
|
||||
change_file(cover_url + 'svg/cover_tmp.svg', svg_content)
|
||||
Dir.mkdir(cover_url + 'img')
|
||||
quiet = `inkscape -z -e #{cover_url}img/cover.png #{cover_url}svg/cover_tmp.svg`
|
||||
|
||||
# Copies the images
|
||||
Dir.glob('../../img/*.*').each do |img|
|
||||
if File.basename(img) =~ /^e#{File.basename(md)[5..7]}/
|
||||
FileUtils.cp(img, cover_url + 'img')
|
||||
end
|
||||
end
|
||||
|
||||
# Creates the ebooks
|
||||
system("pc-automata -f ../#{html_name} -i #{cover_url}img -c #{cover_url}img/cover.png -s ../../css/core.css -x ../../template/ebooks/xhtml --no-pre --no-analytics --no-ace")
|
||||
|
||||
# Removes temporary covers
|
||||
FileUtils.rm("#{cover_url}svg/cover_tmp.svg")
|
||||
FileUtils.rm_rf("#{cover_url}img")
|
||||
|
||||
# Renames and moves the ebooks
|
||||
Dir.glob('*.{epub,mobi}').each do |ebook|
|
||||
if File.basename(ebook) !~ /^epub-[\w|\d]+?\.epub/
|
||||
FileUtils.mv(ebook, '../../ebooks/' + File.basename(md, '.*') + File.extname(ebook))
|
||||
end
|
||||
end
|
||||
Dir.chdir('..')
|
||||
|
||||
# Changes head, header, footer and styles for the final HTML
|
||||
write = false
|
||||
html_content = File.read(html_name).gsub(/\n/,'')
|
||||
html_content.gsub!(/.*?<\/style>\s+/, '')
|
||||
.gsub!(/<\/body>.*?$/, '')
|
||||
change_file(html_name, [replace_content($head, item[:title]),
|
||||
replace_content($header),
|
||||
html_content,
|
||||
replace_content($footer)])
|
||||
|
||||
# Deletes temporary folder
|
||||
Dir.chdir('..')
|
||||
FileUtils.rm_rf('tmp')
|
||||
|
||||
# Adds content to RSS
|
||||
$rss[:channel][:items].push(item)
|
||||
end
|
||||
|
||||
# Converts the RSS to a XML syntax
|
||||
def create_xml hash, space = ''
|
||||
hash.each do |k, v|
|
||||
if k.to_s != 'items'
|
||||
$xml.push(space + '<' + k.to_s + '>')
|
||||
|
||||
if k.to_s == 'channel'
|
||||
$xml.push(space + ' <atom:link href="' + $site_link + '/feed/rss.xml" rel="self" type="application/rss+xml" />')
|
||||
end
|
||||
end
|
||||
|
||||
if v.class == Hash
|
||||
create_xml(v, space + ' ')
|
||||
elsif v.class == Array
|
||||
v.each do |e|
|
||||
$xml.push(space + '<item>')
|
||||
create_xml(e, space + ' ')
|
||||
$xml.push(space + '</item>')
|
||||
end
|
||||
else
|
||||
$xml.push(space + ' ' + v)
|
||||
end
|
||||
|
||||
if k.to_s != 'items'
|
||||
$xml.push(space + '</' + k.to_s + '>')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
#=> Deployment
|
||||
|
||||
# Generates core CSS
|
||||
Dir.chdir('css')
|
||||
system("pc-add --add css")
|
||||
change_file('core.css', [File.read('styles.css'), File.read('ebooks.css')])
|
||||
Dir.chdir('..')
|
||||
|
||||
# Gets MDs to convert in other formats
|
||||
Dir.glob('md/*.{md}').each_with_index do |md, i|
|
||||
convert_md(File.absolute_path(md))
|
||||
end
|
||||
|
||||
# Last info added to RSS
|
||||
$rss[:channel][:lastBuildDate] = get_date($date, true)
|
||||
$rss[:channel][:items].sort_by!{|h| h[:link]}.reverse!
|
||||
create_xml($rss)
|
||||
|
||||
# Builds index.html
|
||||
puts "Building 'index.html'…"
|
||||
html_content = []
|
||||
$rss[:channel][:items].each do |item|
|
||||
inner_html = '<div class="entry" id="' + item[:guid].split('/').last + '"><p>' +
|
||||
'<a href="' + item[:link] + '">' + item[:title] + '</a>' +
|
||||
'</p><p class="meta">' + get_date(Time.parse(item[:pubDate]).to_s.split(/\s+/)[0]) +
|
||||
' | ' + item[:category] + '</p><p>' + item[:description] + '</p></div>'
|
||||
html_content.push(inner_html.gsub!($site_link, '.'))
|
||||
end
|
||||
change_file('index.html', [replace_content($head),
|
||||
replace_content($header),
|
||||
html_content,
|
||||
replace_content($footer)])
|
||||
|
||||
# Builds RSS
|
||||
puts "Building 'rss.xml'…"
|
||||
change_file('feed/rss.xml', ['<?xml version="1.0" ?>',
|
||||
'<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">',
|
||||
$xml,
|
||||
'</rss>'])
|
824
old/css/core.css
824
old/css/core.css
|
@ -1,824 +0,0 @@
|
|||
/**************************************************/
|
||||
/******************* RESETEADOR *******************/
|
||||
/**************************************************/
|
||||
|
||||
/* http://meyerweb.com/eric/tools/css/reset/ v2.0 */
|
||||
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, img, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||
article, aside, canvas, details, embed,
|
||||
figure, figcaption, footer, header, hgroup,
|
||||
menu, nav, output, ruby, section, summary,
|
||||
time, mark, audio, video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
/* Old browsers / Para viejos exploradores */
|
||||
|
||||
article, aside, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
body {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
ol, ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
blockquote, q {
|
||||
quotes: none;
|
||||
}
|
||||
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
/**************************************************/
|
||||
|
||||
/* Fuentes */
|
||||
|
||||
@font-face {
|
||||
font-family: "Bitter Regular";
|
||||
src: url(../ttf/bitter-regular.ttf);
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Bitter Italic";
|
||||
src: url(../ttf/bitter-italic.ttf);
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Bitter Bold";
|
||||
src: url(../ttf/bitter-bold.ttf);
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Bitter BoldItalic";
|
||||
src: url(../ttf/bitter-bolditalic.ttf);
|
||||
}
|
||||
|
||||
/* Body / Cuerpo */
|
||||
|
||||
@media screen and (min-width: 769px) {
|
||||
body {
|
||||
margin: 5em;
|
||||
}
|
||||
|
||||
.no-margin, .sin-margen {
|
||||
margin: -5em;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
body {
|
||||
margin: 4em;
|
||||
}
|
||||
|
||||
.no-margin, .sin-margen {
|
||||
margin: -4em;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 640px) {
|
||||
body {
|
||||
margin: 3em;
|
||||
}
|
||||
|
||||
.no-margin, .sin-margen {
|
||||
margin: -3em;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 480px) {
|
||||
body {
|
||||
margin: 2em;
|
||||
}
|
||||
|
||||
.no-margin, .sin-margen {
|
||||
margin: -2em;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 320px) {
|
||||
body {
|
||||
margin: 1em;
|
||||
}
|
||||
|
||||
.no-margin, .sin-margen {
|
||||
margin: -1em;
|
||||
}
|
||||
}
|
||||
|
||||
@media amzn-mobi, amzn-kf8 { /* For Kindle because it generates a lot of margin / Para Kindle porque genera mucho margen */
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.no-margin, .sin-margen {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Sections / Secciones */
|
||||
|
||||
section + section {
|
||||
margin-top: 10em;
|
||||
}
|
||||
|
||||
/* Headers / Encabezados */
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-family: "Bitter Regular", Georgia, "Palatino Linotype", "Book Antiqua", Palatino, serif;
|
||||
margin-bottom: 1em;
|
||||
text-align: left;
|
||||
font-size: 1em;
|
||||
-moz-hyphens: none !important;
|
||||
-webkit-hyphens: none !important;
|
||||
-o-hyphens: none !important;
|
||||
-ms-hyphens: none !important;
|
||||
hyphens: none !important;
|
||||
}
|
||||
|
||||
h2, h3, h4, h5, h6 {
|
||||
margin-top: 2em;
|
||||
}
|
||||
|
||||
h4, h5, h6 {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-bottom: 6em;
|
||||
}
|
||||
|
||||
h3, h5 {
|
||||
font-family: "Bitter Italic", Georgia, "Palatino Linotype", "Book Antiqua", Palatino, serif;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-family: "Bitter Bold", Georgia, "Palatino Linotype", "Book Antiqua", Palatino, serif;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h1.title, h1.titulo {
|
||||
margin-top: 4em;
|
||||
margin-bottom: 0;
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
h2.subtitle, h2.subtitulo {
|
||||
margin-top: .5em;
|
||||
margin-bottom: 3em;
|
||||
font-size: 1.25em;
|
||||
}
|
||||
|
||||
/* Paragraphs / Párrafos */
|
||||
|
||||
p, blockquote, li, figcaption, details, aside {
|
||||
font-family: "Bitter Regular", Georgia, "Palatino Linotype", "Book Antiqua", Palatino, serif;
|
||||
font-size: 1em;
|
||||
text-align: justify;
|
||||
line-height: 1.5em;
|
||||
-moz-hyphens: auto;
|
||||
-webkit-hyphens: auto;
|
||||
-o-hyphens: auto;
|
||||
-ms-hyphens: auto;
|
||||
hyphens: auto;
|
||||
}
|
||||
|
||||
p + p {
|
||||
text-indent: 1.5em;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
font-size: .9em;
|
||||
margin: 1em 1.5em;
|
||||
}
|
||||
|
||||
blockquote + blockquote {
|
||||
text-indent: 1.5em;
|
||||
margin-top: -1em;
|
||||
}
|
||||
|
||||
blockquote, blockquote > * {
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
.justified, .justificado {
|
||||
text-align: justify !important;
|
||||
}
|
||||
|
||||
.right, .derecha {
|
||||
text-indent: 0;
|
||||
text-align: right !important;
|
||||
}
|
||||
|
||||
.left, .izquierda {
|
||||
text-align: left !important;
|
||||
}
|
||||
|
||||
.centered, .centrado {
|
||||
text-indent: 0;
|
||||
text-align: center !important;
|
||||
}
|
||||
|
||||
.hanging, .frances {
|
||||
margin-left: 1.5em;
|
||||
text-indent: -1.5em;
|
||||
text-align: left !important;
|
||||
}
|
||||
|
||||
* + .hanging, * + .frances {
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.hanging + .hanging, .frances + .frances {
|
||||
margin-top: 0;
|
||||
text-indent: -1.5em;
|
||||
}
|
||||
|
||||
.indent, .sangria {
|
||||
text-indent: 1.5em;
|
||||
}
|
||||
|
||||
.no-indent, .sin-sangria {
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
.no-hyphens, .sin-separacion {
|
||||
-moz-hyphens: none !important;
|
||||
-webkit-hyphens: none !important;
|
||||
-o-hyphens: none !important;
|
||||
-ms-hyphens: none !important;
|
||||
hyphens: none !important;
|
||||
}
|
||||
|
||||
.invisible {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.hidden, .oculto {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.block, .bloque {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Font effects / Efectos en las fuentes */
|
||||
|
||||
i, em {
|
||||
font-family: "Bitter Italic", Georgia, "Palatino Linotype", "Book Antiqua", Palatino, serif;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
b, strong {
|
||||
font-family: "Bitter Bold", Georgia, "Palatino Linotype", "Book Antiqua", Palatino, serif;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
i > b, b > i,
|
||||
em > strong, strong > em,
|
||||
i > strong, strong > i,
|
||||
em > b, b > em {
|
||||
font-family: "Bitter BoldItalic", Georgia, "Palatino Linotype", "Book Antiqua", Palatino, serif;
|
||||
}
|
||||
|
||||
.initial, .capitular {
|
||||
float: left;
|
||||
font-size: 3em;
|
||||
margin-top: .15em;
|
||||
padding-right: .1em;
|
||||
}
|
||||
|
||||
.uppercase, .versal {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.normal, .redonda {
|
||||
font-variant: none;
|
||||
}
|
||||
|
||||
.smallcap-light, .versalita-ligera {
|
||||
font-variant: small-caps;
|
||||
-moz-hyphens: auto;
|
||||
-webkit-hyphens: auto;
|
||||
-o-hyphens: auto;
|
||||
-ms-hyphens: auto;
|
||||
hyphens: auto;
|
||||
}
|
||||
|
||||
.smallcap, .versalita {
|
||||
text-transform: lowercase;
|
||||
font-variant: small-caps;
|
||||
-moz-hyphens: auto;
|
||||
-webkit-hyphens: auto;
|
||||
-o-hyphens: auto;
|
||||
-ms-hyphens: auto;
|
||||
hyphens: auto;
|
||||
}
|
||||
|
||||
.underline, .subrayado {
|
||||
text-decoration: underline black;
|
||||
}
|
||||
|
||||
.auto-width, .anchura-auto {
|
||||
display: block;
|
||||
width: auto;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
@media not amzn-mobi, not amzn-kf8 { /* For any device except Kindle / Para cualquier dispositivo excepto Kindle */
|
||||
.auto-width, .anchura-auto {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
/* Links / Enlaces */
|
||||
|
||||
a, a:link, a:visited {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Lists / Listas */
|
||||
|
||||
ol, ul {
|
||||
margin: 1em 1em 1em 2.5em;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
ol {
|
||||
list-style-type: decimal;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: disc;
|
||||
}
|
||||
|
||||
ol ol, ol ul,
|
||||
ul ol, ul ul {
|
||||
margin: 0 1em;
|
||||
}
|
||||
|
||||
ol p, ul p {
|
||||
margin-left: .5em;
|
||||
}
|
||||
|
||||
ul.dash, ul.en-dash, ul.em-dash {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
ul.dash > li:before, ul.en-dash > li:before, ul.em-dash > li:before {
|
||||
display: block;
|
||||
width: 1.5em;
|
||||
text-align: right;
|
||||
padding: 0 .5em 0 0;
|
||||
margin: 0 0 -1.25em -2em;
|
||||
}
|
||||
|
||||
ul.dash > li:before {
|
||||
content: "-";
|
||||
}
|
||||
|
||||
ul.en-dash > li:before {
|
||||
content: "–";
|
||||
}
|
||||
|
||||
ul.em-dash > li:before {
|
||||
content: "—";
|
||||
}
|
||||
|
||||
li.no-count {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
li.no-count:before {
|
||||
content: none !important;
|
||||
}
|
||||
|
||||
.li-manual {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.li-manual > li > p:first-child > span:first-of-type:not(.versalita) {
|
||||
display: block;
|
||||
margin-left: -1.5em;
|
||||
margin-bottom: -1.25em;
|
||||
}
|
||||
|
||||
li > .li-manual {
|
||||
margin: 0 0 0 1.5em;
|
||||
}
|
||||
|
||||
/* Images / Imágenes */
|
||||
|
||||
img { /* It helps if the source doesn't exist / Ayuda a detectarlos si no existe el recurso */
|
||||
color: #0000EE;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 2em auto;
|
||||
}
|
||||
|
||||
figcaption {
|
||||
font-family: "Bitter Regular", Georgia, "Palatino Linotype", "Book Antiqua", Palatino, serif;
|
||||
margin-top: .5em;
|
||||
font-size: .9em;
|
||||
}
|
||||
|
||||
figure + figure {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
p + img {
|
||||
margin-left: -1.5em;
|
||||
margin-top: 2em;
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
.caption, .leyenda {
|
||||
font-size: .9em;
|
||||
margin-top: -1.5em;
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
.caption + img, .leyenda + img {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
img + .caption, img + .leyenda {
|
||||
margin-top: .5em;
|
||||
}
|
||||
|
||||
.caption + p, .leyenda + p {
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
p > img {
|
||||
display: inline;
|
||||
height: 1.5em;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
/* Superscript and subscripts / Superíndices y subíndices */
|
||||
|
||||
sup, sub {
|
||||
font-size: .75em;
|
||||
vertical-align: super;
|
||||
}
|
||||
|
||||
sub {
|
||||
vertical-align: sub;
|
||||
}
|
||||
|
||||
/* Code / Código (inspirados en https://codepen.io/elomatreb/pen/hbgxp)*/
|
||||
|
||||
code {
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
background-color: #fff;
|
||||
padding: .125em .5em;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: .25em;
|
||||
-moz-hyphens: none;
|
||||
-webkit-hyphens: none;
|
||||
-o-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
hyphens: none;
|
||||
}
|
||||
|
||||
pre {
|
||||
width: 90%;
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
background-color: #fff;
|
||||
margin: 2em auto;
|
||||
padding: .5em;
|
||||
line-height: 1.5;
|
||||
border-radius: .25em;
|
||||
box-shadow: .1em .1em .5em rgba(0,0,0,.45);
|
||||
white-space: unset;
|
||||
}
|
||||
|
||||
pre * {
|
||||
color: #555;
|
||||
}
|
||||
|
||||
pre code {
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: inherit;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
pre code:before {
|
||||
width: 1.5em;
|
||||
display: inline-block;
|
||||
padding: 0 .5em;
|
||||
margin-right: .5em;
|
||||
color: #888;
|
||||
}
|
||||
|
||||
@media not amzn-mobi, not amzn-kf8 { /* For any device except Kindle / Para cualquier dispositivo excepto Kindle */
|
||||
pre {
|
||||
counter-reset: line;
|
||||
overflow: scroll;
|
||||
}
|
||||
|
||||
pre code:before {
|
||||
counter-increment: line;
|
||||
content: counter(line);
|
||||
}
|
||||
|
||||
pre code {
|
||||
white-space: pre;
|
||||
}
|
||||
}
|
||||
|
||||
@media amzn-mobi, amzn-kf8 { /* Only for Kindle / Solo para Kindle */
|
||||
pre code:before {
|
||||
content: "•";
|
||||
}
|
||||
}
|
||||
|
||||
/* Glosses / Glosas */
|
||||
|
||||
section.gloss, body.gloss, section.glosa, body.glosa { /* El estilo ha de ponerse en el contenedor de los párrafos y en el span de la glosa */
|
||||
margin-right: 7em;
|
||||
}
|
||||
|
||||
span.gloss, span.glosa {
|
||||
width: 6em; /* No son 7 porque se resta uno del margen añadido a continuación */
|
||||
margin-right: -8em; /* No son -7 porque se añade 1 de margen */
|
||||
float: right;
|
||||
text-indent: 0;
|
||||
text-align: left;
|
||||
font-size: .75em;
|
||||
}
|
||||
|
||||
/* Poetry / Poesía: <p class="poetry">Verse 1<br />verse 2<br />verse 3.</p>*/
|
||||
|
||||
.poetry, .poesia {
|
||||
margin: 1em 1.5em;
|
||||
text-indent: 0;
|
||||
-moz-hyphens: none;
|
||||
-webkit-hyphens: none;
|
||||
-o-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
hyphens: none;
|
||||
}
|
||||
|
||||
/* Screenwriting / Guiones */
|
||||
|
||||
.mono,
|
||||
section.script *, section.guion * {
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
}
|
||||
|
||||
section.script *, section.guion * {
|
||||
font-size: 1em;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-indent: 0;
|
||||
text-align: left;
|
||||
-moz-hyphens: none !important;
|
||||
-webkit-hyphens: none !important;
|
||||
-o-hyphens: none !important;
|
||||
-ms-hyphens: none !important;
|
||||
hyphens: none !important;
|
||||
}
|
||||
|
||||
section.script ol, section.guion ol,
|
||||
section.script ul, section.guion ul {
|
||||
margin: 1em 2em;
|
||||
}
|
||||
|
||||
section.script h2, section.guion h2,
|
||||
section.script h3, section.guion h3,
|
||||
section.script blockquote, section.guion blockquote {
|
||||
width: 60%;
|
||||
margin-left: 3em;
|
||||
}
|
||||
|
||||
section.script h1, section.guion h1 {
|
||||
text-transform: uppercase;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
section.script h2, section.guion h2 {
|
||||
margin-top: 1em;
|
||||
padding-left: 6em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
section.script h3, section.guion h3 {
|
||||
padding-left: 3em;
|
||||
}
|
||||
|
||||
section.script > p, section.guion > p {
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
section.script blockquote + blockquote > p,
|
||||
section.guion blockquote + blockquote > p {
|
||||
text-indent: 1.5em;
|
||||
}
|
||||
|
||||
/* Special contents / Contenidos especiales */
|
||||
|
||||
.title, .titulo {
|
||||
margin-top: 3em;
|
||||
margin-left: 0;
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
.subtitle, .subtitulo {
|
||||
margin-top: -1.25em;
|
||||
margin-bottom: 3em;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.author, .autor {
|
||||
width: 250px; /* Avoids 100% width in author image / Se añade a la imagen del autor para que no abarque el 100% */
|
||||
}
|
||||
|
||||
.contributor + p, .contribuidor + p {
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
h1 + .contributor, h1 + .contribuidor {
|
||||
margin-top: -6em !important;
|
||||
margin-bottom: 6em;
|
||||
}
|
||||
|
||||
.copyright, .legal * {
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
.epigraph, .epigrafe {
|
||||
font-size: .9em;
|
||||
text-align: right;
|
||||
line-height: 1.65em;
|
||||
margin-left: 40%;
|
||||
}
|
||||
|
||||
body > .epigraph:first-child, body > .epigrafe:first-child {
|
||||
margin-top: 3em;
|
||||
}
|
||||
|
||||
.epigraph + p, .epigrafe + p {
|
||||
margin-top: 2em;
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
.epigraph + .epigraph, .epigrafe + .epigrafe {
|
||||
margin-top: .5em;
|
||||
}
|
||||
|
||||
.vertical-space1, .espacio-arriba1 {
|
||||
margin-top: 1em !important;
|
||||
}
|
||||
|
||||
.vertical-space2, .espacio-arriba2 {
|
||||
margin-top: 2em !important;
|
||||
}
|
||||
|
||||
.vertical-space3, .espacio-arriba3 {
|
||||
margin-top: 3em !important;
|
||||
}
|
||||
|
||||
.space, .espacio {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
/* Footnotes / Notas al pie */
|
||||
|
||||
.n-note-sup {
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.n-note-hr {
|
||||
margin-top: 2em;
|
||||
width: 25%;
|
||||
margin-left: 0;
|
||||
border: 1px solid blue;
|
||||
background-color: blue;
|
||||
}
|
||||
|
||||
.n-note-a {
|
||||
display: block;
|
||||
margin-left: -3em;
|
||||
margin-bottom: -1.375em;
|
||||
}
|
||||
|
||||
.n-note-sup:before, .n-note-a:before {
|
||||
content: "[";
|
||||
color: #0000EE;
|
||||
}
|
||||
|
||||
.n-note-sup:after, .n-note-a:after {
|
||||
content: "]";
|
||||
color: #0000EE;
|
||||
}
|
||||
|
||||
.n-note-p, .n-note-p2 {
|
||||
margin-left: 3em;
|
||||
font-size: .9em;
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
* + .n-note-p {
|
||||
margin-top: 1em;
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
.n-note-p2 {
|
||||
margin-top: 0;
|
||||
text-indent: 1.5em;
|
||||
}
|
||||
|
||||
/* Indexes / Índices analíticos */
|
||||
|
||||
.i-item-section p {
|
||||
margin-top: .5em !important;
|
||||
}
|
||||
|
||||
.i-item-div > h2:first-child, .i-item-div-single > h2:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
@media screen and (min-width:768px) {
|
||||
@media not amzn-mobi, not-amzn-kf8 { /* For any device except Kindle / Para cualquier dispositivo excepto Kindle */
|
||||
.i-item-div {
|
||||
column-count: 2;
|
||||
column-gap: 2em;
|
||||
column-rule: solid 1px lightgray;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.i-item-a:before {
|
||||
content: "[";
|
||||
color: #0000EE;
|
||||
}
|
||||
|
||||
.i-item-a:after {
|
||||
content: "]";
|
||||
color: #0000EE;
|
||||
}
|
||||
|
||||
/* For print / Para impresión */
|
||||
|
||||
@media print {
|
||||
section {
|
||||
page-break-before: always;
|
||||
}
|
||||
|
||||
section:first-of-type {
|
||||
page-break-before: avoid;
|
||||
}
|
||||
|
||||
section > h1:first-child {
|
||||
padding-top: 5em !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Styles for this edition / Estilos de esta edición */
|
||||
|
||||
/* ADD HERE CUSTOM STYLES / AGREGAR ESTILOS PERSONALIZADOS */
|
||||
body > h1:first-child {margin-bottom:0;}
|
||||
.addenda {border-left: 3px solid yellow; padding-left:1em;}
|
||||
.addenda:before {content: "addendum";display:block;margin-left:-3.5em;font-size:.75em;color:gray;background:white;}
|
||||
.addenda + .addenda:before {content: "";}
|
||||
.meta {font-size:.75em;text-indent:0;color:gray;margin-bottom:6em;}
|
||||
.meta a {color:gray;}
|
||||
.meta + p {text-indent:0;}
|
|
@ -1,7 +0,0 @@
|
|||
body > h1:first-child {margin-bottom:0;}
|
||||
.addenda {border-left: 3px solid yellow; padding-left:1em;}
|
||||
.addenda:before {content: "addendum";display:block;margin-left:-3.5em;font-size:.75em;color:gray;background:white;}
|
||||
.addenda + .addenda:before {content: "";}
|
||||
.meta {font-size:.75em;text-indent:0;color:gray;margin-bottom:6em;}
|
||||
.meta a {color:gray;}
|
||||
.meta + p {text-indent:0;}
|
|
@ -1,36 +0,0 @@
|
|||
body {margin:0;}
|
||||
body > * {float:left;}
|
||||
body > section {width:calc(75% - 10em);margin:5em;}
|
||||
header {width:calc(25% - 5em);margin-top: 5em;padding:2.5em;background-color:black;color:white;border-radius:0 .5em .5em 0;}
|
||||
header h1 {margin:0; font-size: 1.25em;}
|
||||
header h1 + p {margin-top:1em!important;}
|
||||
header h3 {margin-top:1em;}
|
||||
header a {color: white;}
|
||||
header p, footer nav {text-align:left;}
|
||||
header p + p, footer p + p {text-indent:0;}
|
||||
header nav > p:before {content:"> ";}
|
||||
section p {text-align: left;}
|
||||
section h1 {margin-bottom:0;}
|
||||
footer {border-top: 1px dashed black; width:calc(100% - 2em); margin: 1em;}
|
||||
footer {font-size: .75em;}
|
||||
footer p {text-align: center;}
|
||||
footer p + p {margin-top:.25em;}
|
||||
footer > *:first-child {margin-top: 1em;}
|
||||
@media screen and (max-width: 768px) {
|
||||
body > * {float:none;}
|
||||
body > section {width:calc(100% - 5em);margin:2.5em;}
|
||||
header {width:calc(100% - 5em);margin-top:0;border-radius:0;}
|
||||
header > p:first-of-type {display:inline;}
|
||||
header nav {margin-top:1em;}
|
||||
header nav > * {display:inline;}
|
||||
header nav > p:before {content:"| ";}
|
||||
header h3 {display: none;}
|
||||
header h3 + p:before {content: none;}
|
||||
footer {word-wrap: break-word;}
|
||||
}
|
||||
|
||||
div.entry {margin-bottom:1em;padding-bottom:1em;border-bottom: 1px solid #ddd;}
|
||||
div.entry:last-child {border:none;}
|
||||
div.entry .meta {margin-bottom: 0;}
|
||||
|
||||
#hashover {margin-top: 3em;}
|
|
@ -1,817 +0,0 @@
|
|||
/**************************************************/
|
||||
/******************* RESETEADOR *******************/
|
||||
/**************************************************/
|
||||
|
||||
/* http://meyerweb.com/eric/tools/css/reset/ v2.0 */
|
||||
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, img, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||
article, aside, canvas, details, embed,
|
||||
figure, figcaption, footer, header, hgroup,
|
||||
menu, nav, output, ruby, section, summary,
|
||||
time, mark, audio, video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
/* Old browsers / Para viejos exploradores */
|
||||
|
||||
article, aside, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
body {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
ol, ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
blockquote, q {
|
||||
quotes: none;
|
||||
}
|
||||
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
/**************************************************/
|
||||
|
||||
/* Fuentes */
|
||||
|
||||
@font-face {
|
||||
font-family: "Bitter Regular";
|
||||
src: url(../ttf/bitter-regular.ttf);
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Bitter Italic";
|
||||
src: url(../ttf/bitter-italic.ttf);
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Bitter Bold";
|
||||
src: url(../ttf/bitter-bold.ttf);
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Bitter BoldItalic";
|
||||
src: url(../ttf/bitter-bolditalic.ttf);
|
||||
}
|
||||
|
||||
/* Body / Cuerpo */
|
||||
|
||||
@media screen and (min-width: 769px) {
|
||||
body {
|
||||
margin: 5em;
|
||||
}
|
||||
|
||||
.no-margin, .sin-margen {
|
||||
margin: -5em;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
body {
|
||||
margin: 4em;
|
||||
}
|
||||
|
||||
.no-margin, .sin-margen {
|
||||
margin: -4em;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 640px) {
|
||||
body {
|
||||
margin: 3em;
|
||||
}
|
||||
|
||||
.no-margin, .sin-margen {
|
||||
margin: -3em;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 480px) {
|
||||
body {
|
||||
margin: 2em;
|
||||
}
|
||||
|
||||
.no-margin, .sin-margen {
|
||||
margin: -2em;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 320px) {
|
||||
body {
|
||||
margin: 1em;
|
||||
}
|
||||
|
||||
.no-margin, .sin-margen {
|
||||
margin: -1em;
|
||||
}
|
||||
}
|
||||
|
||||
@media amzn-mobi, amzn-kf8 { /* For Kindle because it generates a lot of margin / Para Kindle porque genera mucho margen */
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.no-margin, .sin-margen {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Sections / Secciones */
|
||||
|
||||
section + section {
|
||||
margin-top: 10em;
|
||||
}
|
||||
|
||||
/* Headers / Encabezados */
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-family: "Bitter Regular", Georgia, "Palatino Linotype", "Book Antiqua", Palatino, serif;
|
||||
margin-bottom: 1em;
|
||||
text-align: left;
|
||||
font-size: 1em;
|
||||
-moz-hyphens: none !important;
|
||||
-webkit-hyphens: none !important;
|
||||
-o-hyphens: none !important;
|
||||
-ms-hyphens: none !important;
|
||||
hyphens: none !important;
|
||||
}
|
||||
|
||||
h2, h3, h4, h5, h6 {
|
||||
margin-top: 2em;
|
||||
}
|
||||
|
||||
h4, h5, h6 {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-bottom: 6em;
|
||||
}
|
||||
|
||||
h3, h5 {
|
||||
font-family: "Bitter Italic", Georgia, "Palatino Linotype", "Book Antiqua", Palatino, serif;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-family: "Bitter Bold", Georgia, "Palatino Linotype", "Book Antiqua", Palatino, serif;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h1.title, h1.titulo {
|
||||
margin-top: 4em;
|
||||
margin-bottom: 0;
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
h2.subtitle, h2.subtitulo {
|
||||
margin-top: .5em;
|
||||
margin-bottom: 3em;
|
||||
font-size: 1.25em;
|
||||
}
|
||||
|
||||
/* Paragraphs / Párrafos */
|
||||
|
||||
p, blockquote, li, figcaption, details, aside {
|
||||
font-family: "Bitter Regular", Georgia, "Palatino Linotype", "Book Antiqua", Palatino, serif;
|
||||
font-size: 1em;
|
||||
text-align: justify;
|
||||
line-height: 1.5em;
|
||||
-moz-hyphens: auto;
|
||||
-webkit-hyphens: auto;
|
||||
-o-hyphens: auto;
|
||||
-ms-hyphens: auto;
|
||||
hyphens: auto;
|
||||
}
|
||||
|
||||
p + p {
|
||||
text-indent: 1.5em;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
font-size: .9em;
|
||||
margin: 1em 1.5em;
|
||||
}
|
||||
|
||||
blockquote + blockquote {
|
||||
text-indent: 1.5em;
|
||||
margin-top: -1em;
|
||||
}
|
||||
|
||||
blockquote, blockquote > * {
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
.justified, .justificado {
|
||||
text-align: justify !important;
|
||||
}
|
||||
|
||||
.right, .derecha {
|
||||
text-indent: 0;
|
||||
text-align: right !important;
|
||||
}
|
||||
|
||||
.left, .izquierda {
|
||||
text-align: left !important;
|
||||
}
|
||||
|
||||
.centered, .centrado {
|
||||
text-indent: 0;
|
||||
text-align: center !important;
|
||||
}
|
||||
|
||||
.hanging, .frances {
|
||||
margin-left: 1.5em;
|
||||
text-indent: -1.5em;
|
||||
text-align: left !important;
|
||||
}
|
||||
|
||||
* + .hanging, * + .frances {
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.hanging + .hanging, .frances + .frances {
|
||||
margin-top: 0;
|
||||
text-indent: -1.5em;
|
||||
}
|
||||
|
||||
.indent, .sangria {
|
||||
text-indent: 1.5em;
|
||||
}
|
||||
|
||||
.no-indent, .sin-sangria {
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
.no-hyphens, .sin-separacion {
|
||||
-moz-hyphens: none !important;
|
||||
-webkit-hyphens: none !important;
|
||||
-o-hyphens: none !important;
|
||||
-ms-hyphens: none !important;
|
||||
hyphens: none !important;
|
||||
}
|
||||
|
||||
.invisible {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.hidden, .oculto {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.block, .bloque {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Font effects / Efectos en las fuentes */
|
||||
|
||||
i, em {
|
||||
font-family: "Bitter Italic", Georgia, "Palatino Linotype", "Book Antiqua", Palatino, serif;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
b, strong {
|
||||
font-family: "Bitter Bold", Georgia, "Palatino Linotype", "Book Antiqua", Palatino, serif;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
i > b, b > i,
|
||||
em > strong, strong > em,
|
||||
i > strong, strong > i,
|
||||
em > b, b > em {
|
||||
font-family: "Bitter BoldItalic", Georgia, "Palatino Linotype", "Book Antiqua", Palatino, serif;
|
||||
}
|
||||
|
||||
.initial, .capitular {
|
||||
float: left;
|
||||
font-size: 3em;
|
||||
margin-top: .15em;
|
||||
padding-right: .1em;
|
||||
}
|
||||
|
||||
.uppercase, .versal {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.normal, .redonda {
|
||||
font-variant: none;
|
||||
}
|
||||
|
||||
.smallcap-light, .versalita-ligera {
|
||||
font-variant: small-caps;
|
||||
-moz-hyphens: auto;
|
||||
-webkit-hyphens: auto;
|
||||
-o-hyphens: auto;
|
||||
-ms-hyphens: auto;
|
||||
hyphens: auto;
|
||||
}
|
||||
|
||||
.smallcap, .versalita {
|
||||
text-transform: lowercase;
|
||||
font-variant: small-caps;
|
||||
-moz-hyphens: auto;
|
||||
-webkit-hyphens: auto;
|
||||
-o-hyphens: auto;
|
||||
-ms-hyphens: auto;
|
||||
hyphens: auto;
|
||||
}
|
||||
|
||||
.underline, .subrayado {
|
||||
text-decoration: underline black;
|
||||
}
|
||||
|
||||
.auto-width, .anchura-auto {
|
||||
display: block;
|
||||
width: auto;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
@media not amzn-mobi, not amzn-kf8 { /* For any device except Kindle / Para cualquier dispositivo excepto Kindle */
|
||||
.auto-width, .anchura-auto {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
/* Links / Enlaces */
|
||||
|
||||
a, a:link, a:visited {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Lists / Listas */
|
||||
|
||||
ol, ul {
|
||||
margin: 1em 1em 1em 2.5em;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
ol {
|
||||
list-style-type: decimal;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: disc;
|
||||
}
|
||||
|
||||
ol ol, ol ul,
|
||||
ul ol, ul ul {
|
||||
margin: 0 1em;
|
||||
}
|
||||
|
||||
ol p, ul p {
|
||||
margin-left: .5em;
|
||||
}
|
||||
|
||||
ul.dash, ul.en-dash, ul.em-dash {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
ul.dash > li:before, ul.en-dash > li:before, ul.em-dash > li:before {
|
||||
display: block;
|
||||
width: 1.5em;
|
||||
text-align: right;
|
||||
padding: 0 .5em 0 0;
|
||||
margin: 0 0 -1.25em -2em;
|
||||
}
|
||||
|
||||
ul.dash > li:before {
|
||||
content: "-";
|
||||
}
|
||||
|
||||
ul.en-dash > li:before {
|
||||
content: "–";
|
||||
}
|
||||
|
||||
ul.em-dash > li:before {
|
||||
content: "—";
|
||||
}
|
||||
|
||||
li.no-count {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
li.no-count:before {
|
||||
content: none !important;
|
||||
}
|
||||
|
||||
.li-manual {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.li-manual > li > p:first-child > span:first-of-type:not(.versalita) {
|
||||
display: block;
|
||||
margin-left: -1.5em;
|
||||
margin-bottom: -1.25em;
|
||||
}
|
||||
|
||||
li > .li-manual {
|
||||
margin: 0 0 0 1.5em;
|
||||
}
|
||||
|
||||
/* Images / Imágenes */
|
||||
|
||||
img { /* It helps if the source doesn't exist / Ayuda a detectarlos si no existe el recurso */
|
||||
color: #0000EE;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 2em auto;
|
||||
}
|
||||
|
||||
figcaption {
|
||||
font-family: "Bitter Regular", Georgia, "Palatino Linotype", "Book Antiqua", Palatino, serif;
|
||||
margin-top: .5em;
|
||||
font-size: .9em;
|
||||
}
|
||||
|
||||
figure + figure {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
p + img {
|
||||
margin-left: -1.5em;
|
||||
margin-top: 2em;
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
.caption, .leyenda {
|
||||
font-size: .9em;
|
||||
margin-top: -1.5em;
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
.caption + img, .leyenda + img {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
img + .caption, img + .leyenda {
|
||||
margin-top: .5em;
|
||||
}
|
||||
|
||||
.caption + p, .leyenda + p {
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
p > img {
|
||||
display: inline;
|
||||
height: 1.5em;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
/* Superscript and subscripts / Superíndices y subíndices */
|
||||
|
||||
sup, sub {
|
||||
font-size: .75em;
|
||||
vertical-align: super;
|
||||
}
|
||||
|
||||
sub {
|
||||
vertical-align: sub;
|
||||
}
|
||||
|
||||
/* Code / Código (inspirados en https://codepen.io/elomatreb/pen/hbgxp)*/
|
||||
|
||||
code {
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
background-color: #fff;
|
||||
padding: .125em .5em;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: .25em;
|
||||
-moz-hyphens: none;
|
||||
-webkit-hyphens: none;
|
||||
-o-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
hyphens: none;
|
||||
}
|
||||
|
||||
pre {
|
||||
width: 90%;
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
background-color: #fff;
|
||||
margin: 2em auto;
|
||||
padding: .5em;
|
||||
line-height: 1.5;
|
||||
border-radius: .25em;
|
||||
box-shadow: .1em .1em .5em rgba(0,0,0,.45);
|
||||
white-space: unset;
|
||||
}
|
||||
|
||||
pre * {
|
||||
color: #555;
|
||||
}
|
||||
|
||||
pre code {
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: inherit;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
pre code:before {
|
||||
width: 1.5em;
|
||||
display: inline-block;
|
||||
padding: 0 .5em;
|
||||
margin-right: .5em;
|
||||
color: #888;
|
||||
}
|
||||
|
||||
@media not amzn-mobi, not amzn-kf8 { /* For any device except Kindle / Para cualquier dispositivo excepto Kindle */
|
||||
pre {
|
||||
counter-reset: line;
|
||||
overflow: scroll;
|
||||
}
|
||||
|
||||
pre code:before {
|
||||
counter-increment: line;
|
||||
content: counter(line);
|
||||
}
|
||||
|
||||
pre code {
|
||||
white-space: pre;
|
||||
}
|
||||
}
|
||||
|
||||
@media amzn-mobi, amzn-kf8 { /* Only for Kindle / Solo para Kindle */
|
||||
pre code:before {
|
||||
content: "•";
|
||||
}
|
||||
}
|
||||
|
||||
/* Glosses / Glosas */
|
||||
|
||||
section.gloss, body.gloss, section.glosa, body.glosa { /* El estilo ha de ponerse en el contenedor de los párrafos y en el span de la glosa */
|
||||
margin-right: 7em;
|
||||
}
|
||||
|
||||
span.gloss, span.glosa {
|
||||
width: 6em; /* No son 7 porque se resta uno del margen añadido a continuación */
|
||||
margin-right: -8em; /* No son -7 porque se añade 1 de margen */
|
||||
float: right;
|
||||
text-indent: 0;
|
||||
text-align: left;
|
||||
font-size: .75em;
|
||||
}
|
||||
|
||||
/* Poetry / Poesía: <p class="poetry">Verse 1<br />verse 2<br />verse 3.</p>*/
|
||||
|
||||
.poetry, .poesia {
|
||||
margin: 1em 1.5em;
|
||||
text-indent: 0;
|
||||
-moz-hyphens: none;
|
||||
-webkit-hyphens: none;
|
||||
-o-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
hyphens: none;
|
||||
}
|
||||
|
||||
/* Screenwriting / Guiones */
|
||||
|
||||
.mono,
|
||||
section.script *, section.guion * {
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
}
|
||||
|
||||
section.script *, section.guion * {
|
||||
font-size: 1em;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-indent: 0;
|
||||
text-align: left;
|
||||
-moz-hyphens: none !important;
|
||||
-webkit-hyphens: none !important;
|
||||
-o-hyphens: none !important;
|
||||
-ms-hyphens: none !important;
|
||||
hyphens: none !important;
|
||||
}
|
||||
|
||||
section.script ol, section.guion ol,
|
||||
section.script ul, section.guion ul {
|
||||
margin: 1em 2em;
|
||||
}
|
||||
|
||||
section.script h2, section.guion h2,
|
||||
section.script h3, section.guion h3,
|
||||
section.script blockquote, section.guion blockquote {
|
||||
width: 60%;
|
||||
margin-left: 3em;
|
||||
}
|
||||
|
||||
section.script h1, section.guion h1 {
|
||||
text-transform: uppercase;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
section.script h2, section.guion h2 {
|
||||
margin-top: 1em;
|
||||
padding-left: 6em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
section.script h3, section.guion h3 {
|
||||
padding-left: 3em;
|
||||
}
|
||||
|
||||
section.script > p, section.guion > p {
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
section.script blockquote + blockquote > p,
|
||||
section.guion blockquote + blockquote > p {
|
||||
text-indent: 1.5em;
|
||||
}
|
||||
|
||||
/* Special contents / Contenidos especiales */
|
||||
|
||||
.title, .titulo {
|
||||
margin-top: 3em;
|
||||
margin-left: 0;
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
.subtitle, .subtitulo {
|
||||
margin-top: -1.25em;
|
||||
margin-bottom: 3em;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.author, .autor {
|
||||
width: 250px; /* Avoids 100% width in author image / Se añade a la imagen del autor para que no abarque el 100% */
|
||||
}
|
||||
|
||||
.contributor + p, .contribuidor + p {
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
h1 + .contributor, h1 + .contribuidor {
|
||||
margin-top: -6em !important;
|
||||
margin-bottom: 6em;
|
||||
}
|
||||
|
||||
.copyright, .legal * {
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
.epigraph, .epigrafe {
|
||||
font-size: .9em;
|
||||
text-align: right;
|
||||
line-height: 1.65em;
|
||||
margin-left: 40%;
|
||||
}
|
||||
|
||||
body > .epigraph:first-child, body > .epigrafe:first-child {
|
||||
margin-top: 3em;
|
||||
}
|
||||
|
||||
.epigraph + p, .epigrafe + p {
|
||||
margin-top: 2em;
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
.epigraph + .epigraph, .epigrafe + .epigrafe {
|
||||
margin-top: .5em;
|
||||
}
|
||||
|
||||
.vertical-space1, .espacio-arriba1 {
|
||||
margin-top: 1em !important;
|
||||
}
|
||||
|
||||
.vertical-space2, .espacio-arriba2 {
|
||||
margin-top: 2em !important;
|
||||
}
|
||||
|
||||
.vertical-space3, .espacio-arriba3 {
|
||||
margin-top: 3em !important;
|
||||
}
|
||||
|
||||
.space, .espacio {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
/* Footnotes / Notas al pie */
|
||||
|
||||
.n-note-sup {
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.n-note-hr {
|
||||
margin-top: 2em;
|
||||
width: 25%;
|
||||
margin-left: 0;
|
||||
border: 1px solid blue;
|
||||
background-color: blue;
|
||||
}
|
||||
|
||||
.n-note-a {
|
||||
display: block;
|
||||
margin-left: -3em;
|
||||
margin-bottom: -1.375em;
|
||||
}
|
||||
|
||||
.n-note-sup:before, .n-note-a:before {
|
||||
content: "[";
|
||||
color: #0000EE;
|
||||
}
|
||||
|
||||
.n-note-sup:after, .n-note-a:after {
|
||||
content: "]";
|
||||
color: #0000EE;
|
||||
}
|
||||
|
||||
.n-note-p, .n-note-p2 {
|
||||
margin-left: 3em;
|
||||
font-size: .9em;
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
* + .n-note-p {
|
||||
margin-top: 1em;
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
.n-note-p2 {
|
||||
margin-top: 0;
|
||||
text-indent: 1.5em;
|
||||
}
|
||||
|
||||
/* Indexes / Índices analíticos */
|
||||
|
||||
.i-item-section p {
|
||||
margin-top: .5em !important;
|
||||
}
|
||||
|
||||
.i-item-div > h2:first-child, .i-item-div-single > h2:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
@media screen and (min-width:768px) {
|
||||
@media not amzn-mobi, not-amzn-kf8 { /* For any device except Kindle / Para cualquier dispositivo excepto Kindle */
|
||||
.i-item-div {
|
||||
column-count: 2;
|
||||
column-gap: 2em;
|
||||
column-rule: solid 1px lightgray;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.i-item-a:before {
|
||||
content: "[";
|
||||
color: #0000EE;
|
||||
}
|
||||
|
||||
.i-item-a:after {
|
||||
content: "]";
|
||||
color: #0000EE;
|
||||
}
|
||||
|
||||
/* For print / Para impresión */
|
||||
|
||||
@media print {
|
||||
section {
|
||||
page-break-before: always;
|
||||
}
|
||||
|
||||
section:first-of-type {
|
||||
page-break-before: avoid;
|
||||
}
|
||||
|
||||
section > h1:first-child {
|
||||
padding-top: 5em !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Styles for this edition / Estilos de esta edición */
|
||||
|
||||
/* ADD HERE CUSTOM STYLES / AGREGAR ESTILOS PERSONALIZADOS */
|
Binary file not shown.
Binary file not shown.
|
@ -1,7 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0; url=https://blog.cliteratu.re/feed/rss.xml" />
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
|
@ -1,35 +0,0 @@
|
|||
<?xml version="1.0" ?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<atom:link href="https://perrotuerto.blog/feed/rss.xml" rel="self" type="application/rss+xml" />
|
||||
<title>
|
||||
Publishing is Coding: Change My Mind
|
||||
</title>
|
||||
<link>
|
||||
https://perrotuerto.blog
|
||||
</link>
|
||||
<description>
|
||||
Such empty! It is under construction…
|
||||
</description>
|
||||
<language>
|
||||
en-US
|
||||
</language>
|
||||
<managingEditor>
|
||||
hi@perrotuerto.blog (Nika Zhenya)
|
||||
</managingEditor>
|
||||
<lastBuildDate>
|
||||
Sun, 27 Jan 2019 00:00:00 -0600
|
||||
</lastBuildDate>
|
||||
<image>
|
||||
<title>
|
||||
Publishing is Coding: Change My Mind
|
||||
</title>
|
||||
<url>
|
||||
https://perrotuerto.blog/icon.png
|
||||
</url>
|
||||
<link>
|
||||
https://perrotuerto.blog
|
||||
</link>
|
||||
</image>
|
||||
</channel>
|
||||
</rss>
|
File diff suppressed because one or more lines are too long
BIN
old/icon.png
BIN
old/icon.png
Binary file not shown.
Before Width: | Height: | Size: 211 KiB |
Binary file not shown.
Before Width: | Height: | Size: 21 KiB |
Binary file not shown.
Before Width: | Height: | Size: 17 KiB |
Binary file not shown.
Before Width: | Height: | Size: 17 KiB |
|
@ -1,37 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en-US">
|
||||
<head>
|
||||
<title>Publishing is Coding: Change My Mind | Main</title>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="application-name" content="Publishing is Coding: Change My Mind">
|
||||
<meta name="description" content="Such empty! It is under construction…">
|
||||
<meta name="keywords" content="publishing, blog, book, ebook, methodology, foss, libre-software, format, markdown, html, epub, pdf, mobi, latex, tex">
|
||||
<link rel="shortcut icon" href="icon.png">
|
||||
<link rel="alternate" type="application/rss+xml" href="https://perrotuerto.blog/feed/" title="Publishing is Coding: Change My Mind">
|
||||
<link type="text/css" rel="stylesheet" href="css/core.css">
|
||||
<link type="text/css" rel="stylesheet" href="css/extra.css">
|
||||
<script type="text/javascript" src="js/main.js"></script>
|
||||
<script type="text/javascript" src="js/piwik.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1><a href="https://perrotuerto.blog">Publishing is Coding: Change My Mind</a></h1>
|
||||
<p>Such empty! It is under construction…</p>
|
||||
<nav>
|
||||
<h3>Contact</h3>
|
||||
<p><a target="_blank" href="mailto:hi@perrotuerto.blog">Email</a></p>
|
||||
<p><a target="_blank" href="https://mastodon.social/@_perroTuerto">Mastodon</a></p>
|
||||
<p><a target="_blank" href="https://twitter.com/_perroTuerto">Twitter</a></p>
|
||||
</nav>
|
||||
</header>
|
||||
<section>
|
||||
</section>
|
||||
<footer>
|
||||
<p><a target="_blank" href="https://ted.cliteratu.re/">ted.cliteratu.re</a> | <a target="_blank" href="https://ed.cliteratu.re/">ed.cliteratu.re</a> | <a target="_blank" href="https://pecas.cliteratu.re/">pecas.cliteratu.re</a> | <a target="_blank" href="https://perrotuerto.blog">perrotuerto.blog</a></p>
|
||||
<p>All content is under <a target="_blank" href="https://github.com/NikaZhenya/publishing-is-coding#license">Licencia Editorial Abierta y Libre (<span class="smallcap">LEAL</span>)</a>.</p>
|
||||
<p>Last build: January 27, 2019 | <span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/rss.xml">RSS</a></span></p>
|
||||
<p><a target="_blank" href="https://gitlab.com/NikaZhenya/publishing-is-coding">GitLab</a> | <a target="_blank" href="https://github.com/NikaZhenya/publishing-is-coding">GitHub</a> | <a target="_blank" href="http://git.cliteratu.re/publishing-is-coding">GitList</a></p>
|
||||
<p><a target="_blank" href="https://etherscan.io/address/0x39b0bf0cf86776060450aba23d1a6b47f5570486"><span class="smallcap">ETH</span></a> | <a target="_blank" href="https://dogechain.info/address/DMbxM4nPLVbzTALv5n8G16TTzK4WDUhC7G"><span class="smallcap">DOGE</span></a> | <a target="_blank" href="https://www.paypal.me/perrotuerto">PayPal</a></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
|
@ -1,17 +0,0 @@
|
|||
window.onload = function () {
|
||||
var url = window.location.pathname,
|
||||
file = url.split('/')[url.split('/').length - 1].substring(0,5);
|
||||
|
||||
if (file == 'entry') {
|
||||
add_shares(url);
|
||||
}
|
||||
};
|
||||
|
||||
function add_shares (url) {
|
||||
var section = document.getElementsByTagName('section')[0],
|
||||
script = document.createElement('script');
|
||||
|
||||
script.type = 'text/javascript';
|
||||
script.src = '/hashover/comments.php';
|
||||
section.appendChild(script);
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
var _paq = _paq || [];
|
||||
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
|
||||
_paq.push(['trackPageView']);
|
||||
_paq.push(['enableLinkTracking']);
|
||||
(function() {
|
||||
var u="//analytics.cliteratu.re/";
|
||||
_paq.push(['setTrackerUrl', u+'piwik.php']);
|
||||
_paq.push(['setSiteId', '6']);
|
||||
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
||||
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
|
||||
})();
|
|
@ -1,325 +0,0 @@
|
|||
# Digital Publishing as Publishing from Scratch
|
||||
|
||||
@meta['2018-10-12','Methodology','A general comparation between the most common methods for developing EPUBs: InDesign, Sigil, Jutoh and “from scratch publishing.”','https://marianaeguaras.com/edicion-digital-como-edicion-desde-cero']
|
||||
|
||||
Thanks to [Mariana Eguaras](http://marianaeguaras.com/)
|
||||
we are going to blog about __digital publishing__,
|
||||
its __characteristics, benefits and challenges__. We are
|
||||
also going to talk about __its relation with print
|
||||
publishing__ and how these issues directly affect the
|
||||
proceedings for any kind of publishing.
|
||||
|
||||
We already have planned what we are going to write about
|
||||
in the first entries, but any suggestions are welcome. As
|
||||
much as it is possible the writing won't be technical. We
|
||||
are going to try to be more friendly to the general public
|
||||
or publishers.
|
||||
|
||||
However, you have to consider that some technicalities
|
||||
are necessary for publishing. The typography, printing or
|
||||
design slangs are common knowledge for publishers. In the
|
||||
same way, the jargons from web or software developers are
|
||||
starting to be part of our cultural background.
|
||||
|
||||
> The entries were originally wrote in spanish. Some of
|
||||
> them are now kind of old: in some things I have a
|
||||
> different opinion or approach. And as it is obvious,
|
||||
> english is not my first language. Therefore, you are
|
||||
> going to find a lot of grammar mistakes or typos
|
||||
> and I will only translate (in a very loose way) the
|
||||
> entries that I still consider relevant. So when you find
|
||||
> this kind of box, it means that it is an _addendum_ only
|
||||
> for this broken english version. {.addenda}
|
||||
|
||||
> Do you want to improve this mess? You can always help
|
||||
> through [GitLab](https://gitlab.com/NikaZhenya/publishing-is-coding)
|
||||
> or [GitHub](https://github.com/NikaZhenya/publishing-is-coding). {.addenda}
|
||||
|
||||
In this first entry we will do a __general comparison
|
||||
between some of the most common methods for developing an
|
||||
standarized ebook in +++EPUB+++ format__. Some other time
|
||||
we will go deeper in the history of +++EPUB+++.
|
||||
|
||||
First off we should say that between the different ebook
|
||||
formats available the +++EPUB+++ since the begining was
|
||||
created as a type of file for _ebooks_. The +++EPUB+++
|
||||
stands out because of its __versatility, lightness and
|
||||
respect of web standards__. This ensures code uniformity
|
||||
and __complete control over the text edition__.
|
||||
|
||||
With these features, the +++EPUB+++ is easily convertible
|
||||
in propertary formats as the ones used by Amazon or Apple.
|
||||
That means that we can save resources and time when we
|
||||
develop a digital publication.
|
||||
|
||||
This flexibility also allows the development of software
|
||||
that intends to facilitate the creation of +++EPUB+++s. Just
|
||||
with a couple of clicks in a text processor (Writer or Word,
|
||||
e.g.) or desktop publishing (like InDesign) we instantly
|
||||
have an +++EPUB+++.
|
||||
|
||||
At first glance this is a huge advantage for indie authors
|
||||
or publishers that don't want to invest in “additional
|
||||
efforts.” However there are at least __two disvantages__ in
|
||||
doing things this way:
|
||||
|
||||
1. The code, design and text edition's qualities tend to be
|
||||
lower in comparison of others methods.
|
||||
2. It is often forgotten that the most important thing about
|
||||
the digital revolution it is not the ebook.
|
||||
|
||||
The ebook is the most common feature in digital publishing
|
||||
but it is just the tip of the iceberg. In order to go
|
||||
deeper we will have to familiarize with __the behind the
|
||||
scenes of ebook's development__.
|
||||
|
||||
> In spanish I insist that digital publishing isn't the same
|
||||
> as digital editing. In spanish it is common to use the
|
||||
> word “edition” and derivatives for things concerning
|
||||
> publishing. But as far as I can see, “edition“ has
|
||||
> a more general meaning in english spoken world. {.addenda}
|
||||
|
||||
> With “digital editing” I mean _the process_ of publishing
|
||||
> that involves the use of a computer (practically
|
||||
> all publishing industry nowadays). “Digital publishing”
|
||||
> is _the product_ of such process. In these translations I
|
||||
> will use the terms interchangeably. Only when I see it
|
||||
> relevant I will say “digital editing” or “digital text
|
||||
> editing.” {.addenda}
|
||||
|
||||
Some people are skeptical about the need of publishing “from
|
||||
scratch.” Most people prefer to use converters to
|
||||
automatically create +++EPUB+++ files.
|
||||
|
||||
Why do we have to learn markup languages such as [+++HTML+++](https://en.wikipedia.org/wiki/HTML)
|
||||
or [Markdown](https://en.wikipedia.org/wiki/Markdown)? Why
|
||||
should we worry about styles sheets like [+++CSS+++](https://en.wikipedia.org/wiki/Cascading_Style_Sheets)
|
||||
or [+++SCSS+++](https://en.wikipedia.org/wiki/Sass_(stylesheet_language))?
|
||||
Why must we think about programming languages ([JavaScript](https://en.wikipedia.org/wiki/JavaScript),
|
||||
[Python](https://en.wikipedia.org/wiki/Python_(programming_language)), [Ruby](https://en.wikipedia.org/wiki/Ruby_(programming_language))
|
||||
or [C++](https://en.wikipedia.org/wiki/C%2B%2B), e.g.) and
|
||||
how it could create new reading experiencies or improve the
|
||||
quality of text edition?
|
||||
|
||||
Regardless wether you want a print or digital book, if we
|
||||
start to pay attention in methodologies, litle by litle we
|
||||
will see its importance.
|
||||
|
||||
## Exercise's peculiarities
|
||||
|
||||
To show the advantages and disadvantages of converters
|
||||
compared to “from scratch publishing,” we will develop the
|
||||
same book but with each method.
|
||||
|
||||
We are gonna do this exercise as realistically as possible.
|
||||
That is why we are gonna use [Gutenberg Project's spanish edition of
|
||||
_Don Quixote_](http://www.gutenberg.org/ebooks/2000). For
|
||||
uniformity our standing points are the text in +++HTML+++
|
||||
format and the same +++CSS+++ style sheet.
|
||||
|
||||
You could wonder:
|
||||
|
||||
* __Why will we use Gutenberg Project's edition if there are
|
||||
better editions online?__ Because it is public domain.
|
||||
Unlike [Wikisource's edition](https://es.wikisource.org/wiki/El_ingenioso_hidalgo_Don_Quijote_de_la_Mancha),
|
||||
it is easy to download in a single file.
|
||||
* __Why will we use an already formated text and not the
|
||||
direct source?__ I found some typos and similar issues;
|
||||
plus, formating text could be a nigthmare which I
|
||||
prefer to discuss another time.
|
||||
* __Why will we use the same style sheet instead of
|
||||
redesign the book in each method?__ Design could involve
|
||||
a lot of time and resources. Also, I want to show the
|
||||
revelance and flexibility of web style sheets on
|
||||
publishing even though I am going to talk about it in
|
||||
another entry.
|
||||
* __Which methods will we apply in this exercise?__ We will
|
||||
see [InDesign's](https://www.adobe.com/products/indesign.html)
|
||||
way of doing things because it is the most common among
|
||||
publishers and designers. We will use [Jutoh](http://jutoh.com/)
|
||||
like an example of propertary software for ebook
|
||||
publishing. Also, we will employ [Sigil](https://github.com/Sigil-Ebook/Sigil)
|
||||
as open software for ebook publishing. Finally, we will
|
||||
show how “from scratch publishing” could be a good
|
||||
candidate for digital publishing.
|
||||
|
||||
## Production time chart: the efectiveness of the
|
||||
“from scratch” method
|
||||
|
||||
![Production time chart in minutes.](../img/e001_01.jpg)
|
||||
|
||||
One of the biggest myths about “from scratch publishing”
|
||||
is that it requires a lot of time. But “from scratch”
|
||||
doesn't mean we have to code it all by hand. As we will
|
||||
see in other entries, with [scripts](https://en.wikipedia.org/wiki/Scripting_language)
|
||||
we can grasp all monotonous work implied in +++EPUB+++
|
||||
development.
|
||||
|
||||
With “from scratch publishing” I mean a method were we
|
||||
don't have a publishing enviroment. Instead of that we use
|
||||
a [plain text editor](https://en.wikipedia.org/wiki/Text_editor)
|
||||
or a [source code editor](https://en.wikipedia.org/wiki/Source_code_editor)
|
||||
and a [command-line interface](https://en.wikipedia.org/wiki/Command-line_interface).
|
||||
|
||||
This method could sound very complex and time consuming.
|
||||
While “from scratch publishing” has it owns challenges,
|
||||
anyone with a computer can overcome these difficulties.
|
||||
|
||||
If we ignore the time needed to format text, in the
|
||||
following chart we can see that __“from scratch” method is
|
||||
the most efective__.
|
||||
|
||||
With InDesign and Jutoh we have to link each +++CSS+++ style
|
||||
to a paragraph or character style. InDesign is way more
|
||||
intuitive than Jutoh. With Sigil or “from scratch
|
||||
publishing” we don't have this need, because we can
|
||||
automatically link the +++CSS+++ with the book. But “from
|
||||
scratch” method has the advantage that we don't have to
|
||||
recreate the directory tree or import files.
|
||||
|
||||
## +++EPUB+++'s size chart: the impact of images and “junk”
|
||||
code
|
||||
|
||||
![+++EPUB+++'s size chart in +++KB+++s.](../img/e001_02.jpg)
|
||||
|
||||
There are two factors that impact +++EPUB+++'s
|
||||
size: __1)__ embedded images and __2)__ “junk” code.
|
||||
|
||||
Most +++EPUB+++s embed at least one image, the cover, and
|
||||
sometimes also a back cover and an author's photo. It
|
||||
doesn't matter if there are just a couple elements, images
|
||||
are __the most heavy files in an +++EPUB+++__ if we have
|
||||
one or more of these setups:
|
||||
|
||||
* The book is short.
|
||||
* The images are bigger than our needs.
|
||||
* The images lack of good compression.
|
||||
* The images are in an inconvenient format.
|
||||
|
||||
Neither of this conditions affect our exercise because we
|
||||
are using the same 204 +++KB+++ image.
|
||||
|
||||
__The difference comes from “junk” code__. Some converters
|
||||
add extra code lines. Most of the times it is because it
|
||||
inject its credits. We also get extra code if we work with
|
||||
paragraph or character styles instead of +++CSS+++ styles.
|
||||
|
||||
> These extra code lines don't improve the reading
|
||||
> experience of our +++EPUB+++, that is why we called them
|
||||
> “junk” code. {.addenda}
|
||||
|
||||
When we allow converters to create the +++CSS+++, they
|
||||
will use their own name conventions that generates __two
|
||||
downsides__:
|
||||
|
||||
1. Needless increase of file's size.
|
||||
2. +++CSS+++ name convention that could make it hard to
|
||||
understand or edit.
|
||||
|
||||
InDesing and Jutoh's +++EPUB+++ are bigger because of “junk”
|
||||
code. Nevertheless, the size difference between Sigil and
|
||||
“from scratch publishing” involes the ebook's structure.
|
||||
|
||||
From +++EPUB+++3 we have two files for the table of
|
||||
contents (+++TOC+++). +++NCX+++ is the legacy file while the
|
||||
new file follows an [+++XHTML+++](https://en.wikipedia.org/wiki/XHTML)
|
||||
structure.
|
||||
|
||||
Because of that, __the +++EPUB+++ developed with “from
|
||||
scratch publishing” has two +++TOC+++s__. This adds 11
|
||||
+++KB+++ resulting in a difference of only 5 +++KB+++
|
||||
between Sigil and “from scratch publishing” books.
|
||||
|
||||
> This means that by default Sigil doesn't create the new
|
||||
> required +++TOC+++ format. That could affect the reading
|
||||
> experience in newer devices. {.addenda}
|
||||
|
||||
## Errors and warnings chart: +++EPUB+++ validation
|
||||
|
||||
![Erros and warnings chart.](../img/e001_03.jpg)
|
||||
|
||||
One of the main advantages of not developing an +++EPUB+++
|
||||
with “from scratch” method is that we don't have to know
|
||||
+++HTML+++, +++CSS+++ and +++EPUB+++ structures. Usually we
|
||||
also count with a graphical interface that implies a short
|
||||
learning curve.
|
||||
|
||||
However, __ebooks not only requiere good text edition and
|
||||
design quality, they also need coherent structures__,
|
||||
i.e. we have to care about technical issues. +++EPUB+++s
|
||||
must not have errors or warnings because of bad quality
|
||||
+++HTML+++ or +++CSS+++ code, insufficient metadata or
|
||||
image issues.
|
||||
|
||||
For this reasons we need __+++EPUB+++ validators__. The
|
||||
official tool for +++EPUB+++ validation is EpubCheck. You
|
||||
can use it [online](http://validator.idpf.org/) or
|
||||
[download it](https://github.com/IDPF/epubcheck/releases).
|
||||
|
||||
Generally we use another validator so we can do a double
|
||||
check. For this exercise we also used [BlueGriffon](http://www.bluegriffon-epubedition.com/BGEV.html).
|
||||
This software isn't free, but is demanded by some clients.
|
||||
|
||||
The above chart only show BlueGriffon's validation because
|
||||
EpubCheck didn't find any error or warning. We had a few
|
||||
issues because we used the same +++HTML+++ and +++CSS+++
|
||||
files. Besides, each method created metadata independently.
|
||||
(For “from scratch publishing” we used [Pecas](https://pecas.cliteratu.re/),
|
||||
a suite of publishing scripts.)
|
||||
|
||||
In InDesign the issue is because an incorrect image
|
||||
compression. For Sigil and Jutoh, BlueGriffon considers they
|
||||
are using obsolete metadata elements.
|
||||
|
||||
Actually, __it isn't hard to solve these issues__.
|
||||
Nevertheless, it could be very frustrating to solve them if
|
||||
you don't know what is inside an +++EPUB+++ file. In order to
|
||||
solve them we must decompress the +++EPUB+++, then we have
|
||||
to modify the problematic files and, finally, compress the
|
||||
files again.
|
||||
|
||||
## Implicit production costs: propertary _vs_ free software
|
||||
|
||||
We dont need to buy software in order to develop
|
||||
+++EPUB+++s.
|
||||
|
||||
However, half of the methods seen here use propertary
|
||||
software and, therefore, they have some additional costs.
|
||||
For InDesign and Jutoh we have to purchase software
|
||||
licenses. Sigil and “from scratch publishing” only use free
|
||||
software.
|
||||
|
||||
A common myth between non-free software users is that this
|
||||
kind of tools have lower quality. At least in publishing
|
||||
enviroment this isn't true. As we could see in this exercise:
|
||||
__Sigil and “from scratch publishing” had better results__.
|
||||
|
||||
However, most publishers only use Adobe products, so in
|
||||
specific circumstances it is more convenient to develop
|
||||
ebooks by this way.
|
||||
|
||||
If you really care about the quality of your +++EPUB+++s,
|
||||
think twice before buying propertary software. The free and
|
||||
open source software communities have great alternatives
|
||||
that could fulfill your needs.
|
||||
|
||||
## Conclusion: “from scratch publishing” wins the match
|
||||
|
||||
As it was shown in this exercise __“from scratch
|
||||
publishing”__ had better results. Most readers could think
|
||||
that this method requieres certain complex knowledge and a
|
||||
long learning curve.
|
||||
|
||||
I can say that within a 24 hours workshop anybody can
|
||||
develop their first ebook “from scratch.” Usually most
|
||||
learners don't have a technical background such as
|
||||
knowing +++HTML+++, +++CSS+++ or command line tools.
|
||||
|
||||
If you are gong to use software exclusively for ebooks, the
|
||||
recommendation is that it has to be free or open source
|
||||
software. With this you can avoid the cost increments at
|
||||
the same time that you can get free help from their
|
||||
communities.
|
||||
|
||||
You can download the [graphics](http://git.cliteratu.re/publishing-is-coding/blob/master/src/entry001/graphics.ods)
|
||||
and the [data](http://git.cliteratu.re/publishing-is-coding/raw/master/src/entry001/data.txt) :)
|
|
@ -1,41 +0,0 @@
|
|||
# Cyclical and branched publishing:
|
||||
from the anteroom to the digital «revolution»
|
||||
|
||||
@meta['2018-10-19','Methodology','EMPTY.','https://marianaeguaras.com/edicion-ciclica-y-edicion-ramificada-de-la-antesala-a-la-revolucion-digital']
|
||||
|
||||
Print publishing has never been easy. Since scribes
|
||||
until printing it has been necessary to acomplish
|
||||
several steps. Generally, there are:
|
||||
|
||||
1. Edit and proofread.
|
||||
2. Graphic and layout design.
|
||||
3. Compare and review.
|
||||
4. Print.
|
||||
5. Distribute.
|
||||
6. Market and business management.
|
||||
|
||||
Before the digital «revolution» each step used to
|
||||
set the rhythm in publishing. It was almost sure that
|
||||
quality would decrease or an step would have to be
|
||||
repeated if something went wrong. __The tasks in
|
||||
traditional publishing had to go step by step and
|
||||
trying to return as little as possible__.
|
||||
|
||||
This rhythm was also constrained to the existent
|
||||
infrastructure, resources and demand. The rhythm
|
||||
was consistent and «slow» before printing. After that
|
||||
publishing processes got faster, costs went down and
|
||||
demand went up.
|
||||
|
||||
Books stopped to being luxury goods and began to be
|
||||
a common well. We could say that printing wasn't only
|
||||
a «revolution» but also an «opening» of information.
|
||||
|
||||
This revolution created new crafts that specialized
|
||||
among centuries. Techniques changed and improved over
|
||||
time but until the middle of +++XX+++ century the
|
||||
method was the same: __Publishing was an unilateral
|
||||
progression until book's marketing__.
|
||||
|
||||
## In the digital «revolution»
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
0 - From scratch
|
||||
EPUB version: 3.0.1
|
||||
Size: 1,182 KB
|
||||
Time: 4:17
|
||||
Epub Check
|
||||
Errors: 0
|
||||
Warnings: 0
|
||||
Blue Griffon
|
||||
Errors: 0
|
||||
Warnings: 0
|
||||
|
||||
1 - InDesign CC
|
||||
EPUB version: 3.0.0
|
||||
Size: 1,185 KB
|
||||
Time: 4:29
|
||||
Epub Check
|
||||
Errors: 0
|
||||
Warnings: 0
|
||||
Blue Griffon
|
||||
Errors: 1
|
||||
Warnings: 1
|
||||
|
||||
2 - Sigil
|
||||
EPUB version: 3.0.1
|
||||
Size: 1,177 KB
|
||||
Time: 4:23
|
||||
Epub Check
|
||||
Errors: 0
|
||||
Warnings: 0
|
||||
Blue Griffon
|
||||
Errors: 0
|
||||
Warnings: 1
|
||||
|
||||
3 - Jutoh
|
||||
EPUB version: 3.0.1
|
||||
Size: 1,191 KB
|
||||
Time: 4:46
|
||||
Epub Check
|
||||
Errors: 0
|
||||
Warnings: 0
|
||||
Blue Griffon
|
||||
Errors: 0
|
||||
Warnings: 1
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Before Width: | Height: | Size: 73 KiB |
|
@ -1,14 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="es" lang="es">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>Cover</title>
|
||||
<style>.sin-margen{margin:0;padding:0;}.forro{display:block;margin:auto;padding:0;height:100vh;width:auto;}</style>
|
||||
</head>
|
||||
<body class="sin-margen">
|
||||
<section epub:type="cover" role="doc-cover">
|
||||
<img id="cover-image" class="forro" alt="Imagen de portada" src="../img/cover.png" />
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
|
@ -1,10 +0,0 @@
|
|||
</section>
|
||||
<footer>
|
||||
<p><a target="_blank" href="https://ted.cliteratu.re/">ted.cliteratu.re</a> | <a target="_blank" href="https://ed.cliteratu.re/">ed.cliteratu.re</a> | <a target="_blank" href="https://pecas.cliteratu.re/">pecas.cliteratu.re</a> | <a target="_blank" href="https://perrotuerto.blog">perrotuerto.blog</a></p>
|
||||
<p>All content is under <a target="_blank" href="https://github.com/NikaZhenya/publishing-is-coding#license">Licencia Editorial Abierta y Libre (<span class="smallcap">LEAL</span>)</a>.</p>
|
||||
<p>Last build: $date$ | <span class="smallcap"><a target="_blank" href="https://perrotuerto.blog/feed/rss.xml">RSS</a></span></p>
|
||||
<p><a target="_blank" href="https://gitlab.com/NikaZhenya/publishing-is-coding">GitLab</a> | <a target="_blank" href="https://github.com/NikaZhenya/publishing-is-coding">GitHub</a> | <a target="_blank" href="http://git.cliteratu.re/publishing-is-coding">GitList</a></p>
|
||||
<p><a target="_blank" href="https://etherscan.io/address/0x39b0bf0cf86776060450aba23d1a6b47f5570486"><span class="smallcap">ETH</span></a> | <a target="_blank" href="https://dogechain.info/address/DMbxM4nPLVbzTALv5n8G16TTzK4WDUhC7G"><span class="smallcap">DOGE</span></a> | <a target="_blank" href="https://www.paypal.me/perrotuerto">PayPal</a></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
|
@ -1,16 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="$language$">
|
||||
<head>
|
||||
<title>$site_name$ | $title$</title>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="application-name" content="$site_name$">
|
||||
<meta name="description" content="$site_description$">
|
||||
<meta name="keywords" content="$site_keywords$">
|
||||
<link rel="shortcut icon" href="../$site_img$">
|
||||
<link rel="alternate" type="application/rss+xml" href="$site_link$/feed/" title="$site_name$">
|
||||
<link type="text/css" rel="stylesheet" href="../css/core.css">
|
||||
<link type="text/css" rel="stylesheet" href="../css/extra.css">
|
||||
<script type="text/javascript" src="../js/main.js"></script>
|
||||
<script type="text/javascript" src="../js/piwik.js"></script>
|
||||
</head>
|
||||
<body>
|
|
@ -1,11 +0,0 @@
|
|||
<header>
|
||||
<h1><a href="$site_link$">$site_name$</a></h1>
|
||||
<p>$site_description$</p>
|
||||
<nav>
|
||||
<h3>Contact</h3>
|
||||
<p><a target="_blank" href="mailto:hi@perrotuerto.blog">Email</a></p>
|
||||
<p><a target="_blank" href="https://mastodon.social/@_perroTuerto">Mastodon</a></p>
|
||||
<p><a target="_blank" href="https://twitter.com/_perroTuerto">Twitter</a></p>
|
||||
</nav>
|
||||
</header>
|
||||
<section>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue