From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id UOBJNQ7lkWKGMAEAbAwnHQ (envelope-from ) for ; Sat, 28 May 2022 11:02:06 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id 6DUHNQ7lkWJSmQAAauVa8A (envelope-from ) for ; Sat, 28 May 2022 11:02:06 +0200 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 3CF174788 for ; Sat, 28 May 2022 11:02:06 +0200 (CEST) Received: from localhost ([::1]:43124 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nusKj-0001EY-9c for larch@yhetil.org; Sat, 28 May 2022 05:02:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36904) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nusHu-0001EI-WB for emacs-orgmode@gnu.org; Sat, 28 May 2022 04:59:11 -0400 Received: from mout01.posteo.de ([185.67.36.65]:38005) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nusHs-0000al-HI for emacs-orgmode@gnu.org; Sat, 28 May 2022 04:59:10 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 45AA6240026 for ; Sat, 28 May 2022 10:59:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1653728346; bh=0/vpvynXRA3RAozafIqJM1J+2t+yEEa5sIJWYbWeQzQ=; h=From:To:Cc:Subject:Date:From; b=no5xlkMIiavBKOGuCoT3dCnB/Q1qZIXaml6CdwVznqxldgSsE9iQolziiLYYVDocM HeSjlSV6lx3J6Eykk87oOA6j///W70gC6BwsI9UUh39VMGOgmKOTIFqBGRJsFs9yuq c3DA23312UoaaTD8GyIvmRF/aV64n3tWW5H33Tow4wdy8T8ytLIuI4014ihMrGuh3i yLpLO9038PNY+9AIgSH1pZ7Lb/I5ybwqW1snbacV0xmd77jA2RNWppt25xrII9zzTk h5Rtc3e1ICCq3kUwdDnWEXOaOwsjrnSMgYeIRfC1xP/ycM1VebgRrUpgdQXINHUVLQ BeU5zzKCJKqtA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4L9Fw94m69z9rxG; Sat, 28 May 2022 10:59:05 +0200 (CEST) From: =?utf-8?Q?Juan_Manuel_Mac=C3=ADas?= To: Ihor Radchenko Cc: orgmode Subject: Re: [tip] org-publish to work with (very) large books References: <87y1yovcip.fsf@posteo.net> <87a6b4pil3.fsf@christianmoe.com> <87a6b4zbew.fsf@localhost> <87tu9cv1yw.fsf@posteo.net> <87y1yntxob.fsf@localhost> <87pmjzmcg6.fsf@posteo.net> <871qwee4vr.fsf@localhost> Date: Sat, 28 May 2022 08:59:03 +0000 In-Reply-To: <871qwee4vr.fsf@localhost> (Ihor Radchenko's message of "Sat, 28 May 2022 11:02:32 +0800") Message-ID: <877d66vxrc.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=185.67.36.65; envelope-from=maciaschain@posteo.net; helo=mout01.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, 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" X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1653728526; 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:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=xDX4cyJTlX1gSnmwWv9XhX/w8ovvlVU7PhNeDWpbz08=; b=K/GxslACYPMHDXlfpCdFHIzH5DCEWakjybJDf1dZ+s8Nm60n5TKavI3jz2gXZIuJVcTkmL jIODudPMKcgw7DXqaq0DEdReVMyvq96i3igjqRSRUdG1f8SBoYCHso0Sypzk/xKH07DT8k hu7dGwXaelWcOfEkRpeKETarglDWfDuNKBCrweakECUPL0ir2arKjIozfRW7EuQhtKOUTj TN6KE9vN2bRg2iBLpkEu6xfywjRwpEosOYpKwVChUCFxPzhJsq2CsVhIlgVXwRyndtmRy4 7t9hgmu4WHh36mLbr7Ke9G3RRJKC4dfza+z00ahxPFv4kZv6TlvrdsjVvOXRfA== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1653728526; a=rsa-sha256; cv=none; b=laeYS0LX7xPLwIYsUihSXtxADPa19Rr/CYBacTn3ERXT0waw+OoqVIUlkBPvFDHMn5feih cbA+WREGE+DK3ad47vVkNWp9Ji6VcsZLXH5dIFJp5gydTGxsQMEX4PsJz3LWHPjjiLcUmM 8QpT7kF4rWkD2qdEj4HgdBsI7uRghbqIo4QyvgbvUZT9J7L59T9orUzdydGcD714H27Oi+ PDOQ62LltEw2rrkadwvH0cpG1DBSIVVUmJTXBZJ2JDXTpaN9kRt7NmLoIPIe3ehVxfSqH0 tEeIUIiolTtSN7A/FbqLg8OD83zMQedjDGa54tAbWwPmPPCnf58KLJlowdEOkA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=posteo.net header.s=2017 header.b=no5xlkMI; dmarc=pass (policy=none) header.from=posteo.net; 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" X-Migadu-Spam-Score: -2.75 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=posteo.net header.s=2017 header.b=no5xlkMI; dmarc=pass (policy=none) header.from=posteo.net; 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" X-Migadu-Queue-Id: 3CF174788 X-Spam-Score: -2.75 X-Migadu-Scanner: scn1.migadu.com X-TUID: EefaEG1WnnQf Ihor Radchenko writes: > A more advanced approach would be using > \include + \includeonly instead of \input: > > https://web.archive.org/web/20160627050806/http://www.howtotex.com/tips-tricks/faster-latex-part-i-compile-only-parts/ Yeah, \include and \includeonly save the .aux files for each part. However, I think choosing between \input, \include or \includeonly is not the important part here. I usually use \input for convenience, because I have not needed in the work done to make references between parts. You can choose any of the options, according to needs. Also this procedure can be made more complex. For example, sometimes (when it comes to a bilingual edition with facing pages), I also start from precompiled documents together with tex (subdocument) files. The precompiled documents are placed on the odd and even pages of the bilingual part: https://i.imgur.com/Jbjutmf.jpg > Also, FYI: > > https://web.archive.org/web/20160712215709/http://www.howtotex.com:80/tips-tricks/faster-latex-part-iv-use-a-precompiled-preamble/ Using a precompiled preamble can improve compilation sometimes, but other times it's not worth it. Also, I use a lot of code in Lua. When it comes to a very complex preamble, with lots of code, it is usually more practical to create a .sty file (that is, a package, in LaTeX parlance). The difference is that I prefer to use org and org-babel-tangle instead of the 'official' LaTeX suite docstript for writing packages, which I find horribly hard, especially compared to the ease of Org :-) Improving performance and compile time in TeX is an old topic, and there are a few tricks here and there. But TeX is what Emacs is, both are venerably old; and both are single-thread. There are more ''modern'' approaches, like Patoline or Sile (of course, based heavily on TeX, which is the father of everything). Sile, especially, is very interesting and from time to time I like to play with it. The problem with these new projects is that they don't have the LaTeX package ecosystem, and they are poorly documented. Well, Sile in particular is the work of a single person. Links: https://patoline.github.io/#documentation https://sile-typesetter.org/ As for LuaTeX, which is the state of the art today in the TeX ecosystem, it is nothing more than TeX + a lua interpreter + the implementation of advanced features from previous engines like pdfTeX and the experimental Omega/Alef. It has the advantage that it is a scriptable TeX (TeX primitives can be controlled by Lua scripts, and truly amazing things[1] can be achieved with very little effort[2]); it has the disadvantage that the scripting language is Lua. The ideal would have been a Lisp-TeX ;-) [1] The chickenize package contains many examples, some of them somewhat absurd and not very useful in appearance: https://www.ctan.org/pkg/chickenize [2] https://tug.org/TUGboat/tb31-3/tb99isambert.pdf >> The moment one breaks down a large piece of work into specialized parts, >> one gains more control over that piece of work. And org-publish helps >> manage all of that. It is about managing a large book as a website (via >> org-publish). In short, the combination of org-publish, projectile and >> latexmk is quite productive for me in this type of work. > > This is a bit confusing. You still keep the book in a single giant Org > file. It indeed does not mean anything given that we can always narrow > to subtree, but I fail to see where you break the book into specialized > parts then (LaTeX performance trickery aside). I think this is inaccurate. The book is split across multiple subdocuments. The master file is just the 'outline' of the book. Best regards, Juan Manuel