매뉴얼 페이지를 tex로 변환하려고 하는데 계속해서 오류가 발생합니다.
\item[
파일의 시작 부분에
] \hfill \\
ENV(1L)라고 적힌 매뉴얼 페이지 부분 뒤에 있습니다. 다른 모든 것은 작동하는 것 같습니다.
이것은 내 tex.sed입니다.
/^\<[A-Z]*[A-Z]/i \
\\item[
/^\<[A-Z]*[A-Z]/a \
] \\hfill \\\\
1i\
\\documentstyle[11pt]{article} \
\\begin{document}
1i\
\\begin{center} {\\bf
1a\
\} \\end{center}
2i\
\\begin{description}
$a\
\\end{description}
$a\
\\end{document}
s/\\/\\verb\+\\\+/g
s/%/\\%/g
s/\^/\\\^/g
s/--/-\\hspace\{.01cm\}-/g
s/^+/ \\\\/
s/^-/ \\\\/
이것은 env.ascii입니다:
ENV(1L)
NAME
env - run a program in a modified environment
SYNOPSIS
env [-] [-i] [-u name] [--ignore-environment]
[--unset=name] [name=value]... [command [args...]]
DESCRIPTION
This manual page documents the GNU version of env. env
runs a command with an environment modified as specified
by the command line arguments. Arguments of the form
`variable=value' set the environment variablevariable to
valuevalue. value may be empty (`variable='). Setting a
variable to an empty value is different from unsetting it.
The first remaining argument specifies a program to
invoke; it is searched for according to the specification
of the PATH environment variable. Any arguments following
that are passed as arguments to that program.
If no command name is specified following the environment
specifications, the resulting environment is printed.
This is like specifying a command name of `printenv'.
OPTIONS
-u, --unset name
Remove variable name from the environment, if it
was in the environment.
-, -i, --ignore-environment
Start with an empty environment, ignoring the
inherited environment.
The long-named options can be introduced with `+' as well
as `--', for compatibility with previous releases.
Eventually support for `+' will be removed, because it
is incompatible with the POSIX.2 standard.
이것이 내가 컴파일하는 방법입니다:
sed -f tex.sed env.ascii > env.tex
내 env.tex는 다음과 같습니다.
\documentstyle[11pt]{article}
\begin{document}
\begin{center} {\bf
\item[
ENV(1L)
] \hfill \\
} \end{center}
\begin{description}
\item[
NAME
] \hfill \\
env - run a program in a modified environment
\item[
SYNOPSIS
] \hfill \\
env [-] [-i] [-u name] [-\hspace{.01cm}-ignore-environment]
[-\hspace{.01cm}-unset=name] [name=value]... [command [args...]]
\item[
DESCRIPTION
] \hfill \\
This manual page documents the GNU version of env. env
runs a command with an environment modified as specified
by the command line arguments. Arguments of the form
`variable=value' set the environment variablevariable to
valuevalue. value may be empty (`variable='). Setting a
variable to an empty value is different from unsetting it.
The first remaining argument specifies a program to
invoke; it is searched for according to the specification
of the PATH environment variable. Any arguments following
that are passed as arguments to that program.
If no command name is specified following the environment
specifications, the resulting environment is printed.
This is like specifying a command name of `printenv'.
\item[
OPTIONS
] \hfill \\
-u, --unset name
Remove variable name from the environment, if it
was in the environment.
-, -i, --ignore-environment
Start with an empty environment, ignoring the
inherited environment.
The long-named options can be introduced with `+' as well
as `-\hspace{.01cm}-', for compatibility with previous releases.
Eventually support for `+' will be removed, because it
is incompatible with the POSIX.2 standard.
\end{description}
\end{document}
노트
최종 결과는 sed
매뉴얼 페이지를 파일로 올바르게 변환하는 스크립트여야 합니다 .tex
. 문제를 해결하기 위한 다른 방법을 제안하지 마십시오.
답변1
당신이 원하는 것이 PDF 형식의 매뉴얼 페이지뿐이라면, man
그 자체로 그렇게 할 수 있습니다. 이 도구 모음이 필요하며 PDF 형식으로 페이지를 ghostscript
가져오는 등의 작업을 수행할 수 있습니다 .bash(1)
man -T ps bash|ps2pdf - bash.pdf
ghostscript
LaTeX를 사용하여 DVI 매뉴얼 페이지를 생성하려는 경우 이 작업을 직접 man
수행할 필요가 없습니다 .
man -T dvi bash >bash.dvi
Bichoy의 의견을 그대로 인용
-T ps 옵션은 사람에게 이식 가능하지 않습니다. RHEL6에서 올바른 구문은 man -t bash입니다. -t 옵션은 /usr/bin/groff -Tps -mandoc를 사용하여 출력을 ps로 설정합니다.
sed
스크립트에 대한 몇 가지 참고 사항
- 나에게 효과가 있었던 것은 스크립트의 처음 6줄을
\\begin{center}
이 줄 뒤로 옮기는 것이었습니다. 한번 시도해보고 이것이 원하는 결과인지 확인하십시오. - 매뉴얼 페이지 내용에서 특수 문자를 이스케이프 처리하려면 상당한 노력을 기울여야 합니다. 귀하의 스크립트는 현재 이들 중 일부를 이스케이프하지만 항상 하나를 잊어버릴 가능성이 있습니다. 적어도
&
(La)TeX가 열 구분 기호로 사용하는 앰퍼샌드( )를 이스케이프 처리하는 것을 잊어버렸다고 말할 수 있습니다 . 이것이 바로 Umläute와 제가 TeXify에 대한 대안적 접근 방식을 직접 제안해 온 이유입니다. - 문서의 시작 부분에 오타가 있습니까? 아니면 실제로는 그
\\documentstyle
반대여야 합니까\\documentclass
? - 태그로 둘러싸인 명령 이름을 제외하려면
\item
대문자로만 구성된 단어와 일치하도록 정규식을 변경해야\<[A-Z]*[A-Z]
합니다^\s*[A-Z][A-Z]*\s*$
.
답변2
troff-to-latex 변환기를 확인해 보셨나요?tr2 라텍스?
당신이 하고 싶은 일이 정확히 이루어질 수도 있습니다.