pandoc - markdown para man pages de páginas não formatadas (em msys2)

2

Estou tentando usar o pandoc (se alguém tiver um programa de conversão melhor eu sou todo ouvidos, por favor não dependente do ruby) para converter arquivos markdown em manpages. Funciona bem até eu fazer um doc com uma mesa. Aqui está meu documento de teste:

% Author Man
% TEST(1) This is a test | Version .01
% 18-April-2016

# Header1

# Format

foo

+-----------+-----------+-----------+
| linenum-1 | two       | three     |
|===========+===========+===========+
| three     | four      | fove      |
| 6         | 7         | 8         |
+-----------+-----------+-----------+

| linenum-1 | two       | three     |
|-----------|-----------|-----------|
| three     | four      | fove      |
| 6         | 7         | 8         |

| linenum-1 | two       | three
|-----------|-----------|--------:
| three     | four      | fove
| 6         | 7         | 8

I WAS HERE

| linenum-1 | two       | three
|---        |---        |---
| three     | four      | fove
| 6         | 7         | 8

here is some text

_italics_

**bold**

eu estava usando

pandoc.exe -s -f markdown -t man ~/test.md | man -p t -l -

(Eu tentei com e sem o -p t para forçar o pré-processador tbl ) com o mesmo resultado:

Author Man()                                                                        Author Man()

Header1
Format
       foo

       tab(@); lw(11.7n) lw(11.7n) lw(11.7n).  T{

       linenum-1 ===========+ three 6 T}@T{

       two ===========+ four 7 T}@T{

       three ===========+ fove 8 T}

       tab(@); l l l.  T{ linenum-1 T}@T{ two T}@T{ three T} _ T{ three T}@T{ four T}@T{ fove T}
       T{ 6 T}@T{ 7 T}@T{ 8 T}

       tab(@); l l r.  T{ linenum-1 T}@T{ two T}@T{ three T} _ T{ three T}@T{ four T}@T{ fove T}
       T{ 6 T}@T{ 7 T}@T{ 8 T}

       I WAS HERE

       tab(@); l l l.  T{ linenum-1 T}@T{ two T}@T{ three T} _ T{ three T}@T{ four T}@T{ fove T}
       T{ 6 T}@T{ 7 T}@T{ 8 T}

       here is some text

       italics

       bold

AUTHORS
       TEST(1) This is a test | Version .01.

                                          18-April-2016                             Author Man()

A saída bruta sem canalizar para man é:

.\"t
.\" Automatically generated by Pandoc 1.17.0.2
.\"
.TH "Author Man" "" "18\-April\-2016" "" ""
.hy
.SH Header1
.SH Format
.PP
foo
.PP
.TS
tab(@);
lw(11.7n) lw(11.7n) lw(11.7n).
T{
.PP
linenum\-1 ===========+ three 6
T}@T{
.PP
two ===========+ four 7
T}@T{
.PP
three ===========+ fove 8
T}
.TE
.PP
.TS
tab(@);
l l l.
T{
linenum\-1
T}@T{
two
T}@T{
three
T}
_
T{
three
T}@T{
four
T}@T{
fove
T}
T{
6
T}@T{
7
T}@T{
8
T}
.TE
.PP
.TS
tab(@);
l l r.
T{
linenum\-1
T}@T{
two
T}@T{
three
T}
_
T{
three
T}@T{
four
T}@T{
fove
T}
T{
6
T}@T{
7
T}@T{
8
T}
.TE
.PP
I WAS HERE
.PP
.TS
tab(@);
l l l.
T{
linenum\-1
T}@T{
two
T}@T{
three
T}
_
T{
three
T}@T{
four
T}@T{
fove
T}
T{
6
T}@T{
7
T}@T{
8
T}
.TE
.PP
here is some text
.PP
\f[I]italics\f[]
.PP
\f[B]bold\f[]
.SH AUTHORS
TEST(1) This is a test | Version .01.

Com o -d flag recebo muito, mas apenas o último bit parece ser aplicável:

final search path = /mingw64/share/man:/usr/share/man
restore_cwd: 3 (null)
pre-processors 't' from command line
page_encoding = UTF-8
source_encoding = ISO-8859-1
roff_encoding = ISO-8859-1
Terminal width 102
Terminal width 102 not within cat page range [80, 80]
formatted_encoding = UTF-8
opening -
opened -

E a parte divertida ...

O pandoc no meu debian 8.3 box gerou a mesma saída, mas o manpages exibe tudo bem no debian / linux.

Para uma comparação

janelas

  • pandoc.exe 1.17.0.2
  • man 2.7.4
  • GNU tbl (groff) versão 1.22.3

linux

  • pandoc 1.12.4.2 [linux]
  • man 2.7.0.2

Eu tenho lido por man man man groff_man man tbl etc por horas agora e não estou mais perto de resolver isso. Qualquer ideias aqui seria muito apreciada !!

Obrigado -Eric

Editar - 1

O problema é sem dúvida man e associado groff system no windows / msys. A saída pandoc funciona bem no linux.

Eu encontrei e tentei um programa de renderização alternativo:

link

Qual não tem problema exibir a saída do pandoc com o formato

mandoc.exe foo.man.1 | less

Tentando novamente um mais direto

cat foo.man.1 | nroff -mandoc -Tlatin1 | less

Tem exatamente o mesmo efeito que chamar man -l -

Eu então tentei baixar os binários do gnuwin32 direto e tive o mesmo resultado novamente

cat foo.man.1 | Downloads/groff-1.20.1-bin/bin/nroff -mandoc -Tlatin1 | less
    
por ehiller 19.04.2016 / 07:49

1 resposta

1

Bem, aparentemente eu estou um pouco lento esta semana ...

correção mais simples imaginável, e eu só perdi 3 dias:

pandoc.exe -s -f markdown -t man ~/test.md | dos2unix.exe | man -l -

(a chave é a introdução de dos2unix.exe no mix)

Produz um belo:

Author Man()                                                                                                                                                                             Author Man()

Header1
Format
       foo

              linenum-1             two                   three
              ===========+          ===========+          ===========+
              three                 four                  fove
              6                     7                     8

       linenum-1   two    three
       ─────────────────────────
       three       four   fove
       6           7      8

       linenum-1   two    three
       ─────────────────────────
       three       four    fove
       6           7          8

       I WAS HERE

       linenum-1   two    three
       ─────────────────────────
       three       four   fove
       6           7      8

       here is some text

       italics

       bold

AUTHORS
       TEST(1) This is a test | Version .01.

                                                                                            18-April-2016                                                                                Author Man()
    
por 21.04.2016 / 07:22