#% Do not delete the line below; configure depends on this
#  \DeclareLaTeXClass{French Letter (lettre)}
#  \DeclareCategory{Letters}
# French Letter textclass definition file. 
# Author : Alain Castera <castera@in2p3.fr>
# Modifies only some things from letter.layout
# to use the lettre.cls class from Denis Megevand
# (almost) nothing regarding fax, only letter
#---------------
# rev 1; A. Castera :
# A lot of LateX code added to avoid being bored by
# the imposed command order of the class letter (see comments)
#---------------
#rev 2; A. Castera :
# further more LaTeX code to make tth happy
# with the class.(Following a request on 
# such kind of thing from lyx-users@lists.lyx.org)
#---------------
# rev.3; J.-P. Chretien oct 2010
# general update and review for inclusion in lyx-1.6.8
#  - remove tth stuff
#  - english named styles (translated in fr.po)
#  - margins set to dynamic to ensure alignment of line headings
#  - categories
#  - ordering control left at the beginning (any other way ?)
#---------------
# rev.4; J.-P. Chretien oct 2016
# update and review for inclusion in lyx-2.2.3
#  - remove the workaround for page format (not needed after v2.351)

# TODO: DocBook doesn't support several letters in the same file.


Format 95

#(pre)declarations (just to impose some order on the menus)
Style Standard
End

Style My_Address
End
Style Location
End
Style Telephone
End
Style NoTelephone
End
Style Fax
End
Style NoFax
End
Style Email
End
Style Place
End
Style NoPlace
End
Style Date
End
Style NoDate
End
Style Send_To_Address
End
Style Subject
End
Style YourRef
End
Style MyRef
End 
Style Opening
End
Style Closing
End
Style Signature
End
Style encl
End
Style 	cc
End
Style Post_Scriptum
End
Style EndOfMessage
End
Style EndOfFile
End


# Input general definitions
Input letter.layout

Preamble
%% A lot of newif 
%% to allow reorder commands and output them when needed only
 \newif\ifneedsendletter	% we started a letter
 \newif\ifneedsendfax      	% we started a fax
 \newif\ifmonaddressused 	% sender address specified
 \newif\ifmonlieuused		% city
 \newif\ifmonlocationused	% sender extra info (office, etc..)
 \newif\ifmontelephoneused	% sender phone # specified
 \newif\ifmonfaxused		% sender fax # specified
 \newif\ifmonemailused		% sender email address specified
 \newif\iflyxsigp		% first of up to 3 signatures
 \newif\iflyxsigs		% second signature
 \newif\iflyxsigt		% third one
 \newif\ifpsneeded		% post-scriptum
 \newif\ifccneeded		% carbon copy to somebody
 \newif\ifencneeded		% encluded items
   
%% Sometimes you don't want a closing ("formule de politesse"),
%% but the package still needs it. Use a void macro instead of a newif
 \newcommand{\Lyclose}{}
%% 

%% here is the real stuff : ouput the commands in the "proper" order
 \newcommand{\findemessage}
  { 
    \ifneedsendletter %% did we start a letter ?
      \iflyxsigp \signature{\Lysigp} \else \name{} \fi
      \iflyxsigs \secondsignature{\Lysigs} \fi
      \iflyxsigt \thirdsignature{\Lysigt} \fi	
      \lyxsigpfalse
      \lyxsigsfalse
      \lyxsigtfalse
      \closing{\Lyclose}
      \ifpsneeded \ps{P.S. : }{\Lyps} \psneededfalse \fi
      \ifccneeded \cc{\Lycc} \ccneededfalse \fi
      \ifencneeded \encl{\Lyenc} \encneededfalse \fi
      \end{letter}
      \needsendletterfalse %% done with letter
    \fi		% if needSendLetter
      \ifneedsendfax \end{telefax} %% nothing provided yet for telefax !
      \needsendfaxfalse 
    \fi		% if needSendFax
  }	%findemessage

