26 views
:::warning Pendientes: - [ ] Fusionar redacción con [la entrada](https://perrotuerto.blog/content/html/es/005_hiim-master.html) escrita en el _blog_. - [x] Capturar pantallas para explicación de reproducción desde GitLab. - [ ] Escribir wiki sobre la imagen de Docker de Pecas. ::: # Cómo está hecha: tesis de Maestría Esta receta reproduce la tesis de maestría _El creador y lo creado. La propiedad intelectual como supuesto en la producción cultural y filosófica_. ## Archivos de descarga El resultado del proceso de reproducción es accesible a través de [su micrositio](https://nikazhenya.gitlab.io/maestria-investigacion/) o en los siguientes enlaces: * [MD](https://maestria.perrotuerto.blog/tesis/tesis.md) * [HTML](https://maestria.perrotuerto.blog/tesis/tesis.html) * [PDF](https://maestria.perrotuerto.blog/tesis/tesis.pdf) * [EPUB](https://maestria.perrotuerto.blog/tesis/tesis.epub) * [MOBI](https://maestria.perrotuerto.blog/tesis/tesis.mobi) * [DOCX](https://maestria.perrotuerto.blog/tesis/tesis.docx) ## Manual de uso Esta publicación está almacenada como repositorio [Git](https://es.wikipedia.org/wiki/Git) y, por ello, puede reproducirse de dos maneras: 1. Remotamente desde [GitLab](https://gitlab.com/). 2. En local con un [contendor](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n_a_nivel_de_sistema_operativo). ### Reproducción remota desde GitLab Si no cuentas con equipo de cómputo o con las habilidades para usar un [emulador de terminal](https://es.wikipedia.org/wiki/Emulador_de_terminal), te recomendamos esta modalidad. Para reproducir esta publicación desde GitLab solo se requiere de una cuenta y de llevar a cabo una [bifurcación](https://es.wikipedia.org/wiki/Bifurcaci%C3%B3n_(desarrollo_de_software)) del [repositorio Git de este proyecto](https://gitlab.com/NikaZhenya/maestria-investigacion). :::warning Si no sabes cómo hacer una bifurcación en GitLab, visita [este enlace](https://pad.programando.li/ruweb:wiki:gitlab-forks). ::: ### Reproducción local con un contenedor Para la reproducción local se requiere de una computadora con los siguientes requisitos: * [Algún emulador de terminal](https://es.wikipedia.org/wiki/Emulador_de_terminal) * [Docker](https://www.docker.com/) * [Contenedor de Pecas](https://hub.docker.com/repository/docker/nikazhenya/pecas) Satisfechos, basta con ejecutar el siguiente comando dentro del contenedor de Pecas: ```shell= x ruweb https://pad.programando.li/f4lRqEUYT4meGRdVHdxQNA/download ``` :::warning Si no sabes cómo usar el contenedor de Pecas, visita [este enlace](https://pad.programando.li/ruweb:wiki:pecas-container). ::: ## Metadatos Para evitar repeticiones y facilitar el mantenimiento, a continuación se estipulan una serie de datos que permiten la reproducción de este proyecto editorial. Título: ```shell _title El creador y lo creado ``` Subtítulo: ```shell _subtitle La propiedad intelectual como supuesto en la producción cultural y filosófica ``` Autor: ```shell _author Ramiro Santa Ana Anguiano ``` Editorial: ```shell _press UNAM-FFyL ``` Editorial en formato $\TeX$: ```shell _press_tex \\textsc{unam-ff}y\\textsc{l} ``` Secciones: ```shell= _sections Agradecimientos Lista de siglas y acrónimos Introducción. Un tema filosófico desatendido Teorías de la propiedad intelectual Críticas de los bienes comunes Puntos de encuentro Conclusión. XXX Glosario Tareas pendientes ``` Identificadores de los pads para cada sección en el mismo orden al listado anterior: ```shell= _pads jlCAkyqDST-5HG8tQVPpQA Fvf4kt6zSDiygthmIN-xSA yic1NgzXRfqdEPnjtSHQFw 6Me0yOV0TluiGX-xuYnX-g vG2T2khBTW60tAOErUtQMw wMhXyjhBTyW__RVD5oWncA WnIO3M_nSYODaLiGGyd-Vw RuYyNvjeQ0WidMee7unIVQ jQwG6o40Sm20EGsncIS23w ``` Nombre del directorio contenedor de los ficheros: ```shell _root public ``` Nombre del fichero principal: ```shell _main tesis ``` Raíz a recursos comunes: ```shell _source https://gitlab.com/NikaZhenya/maestria-investigacion/-/raw/ed1/ ``` Recursos comunes: ```shell _assets assets/bib/bibliografia.bib assets/bib/bibliografia.html assets/bib/config.yaml assets/epub/000-portada.xhtml assets/epub/001-portadilla.xhtml assets/epub/002-legal.xhtml assets/epub/999-colofon.xhtml assets/epub/metadata.yaml assets/epub/portada.jpg assets/html/toc.js assets/html/tocbot.css assets/html/tocbot.min.js assets/pdf/portada.pdf assets/pdf/template.tex assets/web/index.html assets/web/styles.css ``` ## Procedimiento Ambas modalidades (desde GitLab o en local) para reproducir _El creador y lo creado_ ejecutan este documento con [RuWEB](https://pad.programando.li/ruweb): > un [preprocesador](https://en.wikipedia.org/wiki/Preprocessor) de [programación literaria](http://www.literateprogramming.com/knuthweb.pdf) multilingüe y [colaborativo en tiempo cuasireal](https://en.wikipedia.org/wiki/Collaborative_real-time_editor) a partir de [pads](https://en.wikipedia.org/wiki/Notebook) con sintaxis [Markdown](https://es.wikipedia.org/wiki/Markdown). Es decir, RuWEB permite ejecutar textos en Markdown en cuyo proceso de escritura puede usarse una plataforma de pads como [Etherpad](https://etherpad.org), [HackMD](https://hackmd.io), [CodiMD](https://github.com/hackmdio/codimd), [HedgeDoc](https://hedgedoc.org) o [CryptPad](https://cryptpad.fr). RuWEB es el «estado del arte» de la unidad de trabajo [Programando LIBREros](https://programando.li/breros) en su búsqueda por publicar, desde una sola fuente y con _software_ libre o de código abierto ([FOSS](https://es.wikipedia.org/wiki/Software_libre_y_de_c%C3%B3digo_abierto), por sus siglas en inglés), una multiplicidad de formatos de manera automatizada. Esta punta de lanza de dicha unidad es una respuesta a las limitaciones técnicas que se nos empezaron a ser patentes con el pasar de los años. A través de macros que se ven más adelante, RuWEB lleva a cabo esta estructura de ejecución: ```bash= echo "🌑 [1/9] Generando árbol de directorios" _genera_directorios ruby << EOF puts "🌒 [2/9] Descargando recursos comunes" _guarda_assets puts "🌓 [3/9] Descargando contenidos" _guarda_texto EOF echo "🌔 [4/9] Incorporando bibliografía con BabyBiber" _incorpora_bib echo "🌕 [5/9] Produciendo HTML con Pecas y Pandoc" _produce_html ruby << EOF _modifica_html _modifica_datos_para_docx _modifica_datos_de_plantillas EOF echo "🌖 [6/9] Produciendo PDF con ExportPDF" _produce_pdf echo "🌗 [7/9] Produciendo EPUB y MOBI con Pecas" _produce_ebooks echo "🌘 [8/9] Produciendo DOCX con Pandoc" _produce_docx echo "🌑 [9/9] Incorporando sitio" _incorpora_sitio ``` ### Generación de árbol de directorios Genera directorios necesarios para la reproducción: ```ruby= _genera_directorios if [[ -d "_root" ]]; then rm -rf _root; fi mkdir -p \ _root/assets/bib \ _root/assets/epub \ _root/assets/html \ _root/assets/pdf \ _root/assets/web \ _root/_main ``` ### Descarga de recursos comunes La publicación requiere de algunos recursos como bibliografía y plantillas para poder ser reproducida. Guarda los recursos comunes: ```ruby= _guarda_assets url = %q[_source] els = %q[_assets].split("\n") els.each do |asset| puts " => '#{File.basename(asset)}'" system "curl -so _root/#{asset} #{url}#{asset}" end ``` ### Descarga de textos Guarda los textos en un solo archivo de [Markdown](https://en.wikipedia.org/wiki/Markdown): ```ruby= _guarda_texto require 'open-uri' def download(pad, tit) puts " => '#{tit}'" clean(URI.open("https://pad.programando.li/#{pad}/download").read, tit) end def clean(content, tit) content.gsub(/^---(\n|.)+?\n# /) { |m| "# " # Quita metadatos de origen }.gsub(/#\w+:\S+/) { |m| tit # Añade título }.gsub(/v#\w+/) { |m| "+++#{m[2..-1]}+++".gsub('_+++', '+++_') # Añade versalitas }.gsub(/\u0023frances/) { |m| "{.#{m[1..-1]}}" # Añade párrafos franceses } end main = '' name = '_main.raw.md' tits = %q[_sections].split("\n") pads = %q[_pads].split("\n") pads.each_with_index do |pad, i| main += "#{download(pad, tits[i])}\n\n" end File.open("_root/_main/#{name}", 'w') { |f| f.write main.strip } ``` ### Modificación de plantillas Modifica los datos de las plantillas para incrustar los metadatos: ```ruby= _modifica_datos_de_plantillas def get_date months = %W[ enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre ] "#{Time.now.day} de #{months[Time.now.month - 1]} del #{Time.now.year}" end files = %W[ _root/assets/epub/*.yaml _root/assets/epub/*.xhtml _root/assets/web/*.html ] Dir.glob(files) do |path| file = File.read(path) file.gsub!('@title', '_title') file.gsub!('@subtitle', '_subtitle') file.gsub!('@author', '_author') file.gsub!('@press', '_press') file.gsub!('@timestamp', Time.now.to_i.to_s) file.gsub!('@year', Time.now.year.to_s) file.gsub!('@date', get_date) File.open(path, 'w') { |f| f.write file.strip } end ``` ### Incorporación de bibliografía Añade la bibliografía al fichero principal con BabyBiber: ```sh= _incorpora_bib baby-biber --bib="_root/assets/bib/bibliografia.bib" \ --yaml="_root/assets/bib/config.yaml" \ _root/_main/_main.raw.md mv _root/_main/*with-bib.md _root/_main/_main.md ``` ### Producción de HTML Convierte el fichero principal a HTML con un [_wrapper_](https://en.wikipedia.org/wiki/Wrapper_function) de [Pandoc](https://pandoc.org/): ```sh= _produce_html pc-pandog -i _root/_main/_main.md -o _root/_main/_main.html ``` Modifica el HTML producido: ```ruby= _modifica_html path = '_root/_main/_main.html' file = File.read(path) file.gsub!(/<title>.+<\/title>/) {|m| %Q[ <meta name="viewport" content="width=device-width, user-scalable=no"> <title>_title</title> <script src="../assets/html/tocbot.min.js"></script> <script src="../assets/html/toc.js"></script> <link rel="stylesheet" href="../assets/html/tocbot.css"> ] }.gsub!(/<style>.+<\/style>/) {|m| %Q[ <nav class="toc toc-left js-toc is-position-fixed"></nav> <div class="content"> #{m} ] }.gsub!(/<\/body>/) {|m| %Q[ </div> #{m} ] }.gsub!(/definicion">1\./) {|m| %Q[definicion1">1.] }.gsub!(/<a/) {|m| %Q[<a target="_blank"] } File.open(path, 'w') { |f| f.write file.strip } ``` ### Producción de PDF Convierte el fichero principal a PDF con [ExportPDF](https://gitlab.com/-/snippets/1917490): ```sh= _produce_pdf export-pdf --title="_title" \ --author="_author" \ --press="_press_tex" \ --template="_root/assets/pdf/template.tex" \ --ragged-right --leave-h1 \ _root/_main/_main.md pdfjam _root/assets/pdf/portada.pdf _root/_main/_main.pdf -o _root/_main/_main.pdf ``` ### Producción de EPUB y MOBI Convierte el fichero principal a EPUB y MOBI con Pecas: ```sh= _produce_ebooks pc-automata --init && cd epub-automata pc-automata -f ../_root/_main/_main.md \ -y ../_root/assets/epub/metadata.yaml \ -c ../_root/assets/epub/portada.jpg \ -i ../_root/assets/epub/ \ -x ../_root/assets/epub/ \ --no-pre --no-ace --overwrite mv epub-*_*.epub ../_root/_main/_main.epub mv mobi-* ../_root/_main/_main.mobi cd .. && rm -rf epub-automata ``` ### Producción de DOCX Modifica los datos para Pandoc: ```ruby= _modifica_datos_para_docx path = '_root/_main/_main.md' file = File.read(path) file.gsub!(/\u002b{2,}/, '') file.gsub!(/\s+{\s*.frances\s*}/, '') File.open("#{path}.markdown", 'w') { |f| f.write file.strip } ``` Convierte el fichero principal a DOCX con Pandoc: ```sh= _produce_docx pandoc -V lang:es _root/_main/_main.md.markdown -o _root/_main/_main.docx rm -rf _root/_main/_main.md.markdown ``` ### Incorporación de sitio Añade el sitio a la raíz del directorio contenedor: ```sh= _incorpora_sitio cp _root/assets/web/index.html _root ``` ## Licencia Este texto está bajo [Licencia Editorial Abierta y Libre (LEAL)](https://programando.li/bres). Con LEAL eres libre de usar, copiar, reeditar, modificar, distribuir o comercializar bajo las siguientes condiciones: * Los productos derivados o modificados han de heredar algún tipo de LEAL. * Los archivos editables y finales habrán de ser de acceso público. * El contenido no puede implicar difamación, explotación o vigilancia.