Sed 스크립트가 특정 위치에서만 잘못된 위치에 삽입 및 추가됩니다.

Sed 스크립트가 특정 위치에서만 잘못된 위치에 삽입 및 추가됩니다.

매뉴얼 페이지를 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

ghostscriptLaTeX를 사용하여 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 라텍스?

당신이 하고 싶은 일이 정확히 이루어질 수도 있습니다.

관련 정보