man2html 예:

man2html 예:

groff를 사용하지 않고 일부 Linux 매뉴얼 페이지를 HTML로 변환하고 싶습니다. groff에 대한 나의 편견은 Sabayon으로 제한되는 것처럼 보이는 일부 PNG 렌더링 문제를 발생시켰다는 것입니다(이 문제는 VirtualBox VM의 다른 배포에서는 발생하지 않는 것 같았습니다). 이것이 버그라는 것을 알고 있지만 가까운 시일 내에 해결책이 나올 것 같지 않아 Linux 매뉴얼 페이지를 HTML로 변환하는 다른 방법이 있는지 묻고 싶었습니다. HTML 페이지 사용http://linux.die.net/man내가 관심 있는 매뉴얼 페이지 중 일부가 존재하지 않기 때문에(예: emerge(1)존재하지 않음) 수용 가능한 솔루션이 아닙니다.

답변1

다음과 같은 많은 대안이 있습니다.로핏,트로피,man2html. Perl을 기반으로 한 온라인 매뉴얼 페이지 브라우저도 있습니다.인간 서버.

내가 가장 좋아하는 pandoc것은 불행히도 기본적으로 ROFF 입력을 지원하지 않는 것 같습니다(여러 변환 필터를 함께 연결해야 하는 경우 이를 사용할 수는 있지만).

man2html 예:

zcat /usr/share/man/man1/dd.1.gz \ 
    | man2html \
    | sudo tee /var/www/html/dd.html

Rofit의 예:

git clone git://github.com/bagder/roffit.git
cd roffit
zcat /usr/share/man/man1/dd.1.gz \
    | perl roffit \
    | sudo tee /var/www/html/dd-roffit.html

기타 도구:

답변2

이 첫 번째 포인트는 뻔뻔한 찢어짐공식 웹 사이트:

mandoc컴파일을 위한 도구 세트 mdoc, roffBSD 맨페이지용 매크로 언어 선택, manUNIX 맨페이지용 주요 역사적 언어입니다. 작고 ISO C, ISC 라이센스가 있으며 매우 빠릅니다. 도구 세트의 주요 구성 요소는 출력을 UNIX 터미널로 형식화하기 위한 검증 컴파일러 mandoc기반 유틸리티입니다.libmandoc(와이드 문자 로캘 지원), XHTML, HTML, 포스트스크립트 및 PDF.

mandoc주로 OpenBSD에서 개발되었으며 OpenBSD 및 BSD.lv 프로젝트입니다. 우리는 관심 있는 모든 무료 운영 체제, 특히 FreeBSD, NetBSD, DragonFly, illumos, Minix 3 및 GNU/Linux뿐만 아니라 pkgsrc휴대용 패키지 구축 시스템을 실행하는 모든 시스템을 지원하기 위해 노력하고 있습니다. 개발을 지원하려면 mandocOpenBSD 재단에 기부하는 것을 고려해 보십시오.

pacman로컬에 무엇을 설치했는지 알려주세요.mdocml패키지 크기는 3.28mb이며 다음 /usr/bin바이너리를 포함합니다:

/usr/bin/demandoc
/usr/bin/makewhatis
/usr/bin/mandoc
/usr/bin/mapropos
/usr/bin/mman
/usr/bin/mwhatis

그것으로 나는 할 수 있다:

mman -Thtml mman >/tmp/html
firefox file:///tmp/html

여기에 이미지 설명을 입력하세요.

필요한 경우 자신만의 스타일 시트를 적용할 수 있습니다. 모든 서류는온라인,게다가. 생각해보니 이것도 다 mandoc정리되어 있더군요.

답변3

우선, 다음과 같은 점을 지적할 필요가 있다.둘 이상의 프로그램이 호출됩니다 man2html.

그러한 유틸리티 중 하나 man2html는 원래 1990년대 후반에 Eindhoven University of Technology의 Richard Verhoeven이 작성한 C 프로그램입니다. 프로그램의 내부 구조가 매우 이상합니다. 그러나 troff또는 출력 대신 원본 매뉴얼 페이지 소스 코드를 사용할 수 있다는 장점이 있습니다 nroff. 이 프로그램은 Frederico Lucifredi의 맨스위트에 추가되었습니다.

이 프로그램은 매크로의 의미를 이해 man하고 mandoc합리적인 HTML 구조를 출력합니다. 예를 들어, 다음과 같이 들여쓰기된 단락을 사용하는 경우:

.IP 단어
정의
단어.
.RS

프로그램은 HTML 정의 목록을 출력합니다.

나는 매우 큰 매뉴얼 페이지(대부분 소스 코드 1MB, Letter 크기 PDF로 변환하면 길이가 거의 400,800 페이지)를 유지 관리합니다.groff

$ ls -l txr.1
  -rw-rw-r-- 1 kaz kaz 980549 1월 3일 11:38 txr.1  
-rw-rw-r-- 1 kaz kaz 2016633 4월 7일 16:00 txr 1

약 5 년 전 이것을 HTML로 변환해야 했을 때 합리적인 작업을 수행한 유일한 것은 man2htmlC 프로그램과 "계절 맛보기"를 위한 출력 후처리뿐이었습니다.

