En m'inspirant d'une discussion sur les shorthandon et shorthandoff, j'ai créé un environnement abrege comme suit :

Ouvrir dans l'éditeur
\documentclass{book}
\usepackage[french,english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{csquotes}

\makeatletter
\long\def\abrege#1{\gdef\@abrege{#1}}

% le résumé
\newcommand{\makeabrege}%
  {\begin{otherlanguage}{french}\chapter*{Abrégé}
   \@abrege\par\end{otherlanguage}%
   \global\let\makeabrege\relax
   \global\let\abrege\relax
   \global\let\@abrege\@empty}  
\let\ORIabrege\abrege
\renewcommand{\abrege}{%
  \shorthandon{;:!?}%
  \titlewithshorthand}
\newcommand{\titlewithshorthand}[1]{%
  \ORIabrege{#1}%
  \shorthandoff{;:!?}}     
\makeatother

\abrege{Texte en français! D'accord? Oui: parce \enquote{je cite un passage}}

\begin{document}
\makeabrege
\end{document}

Il reste deux problèmes :

  1. le \enquote est insensible à l'activation de \begin{otherlanguage}{french} de même que l'indentation attendue. Que faut-il faire ?
  2. Sinon, est-ce une bonne idée de créer des environnements de cette manière ou faut-il mieux passer par des \begin{newenvironment}...\end{newenvironment} ?

Posée 30 Avr '16, 23:36

pluton's gravatar image

pluton
1.2k22836
Taux d'acceptation : 34%

Modifiée 01 Nov '16, 01:16

Pathe's gravatar image

Pathe ♦♦
7.4k28196245

Il suffit d'ajouter \frenchbsetup{IndentFirst} voir ici puis ajouter \let\enquote\frquote après \begin{otherlanguage}{french}

(01 Mai '16, 00:46) touhami touhami's gravatar image

Vous n'avez pas créé un environnement, mais au contraire, une macro qui a un argument. Concernant justement les changements de codes de catégorie, la différence de comportement entre les deux est fondamentale et essentielle.

En règle générale, il est bien plus pratique, sûr de créer un vrai environnement pour changer de façon momentanée les catcodes. De plus, le code devient bien plus lisible, et sur ce point, le vôtre ne peut que progresser ;)

(01 Mai '16, 00:48) unbonpetit ♦♦ unbonpetit's gravatar image

@unbonpetit en effet, je ne connaissais pas cette différence entre macro et environnements mais en voyant le résultat, je me doutais qu'il y avait anguille sous roche. J'ai corrigé:)

(01 Mai '16, 04:58) pluton pluton's gravatar image

@touhami en effet mais quand le document appelle la typographie française uniquement, \enquote utilise bien les guillemets à la française.

(01 Mai '16, 04:59) pluton pluton's gravatar image

@pluton oui c'est vrai lorsque le français est la longue principale de document (l'option french seule ou passé la dernière)

(01 Mai '16, 09:55) touhami touhami's gravatar image

J'aurais créé un environnement makeabrege ressemblant à peu près à celui-là :

Ouvrir dans l'éditeur
\documentclass{book}
\usepackage[frenchb,english]{babel}
\frenchbsetup{IndentFirst}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage[autostyle]{csquotes}

\newenvironment{makeabrege}
    {\begin{otherlanguage}{french}\chapter*{Abrégé}}
    {\end{otherlanguage}}

\begin{document}
\begin{makeabrege}
    Texte en français! D'accord? Oui: parce \enquote{je cite un passage; et un suivant}
\end{makeabrege}
\end{document}
Lien permanent

Publiée 01 Mai '16, 11:08

unbonpetit's gravatar image

unbonpetit ♦♦
1.8k18
Taux d'acceptation : 68%

oui, je n'étais pas loin avec les remarques de touhami plus haut. J'avais omis le [autostyle] de csquotes.

(01 Mai '16, 19:05) pluton pluton's gravatar image
1

de nos jours, la version recommandée pour charger french est plutôt \usepackage[french,main=english]{babel} et tant qu'à faire english en option de \documentclass serait peut-être bien indiqué.

(01 Mai '16, 22:25) Le TeXnicien de surface Le%20TeXnicien%20de%20surface's gravatar image
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.