文書をperl
修正するためにコマンドを使用しようとしています。LaTeX
実際に引用形式を次のように変更しようとしています。
. \cite{poelma20113d}
到着
\cite{poelma20113d}.
つまり、前にピリオドとスペースを含む引用符を見つけてスペースに置き換えてから、引用符とピリオドを後ろに配置したいのです。誰もがperl
1つのライナーでこれを行う方法を助けることができますか?そうしたいのは、私が準備している原稿の形式をJournal of Physics of FluidsからJournal of Physical Review Eに変えたいからです。
ベストアンサー1
LaTeXはLaTeXを介してのみ正しく解析できると確信しています。1PerlでLaTeXを実装するのは本当に難しいことです。したがって、単純なPerlソリューションは特定のエッジ条件で失敗します。次の例を使用してください
これは cite{foo} です。 \cite{foo} これは cite[foo]{bar} です。 \cite[foo]{bar} これは citet{foo, bar} です。 \citet{foo, バー}
これには、単一のオプション引数、複数の参照、\cite
次に始まる代替項目、および間\cite
の可変数のスペースが含まれます。次の表現は必要なことをするようです.
\cite
perl
perl -pe 's/(.\s*)(\\cite)([^{]*)(\[[^\]]*\])?{([^}]*)}/\2\3\4\{\5\}./g' afile
これは cite{foo}\cite{foo} です。 cite[foo]{bar}\cite[foo]{bar}。 citet{foo, bar}\citet{foo, bar}。