groff
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [eqn] error: invalid input (character code 159)


From: Alejandro Colomar
Subject: Re: [eqn] error: invalid input (character code 159)
Date: Fri, 10 Mar 2023 12:50:04 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0

Hi Ralph,

On 3/10/23 12:26, Ralph Corderoy wrote:
> Hi Alejandro,
> 
>>> I haven't studied what you're doing, but are you aware of preconv(1)?
> ...
>> So, the actual pipeline that I should be using is more like
>>
>>     preconv | tbl | eqn | troff | grotty
> 
> Yes.  The problem with groff(1) existing is it hides information and
> stops newcomers learning the basics.  :-)  ā€˜-Vā€™ helps.

The problem with man(1) existing is it hides information and stops
newcomers learning the basics.  Not even '-V' helps.  :-)

Heh, that's actually been quite true in my case, and I guess in the
case of many.  To me man(1) is still a black box (I have looked at its
source code occasionally, but not very often), and there's no way to
know what it's doing, since it provides no equivalent to groff(1)'s -V.

> 
>     $ groff -Tascii -kpt -V
>     preconv | pic | tbl | troff -Tascii | grotty
>     $

Does man(1) run pic(1)?  If so, I should also add it to the pipeline
in my testing.

> 
>> and then `... | col | grep` for checking the 80-col limit is respected
>> in the output.  Right?
> 
> col would need at least -x and -b. 

Yup, I run -pbx (IIRC, per your recommendation).  I just showed the
commands without flags for simplicity.  The acutal pipeline that I
run is this:


$ touch man2/membarrier.2 
$ make lint-man-groff V=1 | grep -v LINT
preconv   man2/membarrier.2 >tmp/lint/man2/membarrier.2.tbl
tbl <tmp/lint/man2/membarrier.2.tbl >tmp/lint/man2/membarrier.2.eqn
eqn -Tutf8  <tmp/lint/man2/membarrier.2.eqn 2>&1 
>tmp/lint/man2/membarrier.2.troff \
| ( ! grep . )
troff -man -t -M ./etc/groff/tmac -m checkstyle -rCHECKSTYLE=3 -ww -Tutf8 
-rLL=78n  <tmp/lint/man2/membarrier.2.troff >tmp/lint/man2/membarrier.2.grotty
grotty -c  <tmp/lint/man2/membarrier.2.grotty >tmp/lint/man2/membarrier.2.col
col -b -p -x  <tmp/lint/man2/membarrier.2.col >tmp/lint/man2/membarrier.2.grep
! grep -n '.\{80\}.' tmp/lint/man2/membarrier.2.grep /dev/null >&2
touch tmp/lint/man2/membarrier.2.lint-man.groff.touch


Please feel free to comment if you see anything that could be improved
there.  BTW, you may notice I added some trick to make eqn(1) fail:

<https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/commit/?id=e728d5d1e639e5c803a84480ad727e7b02bac222>


> I'd check grotty(1) to see its
> options can remove the need for col.

Nah, col(1) is fine.  That way, we may even teach some casual readers
that it exists, and can be useful.

> 
>> Do you recommend that I use a fallback-encoding (-D)?  Or should it be
>> unnecessary?
> 
> If this is within your environment then I'd have thought the testing
> framework would mean -D is not needed.

So far it seems it's not needed.  After adding plain `preconv` to the
pipeline, everything works.

<https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/commit/?id=7c6ae1a3ee9a43124490b32d1b462e97cb38441b>


Cheers,
Alex

-- 
<http://www.alejandro-colomar.es/>
GPG key fingerprint: A9348594CE31283A826FBDD8D57633D441E25BB5

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]