% to get the specified pagesize 
% (workaround for an a4paper/lettre problem in pdf mode)
% removed in oct 2016, no more needed since 2.351 and created an error with LuaTeX
%\@ifpackageloaded{ifpdf}{}{\usepackage{ifpdf}}
%\ifpdf\input pdftexconfig.tex\fi

EndPreamble

# My Address style used to specify sender name and coordinates
Style My_Address
  CopyStyle     My_Address
  Category      "Postal Data"
  Margin        Static
  LatexType     Command
  LatexName     MyAddress
  ParSkip       0.4
  BottomSep     1.5
  ParSep        1.5
  Align         Left
  AlignPossible     Left
  Preamble
   \newcommand{\MyAddress}[1]{ % will save the info for future use
	\monaddressusedtrue
	\providecommand{\lyaddress}{\address{#1}}
	}
  EndPreamble
  # Don't break the sequential bunch of elements going into the wrapper.
  DocBookTag         NONE
  DocBookWrapperTag  address
  DocBookWrapperMergeWithPrevious  true
  DocBookInInfo      always
End

# City name style
Style Place
  Category 		Headings
  Margin  		Dynamic
  LatexType 		Command
  LatexName 		Myplace
  LabelSep		xx
  TopSep		0.4
  BottomSep		0.4
  ParSep		0.4
  Align 		Block
  AlignPossible 	Block, Left
  LabelType		Static
  LabelString		City:
  LeftMargin  		x
  # label font definition
  LabelFont 
    Series		Bold
    Shape		Italic
    Color		textlabel3
  EndFont
  Preamble
   \newcommand{\Myplace}[1]{   % will save the info for future use
        \monlieuusedtrue
	\providecommand{\lylieu}{\relax}
        \renewcommand{\lylieu}{\lieu{#1}}
        }
  EndPreamble
  DocBookTag         city
  DocBookTagType     paragraph
  DocBookWrapperTag  address
  DocBookWrapperMergeWithPrevious  true
  DocBookInInfo      always
End

#suppress City indication
Style NoPlace
  Category 		Headings
  KeepEmpty		1
  LatexType		Command
  LatexName		MyNoPlace
  LabelType		Static
  Margin		Dynamic
  LabelString		NoPlace
  LeftMargin  		x
  # label font definition
  LabelFont 
    Series		Bold
    Shape		Italic
    Color		textlabel3
  EndFont

  Preamble
   \newcommand{\MyNoPlace}{
        \monlieuusedtrue
	\providecommand{\lylieu}{\relax}
        \renewcommand{\lylieu}{\nolieu{}}
        }
  EndPreamble
  # Don't break the sequential bunch of elements going into the wrapper.
  DocBookTag         NONE
  DocBookWrapperTag  address
  DocBookWrapperMergeWithPrevious  true
  DocBookInInfo      always
End

# date Style
Style Date
  Category		Headings
  Margin  		Dynamic
  LatexType 		Command
  LatexName 		date
  LeftMargin		x
  LabelSep		xx
  TopSep		0.4
  BottomSep		0.4
  ParSep		0.4
  Align 		Block
  AlignPossible 	Block, Left
  LabelType		Static
  LabelString		Date:
  # label font definition
  LabelFont 
    Series		Bold
    Shape		Italic
    Color		textlabel3
  EndFont
  DocBookTag      date
  DocBookTagType  paragraph
  DocBookInInfo   always
  DocBookNoFontInside   true
End

#suppress date indication
Style NoDate
  Category		Headings
  KeepEmpty		1
  Margin  		Dynamic
  LatexType		Command
  LatexName		nodate
  LabelType		Static
  LeftMargin		x
  LabelString		NoDate
  # label font definition
  LabelFont 
    Series		Bold
    Shape		Italic
    Color		textlabel3
  EndFont
  Preamble
  EndPreamble
  DocBookTag     NONE
  DocBookInInfo  always
End

# location (i.e. office, department ...)
Style Location
  Category		Headings
  Margin  		Dynamic
  LatexType 		Command
  LatexName 		MyLocation
  LeftMargin		x
  LabelString		Office:
  LabelSep		xx
  TopSep		0.4
  BottomSep		0.4
  ParSep		0.4
  Align 		Block
  AlignPossible 	Block, Left
  LabelType		Static
  # label font definition
  LabelFont 
    Series		Bold
    Shape		Italic
    Color		textlabel3
  EndFont
  Preamble
   \newcommand{\MyLocation}[1]{ % will save the info for future use
        \monlocationusedtrue
	\providecommand{\lylocation}{\relax}
        \renewcommand{\lylocation}{\location{#1}}
        }
  EndPreamble
  DocBookWrapperTag  address
  DocBookWrapperMergeWithPrevious  true
  DocBookInInfo      always
End

# telephone Style
Style Telephone
  Category		Headings
  Margin  		Dynamic
  LatexType 		Command
  LatexName 		MyTelephone
  LeftMargin		x
  LabelString		Tel:
  LabelSep		xx
  TopSep		0.4
  BottomSep		0.4
  ParSep		0.4
  Align 		Block
  AlignPossible 	Block, Left
  LabelType		Static
  # label font definition
  LabelFont 
    Series		Bold
    Shape		Italic
    Color		textlabel3
  EndFont
  Preamble
    \newcommand{\MyTelephone}[1]{ % will save the info for future use
        \montelephoneusedtrue
        \providecommand{\lytelephone}{\relax}
        \renewcommand{\lytelephone}{\telephone{#1}}
       }
  EndPreamble
  DocBookWrapperTag  address
  DocBookWrapperMergeWithPrevious  true
  DocBookInInfo      always
End

#suppress telephone indication
Style NoTelephone
  Category		Headings
  KeepEmpty		1
  Margin  		Dynamic
  LatexType		Command
  LatexName		MyNoTelephone
  LabelType		Static
  LeftMargin		x
  LabelString		NoTel
  # label font definition
  LabelFont 
    Series		Bold
    Shape		Italic
    Color		textlabel3
  EndFont
  Preamble
   \newcommand{\MyNoTelephone}{
        \montelephoneusedtrue
        \providecommand{\lytelephone}{\relax}
        \renewcommand{\lytelephone}{\notelephone{}}
        }
  EndPreamble
  # Don't break the sequential bunch of elements going into the wrapper.
  DocBookTag         NONE
  DocBookWrapperTag  address
  DocBookWrapperMergeWithPrevious  true
  DocBookInInfo      always
End

# telefax Style
Style Fax
  Category		Headings
  Margin  		Dynamic
  LatexType 		Command
  LatexName 		MyFax
  LeftMargin		x
  LabelSep		xx
  TopSep		0.4
  BottomSep		0.4
  ParSep		0.4
  Align 		Block
  AlignPossible 	Block, Left
  LabelType		Static
  LabelString		Fax:
  # label font definition
  LabelFont 
    Series		Bold
    Shape		Italic
    Color		textlabel3
  EndFont
  Preamble
   \newcommand{\MyFax}[1]{ % will save the info for future use
        \monfaxusedtrue
        \providecommand{\lyfax}{\relax}
        \renewcommand{\lyfax}{\fax{#1}}
        }
  EndPreamble
  DocBookTag         fax
  DocBookTagType     paragraph
  DocBookWrapperTag  address
  DocBookWrapperMergeWithPrevious  true
  DocBookInInfo      always
End

#suppress fax indication
Style NoFax
  Category		Headings
  KeepEmpty		1
  Margin  		Dynamic
  LatexType		Command
  LatexName		MyNoFax
  LabelType		Static
  LeftMargin		x
  LabelString		NoFax
   # label font definition
  LabelFont 
    Series		Bold
    Shape		Italic
    Color		textlabel3
  EndFont
  Preamble
   \newcommand{\MyNoFax}{
        \monfaxusedtrue
        \providecommand{\lyfax}{\relax}
        \renewcommand{\lyfax}{\nofax{}}
        }
  EndPreamble
  # Don't break the sequential bunch of elements going into the wrapper.
  DocBookTag         NONE
  DocBookWrapperTag  address
  DocBookWrapperMergeWithPrevious  true
  DocBookInInfo      always
End


# Email Style
Style Email
  Category		Headings
  Margin  		Dynamic
  LatexType 		Command
  LatexName 		MyEmail
  LeftMargin		x
  LabelString		Email:
  LabelSep		xx
  TopSep		0.4
  BottomSep		0.4
  ParSep		0.4
  Align 		Block
  AlignPossible 	Block, Left
  LabelType		Static
  # label font definition
  LabelFont 
    Series		Bold
    Shape		Italic
    Color		textlabel3
  EndFont
  Preamble
   \newcommand{\MyEmail}[1]{ % will save the info for future use
        \monemailusedtrue
        \providecommand{\lyemail}{\relax}
        \renewcommand{\lyemail}{\email{#1}}
        }
  EndPreamble
  DocBookTag         email
  DocBookTagType     paragraph
  DocBookWrapperTag  address
  DocBookWrapperMergeWithPrevious  true
  DocBookInInfo      always
End

# Subject Style
Style Subject
  Margin  		Dynamic
  LatexType             Command
  LatexName             conc
  LeftMargin            x
  LabelString           Subject:
  LabelSep		xx
  TopSep		0.4
  BottomSep		0.4
  ParSep		0.4
  Align 		Block
  AlignPossible 	Block, Left
  LabelType		Static
  # label font definition
  LabelFont 
    Series		Bold
    Shape		Italic
    Color		textlabel3
  EndFont
  DocBookTag     title
  DocBookTagType paragraph
  DocBookInInfo  maybe
End

# YourRef Style
Style YourRef
  CopyStyle             Subject
  Margin  		Dynamic
  LatexType             Command
  LatexName             Vref
  LeftMargin            x
  LabelString           YourRef:
  # label font definition
  LabelFont 
    Series		Bold
    Shape		Italic
    Color		textlabel3
  EndFont
  DocBookTag      productnumber
  DocBookAttr     role='your-ref'
  DocBookTagType  paragraph
  DocBookInInfo   always
End

# MyRef Style
Style MyRef
  CopyStyle             Subject
  Margin  		Dynamic
  LatexType             Command
  LatexName             Nref
  LeftMargin            x
  LabelString           MyRef:
  # label font definition
  LabelFont 
    Series		Bold
    Shape		Italic
    Color		textlabel3
  EndFont
  DocBookTag      productnumber
  DocBookAttr     role='my-ref'
  DocBookTagType  paragraph
  DocBookInInfo   always
End

Style Send_To_Address
  CopyStyle		Send_To_Address
  Margin		Right_Address_Box
  LatexType		Command
  LatexName		lettre
  Preamble
  \newcommand{\lettre}[1] { %% organized as expected by the package
	  \findemessage   %% if we already started a letter or a fax
	  \begin{letter}{#1} %% now the new one
	  \ifmonaddressused
	  \lyaddress{}
	  \fi
          \ifmonlocationused
          \lylocation{}
          \fi
	  \ifmonlieuused
	  \lylieu{}
	  \fi
          \ifmontelephoneused
          \lytelephone{}
          \fi
          \ifmonfaxused
          \lyfax{}
          \fi
          \ifmonemailused
          \lyemail{}
          \fi
	  \needsendlettertrue
	}
  EndPreamble
  DocBookTag         NONE
  DocBookWrapperTag  address
  DocBookWrapperAttr role='send-to-address'
  DocBookWrapperMergeWithPrevious  true
  DocBookInInfo      always
End

#As a temporary(?) trick the last(only?) letter of the file must be processed
# and to allow changing sender address, location,etc.. in between 2 letters
Style EndOfMessage
  Category		Closings
  KeepEmpty		1
  Margin  		Dynamic
  TopSep		0.8
  BottomSep		0.8
  ParSep		0.8
  LatexType		Command
  LatexName		findemessage
  LabelType		Static
  LabelString		EndOfMessage.
  LeftMargin		x
  # label font definition
  LabelFont 
    Series		Bold
    Shape		Italic
    Color		textlabel3
  EndFont
  DocBookTag  NONE
End

Style EndOfFile
  CopyStyle		EndOfMessage
  LabelString		EndOfFile.
  DocBookTag  NONE
End

# Opening style definition (Accroche)
Style Opening
  CopyStyle		Opening
  Margin  		Dynamic
  LeftMargin		x
  LabelString		Opening:
  # label font definition
  LabelFont 
    Series		Bold
    Shape		Italic
    Color		textlabel3
  EndFont
End

# Closing style definition (FormuleDePolitesse, Salutations)
Style Closing
  CopyStyle		Closing
  Margin		Dynamic
  LeftMargin		x
  LabelString		Closing:
  LatexType		Command
  LatexName		lyxclose
  Preamble
    \newcommand{\lyxclose}[1]{\renewcommand{\Lyclose}{#1}}
  EndPreamble
End

# Signature style definition
Style Signature
  Margin		Dynamic
  LeftMargin		x
  LabelString		Signature:
  LatexType		Command
  LatexName		lyxsig
  # label font definition
  LabelFont 
    Series		Bold
    Shape		Italic
    Color		textlabel3
  EndFont
  Preamble
      %% automatic assignment of signatures
      %% there is only 1 Signature style, but multiple latex commands
       \newcommand{\lyxsig}[1]{
         \iflyxsigs %% the second sig. exists, so this one is the third
           \providecommand{\Lysigt}{\relax}
           \renewcommand{\Lysigt}{#1}
           \lyxsigttrue
          \else			%% if lyxsigs exist
            \iflyxsigp 		%% the second one
              \providecommand{\Lysigs}{\relax}
              \renewcommand{\Lysigs}{#1}
              \lyxsigstrue
             \else 		%% the first one
               \providecommand{\Lysigp}{\relax}
               \renewcommand{\Lysigp}{#1}
               \lyxsigptrue
             \fi 		%% if lyxsidp exist
          \fi 			%% if lyxsigs exist
	}
  EndPreamble
End


# encl style definition (Ci-joint)
Style encl
  CopyStyle		encl
  Category 		Closings
  Margin		Dynamic
  LeftMargin		x
  LabelString		encl:
  LatexName		lyxenc
  # label font definition
  LabelFont 
    Series		Bold
    Shape		Italic
    Color		textlabel3
  EndFont
  Preamble
    \newcommand{\lyxenc}[1]{
	 \providecommand{\Lyenc}{\relax}
	 \renewcommand{\Lyenc}{#1} 
	 \encneededtrue
	}
  EndPreamble
End

#Carbon Copy
Style 	cc
  CopyStyle		encl
  LatexName		lyxcc
  LeftMargin		x
  LabelString		cc:
  # label font definition
  LabelFont 
    Series		Bold
    Shape		Italic
    Color		textlabel3
  EndFont
  Preamble
    \newcommand{\lyxcc}[1]{
         \providecommand{\Lycc}{\relax}
	 \renewcommand{\Lycc}{#1} 
	 \ccneededtrue
	}
  EndPreamble
End

#Post Scriptum
Style Post_Scriptum
  Category 		Closings
  Margin       		Dynamic
  LatexType         	Command
  LatexName		lyxps
  LabelSep		xx
  LabelType		Static
  LeftMargin		x
  LabelString		P.S.:
  # label font definition
  LabelFont 
    Series		Bold
    Shape		Italic
    Color		textlabel3
  EndFont
  Preamble
    \newcommand{\lyxps}[1]{
	 \providecommand{\Lyps}{\relax}
	 \renewcommand{\Lyps}{#1} 
	 \psneededtrue
	}
  EndPreamble
  DocBookTag   para
  DocBookAttr  role='post-scriptum'
End