Verantwoord tekst in moderne begeleidende brief

Ik schrijf een begeleidende brief en CV met behulp van moderncv . Alles werkt tot nu toe prima, maar de tekst in de begeleidende brief is niet gerechtvaardigd. Ik denk dat het goed is dat het niet afgebroken wordt, maar het zou er veel leuker uitzien als de tekst gerechtvaardigd was.

Hier is een minimaal voorbeeld:

\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}

output

45

5 antwoord

Voeg het volgende toe aan de preambule van uw document na het laden van de moderncv -stijl ( classic ):

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

output

De bovenstaande patch verwijdert gewoon de benodigde \ raggedright uit de sjabloon op de juiste locatie (net voor het aanroepen van \ @ opening ).

47
toegevoegd
@TheKojuEffect: probeer \ makeatletter \\ hyphenpenalty = \ @ M \ makeatletter toe te voegen aan de preamble van uw document. Dit zou een voldoende grote (oneindige) penalty moeten toewijzen om automatisch woorden af ​​te breken bij een regelafbreking, waardoor het afbreken van het document in het document effectief wordt verbroken. Zie Wat zijn straffen en welke zijn gedefinieerd? voor meer informatie over boetes. Als dit niet werkt, raadpleegt u < a href = "http://tex.stackexchange.com/q/5036/5764"> Hoe te voorkomen dat LaTeX het hele document afbreekt?
toegevoegd de auteur Werner, de bron
@Werner Werkt prima. Maar dat resulteerde in veel woordafbreking in mijn tekst. Is er een manier om volledig te rechtvaardigen (zoals in tekstverwerkers) ???
toegevoegd de auteur Kyle Hailey, de bron

U kunt eenvoudig opnemen:

\usepackage{ragged2e}

en direct na het plaatsen van \ makelettertitle :

\justify

Werkt prima voor mij, zowel met klassiek als met casual.

17
toegevoegd
Dit lijkt een extra nieuwe regel in te voegen na \ makelettertitle .
toegevoegd de auteur James Aylett, de bron
Ik geloof dat dit het eenvoudigste antwoord is. Bedankt!
toegevoegd de auteur Gabriel Hurley, de bron

Herstel gewoon de "bug" in moderne cv-sjablonen. Als u bankstijl gebruikt, gaat u naar moderncvstylebanking.sty en wijzigt u

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

in

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

Merk op dat dit eenvoudigweg de opdracht raggedright omsluit, zodat het vanaf dit moment niet van invloed is op het hele document. Je kunt hetzelfde doen voor elk van de andere stijlen.

16
toegevoegd
Het feit dat \ raggedright niet is ingesloten in een groep met \ @ opening is eigenlijk geen bug, het is het bedoelde ontwerp. AFAIK, de conventie voor letters is niet om de tekst te rechtvaardigen, maar om hem links te laten spoelen. Vanzelfsprekend (en gelukkig!), Kunnen sommige mensen een andere voorkeur hebben dan de "conventionele wijsheid", en een eenvoudige manier om te selecteren wat u verkiest zou waarschijnlijk een welkome aanvulling zijn op moderncv .
toegevoegd de auteur Zaibis, de bron
@Xavier Als je gelijk hebt, zou de "juiste" manier om dit te doen, zijn om 'raggedright' afzonderlijk toe te passen voor het openen van de body van de letter, en niet om de twee te verbinden.
toegevoegd de auteur User, de bron
Zelfs als het antwoord van Wener werkt, geloof ik dat dit een betere, misschien juiste, manier is om het te doen.
toegevoegd de auteur Bartosz Ptaszynski, de bron

Op ModernCV versie 2.0, het antwoord geleverd door Werner moet worden bijgewerkt naar:

\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\makeatletter
\patchcmd{\makeletterhead}% 
  {\raggedright \@opening}% 
  {\@opening}% 
  {}{}% 
\makeatother
6
toegevoegd
Ik zal mijn antwoord bijwerken om dit weer te geven. Er is geen behoefte aan een extra antwoord.
toegevoegd de auteur Werner, de bron
ja, ik probeerde er commentaar op te geven, maar had niet genoeg "browniepunten" voor een reactie! sorry, SE regels blijkbaar.
toegevoegd de auteur shibin, de bron

Ik heb een niet zo elegante oplossing met \ minipage . Dat werkt prima voor de casual stijl, maar het zou ook voor de andere moeten werken.

Voeg vóór \ begin {document} toe:

\newlength{\currentparskip}

Schrijf vervolgens, na het schrijven van de letter, na de opdracht \ 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

De alinea-afstand is nul in de \ minipage , dus men moet de waarde herstellen zodat de tekstafstand ok zou zijn.

2
toegevoegd