LaTeX 문서의 특정 줄에 점을 추가하는 방법은 무엇입니까?

LaTeX 문서의 특정 줄에 점을 추가하는 방법은 무엇입니까?

다음과 같은 형식의 LaTeX 문서가 있습니다.

\section*{3.1}
\addcontentsline{toc}{section}{3.1}

아니면 일반적으로

\section*{x.y}
\addcontentsline{toc}{section}{x.y}

x가 1에서 31 사이이고 y가 1에서 12(포함)(날짜) 사이인 경우. 이 줄을 형식으로 변경하고 싶습니다.

\section*{x.y.}
\addcontentsline{toc}{section}{x.y.}

이를 수행할 수 있는 간단한 스크립트가 있습니까?

답변1

sed를 사용하여 줄의 앞뒤 부분을 일치시키고 .중간에 넣을 수 있습니다. 이 명령은 정규식 대체를 수행합니다. 그룹을 정의하고 대체 텍스트에서 이러한 그룹을 참조하세요.s/REGEXP/REPLACEMENT/\(…\)\1\2

sed <original.tex >replaced.tex \
    -e 's/^\(\\section\\*{[0-9]*\.[0-9]*\)\(}\)$/\1.\2/' \
    -e 's/^\(\\addcontentsline{toc}{section}{[0-9]*\.[0-9]*\)\(}\)$/\1.\2/'

sed를 사용하는 또 다른 방법은 마지막 항목을 다음 }으로 바꾸는 것입니다..}

sed <original.tex >replaced.tex \
    -e '/^\\section\\*{[0-9]*\.[0-9]*}\)$/ s/}$/.&/' \
    -e '/^\\addcontentsline{toc}{section}{[0-9]*\.[0-9]*}/ s/}$/.&/'

두 모드를 결합하여 사용할 수도 있지만 \|이 경우 코드가 더 짧아지지만 덜 명확해질 것이라고 생각합니다.

Linux에서 파일을 제자리에서 바꾸려면 다음을 사용할 수 있습니다.

sed -i -e … somefile.tex

관련 정보