2010-06-25 7 views
5

Je crée des documents en utilisant la classe memoir dans XeLaTeX. J'ai du mal à créer une présentation de paragraphe appropriée, et en particulier mon quand je crée des paragraphes avec \paragraph{}lorem ipsum LaTeX ignore les paramètres \parskip et \parindent.L'utilisation de parindent et parskip avec paragraph {} n'a aucun effet

Par exemple, si j'ai un document

\documentclass[oneside,11pt]{memoir} 
\usepackage{fontspec}% font selecting commands 
\usepackage{xunicode}% unicode character macros 
\usepackage{xltxtra} % some fixes/extras 

\begin{document} 
\setlength{\parskip}{0pt} % 1ex plus 0.5ex minus 0.2ex} 
\setlength{\parindent}{0pt} 
\pagestyle{plain} 

\paragraph{}orem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim 
urna, mattis eu aliquet eget, condimentum id nibh. In hac habitasse platea 
dictumst. 
\paragraph{}ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim urna, 
mattis eu aliquet eget, condimentum id nibh. In hac habitasse platea dictumst. 
\end{document} 

Ce typesets comme ceci:

      Orem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim urna, mattis eu aliquet eget, condimentum id nibh. En hac habitasse platea dictumst.

      ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim urna, mattis eu aliquet eget, condimentum id nibh. En hac habitasse platea dictumst.

Cela a mal à la fois le retrait des paragraphes et sauter, malgré \parskip et \parindent étant mis à zéro.

On pourrait attendre la sortie à typeset ressembler à ceci (ce qui est un choix laid de mise en forme de paragraphe, mais illustre la question):

Orem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim urna, mattis eu aliquet eget, condimentum id nibh. En hac habitasse platea dictumst.
ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim urna, mattis eu aliquet eget, condimentum id nibh. En hac habitasse platea dictumst.

Je note que lorsque je sépare les paragraphes par deux nouvelles lignes (à savoir ne pas utiliser \paragraph{} et) les paramètres \parskip et \parindent sont honorés.

Je serais très reconnaissant de savoir pourquoi, lors de l'utilisation \paragraph{}, les commandes \parskip et \parindent ne sont pas honorés, et comment on peut soit avoir ces commandes honorées ou bien quelles commandes atteindre le même effet aux paragraphes créé avec \paragraph{} .

Merci d'avoir lu.

Brian

Répondre

5

@Brian - J'ai commencé à mettre ceci dans un commentaire après votre commentaire à la réponse de Norman Gray, mais l'échantillon de code l'a rendu trop grand. \ paragraph {} ne change pas la composition des paragraphes réguliers. C'est juste que, contre-intuitivement, le paragraphe commencé par la commande \ paragraph {} n'est pas un paragraphe régulier; c'est un élément de section dans le document. Jouez avec le code ci-dessous pour voir comment \ parskip et \ parindent affectent les paragraphes réguliers mais pas l'élément de section "\ paragraph". (En fait, \ parskip affecte même les éléments \ paragraph {} mais l'espacement avant un élément \ paragraph {} est toujours légèrement supérieur à \ parskip, c'est pourquoi il y a toujours un espace entre les éléments \ paragraph {} même si \ parskip vaut 0.)

Je pense que 99% des documents LaTeX n'utilisent probablement jamais la commande de section \ paragraph {}. Les paragraphes réguliers dans LaTeX sont séparés par (1) une ligne vide ("paragraphes réguliers" 1 et 2 ci-dessous) ou (2) par la commande \ par ("paragraphes réguliers" 3 et 4 ci-dessous).

\documentclass[oneside,11pt]{memoir} 
\usepackage{fontspec}% font selecting commands 
%\usepackage{xunicode}% unicode character macros 
%\usepackage{xltxtra} % some fixes/extras 

\begin{document} 
\setlength{\parskip}{0pt} % 1ex plus 0.5ex minus 0.2ex} 
\setlength{\parindent}{0pt} 
\pagestyle{plain} 

