From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms13.migadu.com with LMTPS id uHGPD5U1dWeNDwEAe85BDQ:P1 (envelope-from ) for ; Wed, 01 Jan 2025 12:31:17 +0000 Received: from aspmx1.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2.migadu.com with LMTPS id uHGPD5U1dWeNDwEAe85BDQ (envelope-from ) for ; Wed, 01 Jan 2025 13:31:17 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=disroot.org header.s=mail header.b=iP+srksq; 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=reject) header.from=disroot.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1735734677; 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=TuyzI4h9H2+YjrMtl690XsGSs5sifmcOsXDVwwFwD7g=; b=F4dZYKx+fUI8uUztw1mFVBwIN3jrFFgnLQeKatVdc0TN/99DpktnlMNj2GMY9nHmWWJatl w9zJhjgqhTVcRUno3EjnPIYeUMeArzgu+TJH8A7JwyY3uFm0VhbgwGZ3G31Etdni82dCbx eW3RR/pYdZhy0zdNSBcsyQr+8sZSnNu0YJ/64mm1m1O8i/c8JPRG7351IwpMSETBRtWozY X6EfqhaV1dxpNuE7wzAXlOWgyaz4lehyf2jsggUFdtPqVAJpGReGgk8gdTHsj368dHeOcv TtUQcHvxHrcf99grtfAtiBVg6KO+BbthYy+0Is65ymfUL7sVVap+Kg9UDTLINA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=disroot.org header.s=mail header.b=iP+srksq; 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=reject) header.from=disroot.org ARC-Seal: i=1; s=key1; d=yhetil.org; t=1735734677; a=rsa-sha256; cv=none; b=lm/5wL61KiYqiGTZoXQ+zASpyNMNusimrhQcy6yYpYW6IcfJpnsov+q+qi/sYK2UFeL/US p7tSTbd1Ml6V6S2ppART7VJxewGz4seeJAIuPOfLLSk+3oVGQ0yTG2p1aeZ99xOOH5vJk+ fj4YkSSUFTch+x7csFZOhV4F+bmWzcMSvYVisA3W/N/n1Ztd7IoRtBRg4s8PSpo3e+Q5NF PC++dXBpe2cuWUEAiN0UfFSi6bvC/yQ127bVdNSd1JtCrTZsYa8fXcp5hdpnxb+K75rSzS sY3WcZfbf7KdEiHSHCYur7000IAeQXiegsRDkIqlnOJQzl7BLSyeFUMlXzd02w== 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 8F040233B5 for ; Wed, 01 Jan 2025 13:31:16 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tSxrn-0004Rx-Bn; Wed, 01 Jan 2025 07:30:27 -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 1tSxrc-0004Qv-BG; Wed, 01 Jan 2025 07:30:18 -0500 Received: from layka.disroot.org ([178.21.23.139]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tSxra-0008M2-0k; Wed, 01 Jan 2025 07:30:16 -0500 Received: from mail01.disroot.lan (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 8CC1025770; Wed, 1 Jan 2025 13:30:11 +0100 (CET) X-Virus-Scanned: SPAM Filter at disroot.org Received: from layka.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id m0efaBkbsjjn; Wed, 1 Jan 2025 13:30:06 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1735734606; bh=vtHXJJZqA+P+M+sSRTcoAvIqAzKbb5rul0ts3MDKZYQ=; h=Date:Cc:Subject:From:To:References:In-Reply-To; b=iP+srksqmmKd+Rp605Q33VDwJIK95zdK/Uj6GydCKsFQp7RgJ84Z0DPrFbFP7LnIX hGk3Q3UXstLG+vlJVJPdO46LXJ3o6SoQB87Su6FtFWexn0PyWCcrzO8f0JQrXsOTwx FZo8FQHCm8fqo1D8cDzTF36VXEtT7TJYAcIdyZcXK6e9HtlcrjHYAGQmRQOlfjVDyZ AsQiBzEnO1Wvlc/9V0ZWurutOHQlTygpaJM/rxu9y7Yqo12o1PVbNZsrscp0f7bwuI rdMNBJbtWHFG8wOLGWUw/Y934ZE+kROcWADzG/GlSygJIHfJVmElpSMN83OWkYkMjB 42XLDv1caHmCw== Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Wed, 01 Jan 2025 13:30:05 +0100 Message-Id: Cc: "G. Branden Robinson" , , , "Ingo Schwarze" Subject: Re: [BUG] "\fC" macro in ox-man.el [9.6.15 (release_9.6.15 @ /usr/share/emacs/29.2/lisp/org/)] From: "onf" To: "Ihor Radchenko" References: <20241218172040.tyytdhbyl7annyli@illithid> <87ttav7mii.fsf@localhost> <20241231170034.nzmponxxjppqrhf5@illithid> <87bjwrhg6a.fsf@localhost> <87o70qg9gi.fsf@localhost> In-Reply-To: <87o70qg9gi.fsf@localhost> Received-SPF: pass client-ip=178.21.23.139; envelope-from=onf@disroot.org; helo=layka.disroot.org X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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-Scanner: mx12.migadu.com X-Migadu-Spam-Score: -4.01 X-Spam-Score: -4.01 X-Migadu-Queue-Id: 8F040233B5 X-TUID: kgLP/r8P+k2c On Wed Jan 1, 2025 at 10:38 AM CET, Ihor Radchenko wrote: > >> Also, what if we leave \fC and add \f[CR]/.EX on top? > >> AFAIU, the worst case scenario for \fC is that it does nothing. By > >> leaving it there, we thus retain old working exports working while als= o > >> adding appropriate format when \f[CR] is supported. > > > > The \f escape sets current font. \fP restores previous font. > > What this means is that doing \fC\f[CR]Lorem\fP: > > (1) sets the text Lorem in Courier if font name C or CR exists > > (2) restores previous font if neither font C nor CR exists > > (3) sets font to Courier if both font name C and CR exist > > What about \fC\f[CR]Lorem\fP\fP? (1) if both C and CR exist, sets Lorem in Courier (2) if only C or CR exists, sets font to Courier (3) if neither exists, does nothing To understand #2, let's assume that C is defined and CR is not. Then: \fC -> set font to C \f[CR] -> ignored \fP -> restore previous font, set previous font to C \fP -> restore previous font (back to C) It's important to understand that troff commands don't really use nesting or a stack as one might be used to from HTML and similar markup languages. That's why it's also not possible to e.g. nest bold and italic like this: Normal \fBbold \fIbold-italic\fP bold\fP normal ...which actually gives you: Normal bold italic bold italic One has to do one of these instead: Normal \fBbold \f[BI]bold-italic\fP bold\fR normal Normal \fBbold \f[BI]bold-italic\fB bold\fR normal Normal \fBbold\fP \f[BI]bold-italic\fP \fBbold\fP normal > >> Do I understand correctly that blank line is sometimes interpreted as > >> vertical spacing and sometimes ignored? > > > > A blank input line is equivalent to .sp unless the .blm request was cal= led > > to change this behavior. .blm is groff's invention (see groff_diff(7)). > > Then maybe we can put .sp explicitly instead of a blank line. > In our code, we add blank after blocks (or displays) of code. Extra > vertical space after seems to be reasonable. They are equivalent as far as troff formatters are concerned. The question is whether they are equivalent to the various other programs that attempt to interpret man source code directly. So I guess this depends on whether you're targetting only troff (+ BSD mandoc) or not. Branden will likely tell you more about this topic. ~ onf