moderncvのカバーレターにおけるテキストのジャスティファイ

私は moderncv を使ってカバーレターと履歴書を書いています。今のところすべてうまくいっていますが、カバーレターのテキストは両端揃えではありません。ハイフンがないのは良いことだと思いますが、テキストがジャスティファイされていれば、もっときれいに見えると思います。

以下は最小限の例です。

\documentclass{moderncv}
\moderncvstyle{classic}

\usepackage{lipsum} % just for dummy text

\firstname{John}
\familyname{Doe}

\begin{document}
\recipient{Prof.\ Dr.\ Foo Bar}{}
\opening{Dear Professor Dr.\ Bar,}
\closing{Yours sincerely,}
\enclosure[Attached]{curriculum vit\ae}

\makelettertitle
\lipsum[1]
\makeletterclosing

\clearpage

\makecvtitle

\section{Education}
\cventry{2009--present}{PhD Student}{here}{and}{there}{}
\end{document}

ソリューション

moderncv](http://ctan.org/pkg/moderncv) スタイル (classic`) を読み込んだ後、ドキュメントのプリアンブルに以下を追加してください。

\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\makeatletter
\patchcmd{\makeletterhead}% 
  {\raggedright \@opening}% 
  {\@opening}% 
  {}{}% 
\makeatother

上記のパッチは、必要な raggedright をテンプレートから正しい位置(@opening を呼び出す直前)に削除するだけです。

解説 (2)

moderncv のテンプレートの "bug" を修正するだけです。 銀行スタイルを使用している場合は、moderncvstylebanking.styに移動して、次のように変更してください。

% opening
\raggedright%
\@opening\\[1.5em]%

% opening
{\raggedright%
\@opening\\[1.5em]}%

これは単に raggedright コマンドを囲むだけなので、これ以降のドキュメント全体には影響しないことに注意してください。 他の各スタイルについても同じことができます。

解説 (3)

私は minipage を使って、あまりエレガントでない解決策を持っています。これはカジュアルなスタイルではうまくいくのですが、他のスタイルでも同様にうまくいくはずです。

begin{document}` の前に、以下を追加します。

\newlength{\currentparskip}

そして、手紙を書くときに、 makelettertitle コマンドの後に、次のように書きます。

\setlength{\currentparskip}{\parskip}% save the value of paragraph spacing
\begin{minipage}{\textwidth} %create minipage
    \setlength{\parskip}{\currentparskip}% restore the value    

      TEXT OF THE LETTER

    \end{minipage}

\makeletterclosing

\clearpage

minipage` のパラグラフスペーシングはゼロなので、テキストスペーシングが正しくなるように値を復元する必要があります。

解説 (0)