From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms8.migadu.com with LMTPS id 6IGbNsFZumWFBQEAe85BDQ:P1 (envelope-from ) for ; Wed, 31 Jan 2024 15:31:30 +0100 Received: from aspmx1.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2.migadu.com with LMTPS id 6IGbNsFZumWFBQEAe85BDQ (envelope-from ) for ; Wed, 31 Jan 2024 15:31:30 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=posteo.net header.s=2017 header.b=iFNlQ7sJ; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=posteo.net ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1706711489; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=E7aFHp/YapOl34hhJBMN5w8Ov5wMEPfcY+9ISgpu84o=; b=g6JCM2YKWdJ6v46nEoXRj1VdKhJquP12Afmmq+yXz0t4zY8TnxntwqGITyx4HDgabXT8ed dRDlmfFWIMHo9AQuLpDr/K0fNOE+nOGREuCOJ7nvX9LACd1GIoMd5qVISFmdU6oCLubYKx px0PXarXeKe/17eOc7fUaKLkp+7OV2kzjrCwuAdLDkt5zFIHEF+ppeBM56JQwR0dC4Y6oY 7QkSm6iQJKIrk30V2fXSrwRqaLMdiQIWgIsy86qGmHPMWDjSHqSUzaVPBg8QOyhOYALgME XzQihkh+BWn2CZ3htQprHhQH2truuYVjGOWF34RxzioUFC2yZnRvXgp4G+kdTA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=posteo.net header.s=2017 header.b=iFNlQ7sJ; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=posteo.net ARC-Seal: i=1; s=key1; d=yhetil.org; t=1706711489; a=rsa-sha256; cv=none; b=XJtJMURd+2heDfADMFGWV+9XcgXRUpBqMVJooBvzGA815JX2GObeh59eMORdDjZP8daLxR M8FRp4BJW753JdgVtQwlytsZPLgpmdjQSGrkpkMklBuz68shUNKku+HVziQpZp76AoyrIo XV22f6DUpAXGpi6VPG4lFbIpLbS8vfDQKUjWcIPTfHQziR803xfCYE6n/Acmu9EIgywx+p O9bdvUbn5CAPpftVR8t53Ow+i3agEyqyXKiBFyYyJPmpGw62rDHUazXE6sm0waCLRmWYwi ZtV0Cqs/ADEFQSrAJ+zAqYStwxC4vW/gfos3I47xt8uNZA8DP4gjt7Vhnb+o1w== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id A55D746634 for ; Wed, 31 Jan 2024 15:31:29 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rVBbr-0002Qi-9Z; Wed, 31 Jan 2024 09:30:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rVBbn-0002OR-Fx for emacs-orgmode@gnu.org; Wed, 31 Jan 2024 09:30:37 -0500 Received: from mout02.posteo.de ([185.67.36.66]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rVBbi-00053F-7W for emacs-orgmode@gnu.org; Wed, 31 Jan 2024 09:30:35 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 5BFAF240105 for ; Wed, 31 Jan 2024 15:30:26 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1706711426; bh=sD5tyCVl4OORAqEfgDb1TJsijVgPqmxl4N5NKTl9758=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type: Content-Transfer-Encoding:From; b=iFNlQ7sJcQ8Ku6EmyFcIUDEu60TIseVSP6vAaf7xDpZta515do67XHoieWNWL4hi8 LTnP9UartIHw31qfzuFOysCPSMMVrSQzUZ9PuyX2hs2QP8LG8dyrXXVF0nTweghPGL Y1DSUHYB1xHn5BpV1iOeU6aAZeuG52EERXjIqUyfRxNrjLTAnez3lCVWIaBbRgH1Ez weXwdxAwCsqE76eqpBZmcS9Mh1+WsUK+B5xbaGe5COWR1TMWLESnB/CChm2FCjzgwX jrcgHzh+aDbRROtHH64H0Zk1Ue3RYp6BW5BRIHr5zgxUF7M2xS1X/WgJoKNNrGi9kL CALknyQvUloUQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4TQ4FY65MVz6tvy; Wed, 31 Jan 2024 15:30:25 +0100 (CET) From: =?utf-8?Q?Juan_Manuel_Mac=C3=ADas?= To: "Dr. Arne Babenhauserheide" Cc: emacs-orgmode@gnu.org Subject: Re: An academic journal entirely made in Org-Mode In-Reply-To: <87a5onlo9l.fsf@web.de> (Arne Babenhauserheide's message of "Tue, 30 Jan 2024 00:16:29 +0100") References: <87y1c7aovb.fsf@posteo.net> <87a5onlo9l.fsf@web.de> Date: Wed, 31 Jan 2024 14:30:23 +0000 Message-ID: <874jetlgn4.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=185.67.36.66; envelope-from=maciaschain@posteo.net; helo=mout02.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: emacs-orgmode-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Spam-Score: -10.38 X-Migadu-Scanner: mx13.migadu.com X-Spam-Score: -10.38 X-Migadu-Queue-Id: A55D746634 X-TUID: p6Ppj2VUw7Fq Hi, Arne, thank you for your comments. Dr. Arne Babenhauserheide writes: > Hi, > > Juan Manuel Mac=C3=ADas writes: > >> Org-Publish and LuaTeX. If anyone is interested in the code I used for >> specific aspects of the publication, I can share it here :-). > > That sounds very interesting! I=E2=80=99m writing roleplaying books and my > website with org-mode and since there are many small pieces I found over > the years, I expect that the solved problems for a journal will be very > educational! I am currently responsible for the production of five academic journals, and I have ended up developing a fairly productive workflow using org/luatex. A little background on the matter: in my editorial design work I used to work only in (La)TeX, but I discovered that org can function as a fairly competent high-level interface to LaTeX. One of the main advantages is the clarity that a light markup language brings to the content, since pure LaTeX code is cumbersome. I know LaTeX code reasonably well (in fact, I'm working on a couple of packages for LuaLaTeX), but it's not comfortable for me to work on content. Naturally, for heavy and complex jobs, post-processing is always necessary. Org is still very useful as it is not only a lightweight markup language but also a set of tools. And, loosely speaking, a work environment on Emacs (which in itself is a work environment). The main challenge of this workflow is obtaining the content, the data, from the Word documents that the authors deliver, since, unfortunately, everyone uses Word. Pandoc does a good job, as long as the Word documents arrive reasonably well structured. Unfortunately, this is not the case, at least in Humanities. Word documents usually have the following defects: - abuse of direct format;=20 - absence of applied styles, therefore it is impossible to obtain a hierarchical outline of the document; - absence of an automated system of bibliographies and citations. Humanities authors don't even use "friendly" things like Zotero. That is, Humanities authors make citations and bibliographies by hand (!!), which means multiplying inconsistencies and typos. Therefore, it is necessary to subject the original Word documents to a cleaning process. Then I run pandoc using some templates and some custom lua filters. The journal is basically an org-publish project, where only the articles and other parts are exported to *.tex files. There is a master document that I export and compile using a function that runs latexmk in interactive mode. This way I have more control over the parts, I can deactivate nodes, etc. Each node, therefore, is an article, with a series of properties: author, email, orcid-id, doi, title in English, etc. In a sty document created ad hoc I have defined a series of LaTeX variables, and then incorporated them into each heading. E.g.: #+begin_src latex \def\@author{} \newcommand\author[1]{\def\@author{#1}} \def\@mail{} \newcommand\mail[1]{\def\@mail{#1}} \def\@doi{} \newcommand\doi[1]{\def\@doi{DOI: #1}} etc... #+end_src I use org-capture to populate the nodes in the master document with all that information. >> https://recyt.fecyt.es/index.php/rel/issue/view/4327/948 > > One small thing: the boxes for the abstract look pretty nice! How to > create the complex tables on page 109ff would also be great to know. The boxes are made with the mdframed package, which is very versatile for t= his type of objets. The code used: #+begin_src latex \usepackage[framemethod=3Dtikz,everyline=3Dtrue]{mdframed} #+end_src A box style: #+begin_src latex \colorlet{background}{gray!7} \mdfdefinestyle{mdabstracts}{% linewidth=3D.3pt, topline =3D true, leftline =3Dtrue, rightline =3D true, bottomline =3D true, skipabove=3D0pt, skipbelow=3D2\bigskipamount,=20 leftmargin=3D0em, backgroundcolor=3Dbackground, roundcorner =3D 5pt, innerleftmargin=3D1.5em, rightmargin=3D0em, innerrightmargin=3D1.5em, innertopmargin=3D1em, splittopskip=3D\topskip, innerbottommargin=3D1em, } #+end_src And an environment: #+begin_src latex \newmdenv[style=3Dmdabstracts]{abstracts} #+end_src As for tables, I always try to apply the ideas of Edward Tufte. I use the b= ooktabs package with some modifications. An example of a table: https://i.imgur.com/70NtdGb.png Here I use these two macros: #+macro: cmd @@latex:\cmidrule(rl){$1}@@ #+macro: mc @@latex:\multicolumn{$1}{$2}{$3}@@ And this filter for multicolumn rows (simply, the cells that contain "!!" a= re removed: #+BIND: org-export-filter-table-functions (my-multicolumn-filter) #+begin_src emacs-lisp :exports results :results none (defun my-multicolumn-flilter (texto backend info) (when (org-export-derived-backend-p backend 'latex) (replace-regexp-in-string "&\s+!!" "" texto))) #+end_src Best regards, Juan Manuel=20