궁극적으로는 더 높은 품질의 HTML 문서를 원했기 때문에 troff매크로를 작성하기 시작했습니다. C 프로그램의 한계가 너무 뚜렷해져서 포크했습니다. 내 Git 웹사이트에서 찾을 수 있습니다.30개의 man2html 패치가 포함된 git 저장소. 이러한 패치는 많은 버그를 수정하고 troff 매크로, 조건문, 루프 및 기타 구성을 해석하는 프로그램의 기능을 향상시킵니다. 또한 M2코드를 작성하여 실행 중인지 감지하고 조건에 따라 다른 작업을 수행할 수 있는 레지스터 도 추가했습니다 man2html(예를 보려면 아래로 스크롤). 또한 .M2SS사용자 정의 HTML 헤더 섹션을 내보낼 수 있는 명령을 추가했습니다 .

내 큰 맨페이지는여기서 개최. 이건 man2html제가 직접 만들고 후처리한 것입니다genman.txr프로그래밍하고, 섹션을 재정렬하고, 문서 전체에 하이퍼링크를 추가합니다. 또한 목차의 내부 링크를 안정적인 URL(임의 열거형이 아닌 해시 기반)로 다시 작성하고 일부 Javascript로 목차를 축소할 수 있도록 만듭니다.

내가 사용한 정확한 명령은 다음과 같습니다 Makefile.

man2html txr.1 ./txr genman.txr -> txr-manpage.html
표 txr.1 | pdfroff-man --no-toc-> txr-manpage.pdf

출력이 HTML 간에 조건에 따라 어떻게 다른지에 대한 예를 보려면 nroff출력의 일부를 볼 수 있습니다 man.

       9.19.4 매크로 구조분해

       통사론:

                (defstruct {<이름> | (<이름> <매개변수>*)} <슈퍼>
                   <슬롯 지정자>*)

              defstruct 매크로는 새로운 구조 유형과 레지스터를 정의합니다.
              이는 <name> 아래에 있으며 다음에 따라 바인딩 가능한 기호여야 합니다.
              바인딩 가능한 기능. 마찬가지로 각 <slot>의 이름은 다음과 같아야 합니다.
              바인딩 가능한 기호일 수도 있습니다.

위에서 매개변수가 에 어떻게 표시되는지 확인하세요 <angle> <brackets>. HTML 버전에서는그들은에 나타납니다이탤릭체.

구문 부분은 소스 코드에서 다음과 같습니다.

.coNP 매크로 @defstruct
.synb
.mets (defstruct >> { name | >> ( name << arg *)} < super
.mets \ \ << 슬롯 지정자*)
.전에

이는 동일한 문서에 정의된 모든 사용자 정의 매크로에 적용됩니다. 에서 수단은 .mets메타 문법적 변수입니다. 수단은 중간 공백 없이 메타문법 옆에 있는 구체적인 구문이고 , 수단은 와 리터럴 사이를 처리하는 메타문법 입니다.< bb>> a bab<> a b cbac

향상된 버전에서는 man2html이러한 마크업 규칙을 구현하는 다소 복잡한 매크로를 이해합니다.

또한 매뉴얼이 섹션에 자동으로 번호를 매기는 방법에 주목하십시오. 이것은 모두 troff 코드에 의해 수행되며 이를 man2html이해합니다.

답변4

OpenSolaris는 OSS로 제공되므로 무료 troff.

이식된 소스코드 세트는 다음과 같습니다.

http://heirloom.sourceforge.net/doctools.html

그러나 Heirloom은 대략부터 죽은 프로젝트였습니다. 2007. 이것을 확인하고 싶을 수도 있습니다.

https://github.com/nt-roff/heirloom-doctools

일부는 사라진 가보 프로젝트를 계속합니다.

man2htmltroff 와 함께 아름다운 HTML 매뉴얼 페이지를 자동으로 생성할 수 있습니다.

SchilliX 매뉴얼 페이지를 참조하십시오:

http://schillix.sourceforge.net/man/

Schily Bourne Shell 사용:

http://schillix.sourceforge.net/man/man1/bosh.1.html

나는 이것에 만족하며 올바른 옵션을 사용하면 맨 페이지를 동일한 그룹의 다른 문서에 연결할 수 있습니다. 예를 들어 다음 명령을 사용합니다.

soelim sh.1 | tbl | nroff -u1 -Tlp -man - | col -x | \
                        (sed -e 's/XXX/sh.1/g' ../conf/pre.html; \
                        man2html  -cgiurl '../man$section$subsection/$title.$section$subsection.html' -compress -nodepage; \
                        cat ../conf/post.html) | \
                        egrep -v 'HTML|BODY'> sh.1.html

이는 schily 도구의 make 파일 시스템의 일부입니다. ../conf/pre.htmlschily makefilesystem의 헤더와 기타 필수 파일을 기록해 두십시오 . ../conf/post.html이 네 가지를 필요에 따라 변경할 수도 있습니다.

향상된 버전은 man2thmlschily 도구의 일부입니다(man 페이지 하단 참조 bosh).

그런데 흥미로운 정보가 있습니다. 전체 troff소스 코드와 모든 도우미에 대한 모든 소스 코드(예: soelim, tbl...)와 man프로그램 소스 코드는 프로그램에 필요한 코드의 절반에 불과하며 mandoc이에 대한 지원은 mandoc매우 제한적입니다. tbl대부분의 Solaris 휴먼 페이지가 중단됩니다.

FreeBSD 및 유사한 형식의 troff 소스 에 대한 지원이 필요한 경우 mandoc해당 SchilliX 소스 세트를 만들었습니다 troff.https://sourceforge.net/p/schillix-on/schillix-on/ci/default/tree/usr/src/cmd/troff/troff.d/tmac.d/ 문제의 코드는 andoc파일 및 doc*.

SchilliX -ON의 프로그램 소스 mannroff -mandoc.nroff -man

관련 정보