Como adicionar um ponto a linhas particulares no documento LaTeX?

1

Eu tenho um documento LaTeX onde tenho linhas do formulário

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

ou em geral

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

para x entre 1 e 31 e y entre 1 e 12 inclusive, (datas). Eu gostaria de mudar essas linhas para o formulário

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

Existe algum script fácil para fazer isso?

    
por LaTeXist 25.04.2014 / 00:08

1 resposta

0

Você pode usar sed, combinar as partes antes e depois da linha e colocar um . no meio. O comando s/REGEXP/REPLACEMENT/ executa uma substituição de expressão regular. \(…\) delimita um grupo; e no texto de substituição referem-se a esses grupos.

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

Outra maneira de usar o sed é substituir o último } por .} se a linha corresponder ao padrão desejado:

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

Você também pode usar \| para combinar dois padrões, mas neste caso eu acho que isso torna o código mais curto, mas menos claro.

Se você quiser substituir o arquivo, no Linux, você pode usar

sed -i -e … somefile.tex
    
por 25.04.2014 / 02:14