\paragraph{paragraph section 2}adorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim 
urna, mattis eu aliquet eget, condimentum id nibh. In hac habitasse platea 
dictumst. 

regular paragraph 1 -- orem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim 
urna, mattis eu aliquet eget, condimentum id nibh. In hac habitasse platea 
dictumst. 

regular paragraph 2 -- orem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim 
urna, mattis eu aliquet eget, condimentum id nibh. In hac habitasse platea 
dictumst. 

\paragraph{paragraph section 2}ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim urna, 
mattis eu aliquet eget, condimentum id nibh. In hac habitasse platea dictumst. 
\par regular paragraph 3 -- orem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim urna, mattis eu aliquet eget, condimentum id nibh. In hac habitasse platea 
dictumst. 
\par regular paragraph 4 -- orem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim urna, mattis eu aliquet eget, condimentum id nibh. In hac habitasse platea 
dictumst. 

\end{document} 
+0

@Herbert: Merci beaucoup pour la réponse. J'utilise '\ paragraph' parce que, à l'occasion, les paragraphes doivent être numérotés et comptés, ce que je comprends est une bonne solution, mais peut-être pas le seul, basé sur cette question: http://stackoverflow.com/questions/543208 –

+0

Brian - Cela a du sens, mais la commande de section \ paragraph {} n'est pas celle que je choisirais. L'utilisation de l'environnement de liste 'enumerate' est probablement le meilleur choix, bien que vous puissiez avoir besoin de quelques changements de formatage contre-intuitifs. Si vous souhaitez continuer avec la section \ paragraph {}, vous pouvez utiliser le package "sectsty" pour ajouter la numérotation et modifier la mise en forme (lisez les docs sectsty pour plus d'informations), ou passez simplement à la liste enumerate. –

+1

Non, malgré le conseil dans l'autre réponse que vous avez pointé (et d'accord avec Herbert), 'paragraph n'est pas ce que vous voulez ici, parce que c'est juste une façon étrange d'épeler '\ subsubsubsection', donc ça n'a de sens si c'est utilisé dans une \ subsubsection'. C'est une commande de sectionnement - rien à voir avec les paragraphes. La définition de '\ N' dans votre question d'origine est la meilleure solution ici. J'ai dû le faire moi-même, n'a trouvé aucun paquet qui l'a fait, et ai eu recours à (quelque chose semblable à) cette solution. Pour des raisons LaTeX assez fondamentales, la numérotation des paragraphes est difficile à faire automatiquement. –

2

Cela ressemble à un comportement correct. Que pensez-vous que \paragraph devrait faire? Astuce: ce n'est pas pour séparer les paragraphes. Selon les documents du mémoire, \paragraph est l'une des commandes de sectionnement, après \subsubsection et avant \subparagraph. L'argument de la commande, que vous faites vide dans votre exemple, est pour le titre du paragraphe.

Vous paragraphes séparés les uns des autres en utilisant une ligne blanche (ce qui est le cas, vous avez trouvé où les dimensions sont à l'honneur \parskip et \parindent), ou dans certains cas, un peu plus exotiques à l'aide \par.

+0

Merci pour la réponse. Je pense que '\ paragraph' fournirait une section basée sur des paragraphes, sans changer la composition du paragraphe - c'est-à-dire l'honneur' \ par {indent, skip} 'et/ou n'introduirait pas sa propre indentation de paragraphe (dans une certaine mesure) et sauter. Je serais reconnaissant pour les idées sur la façon de supprimer toute mise en forme associée à la commande de section paragraphe. –

+0

@Brian - Je pense que le meilleur remède, dans votre cas, est de ne pas utiliser la commande \ paragraph {} du tout. Vous semblez n'avoir aucune utilité pour cela. Pourquoi l'utilisez-vous? –

Questions connexes