web-dev-qa-db-fra.com

Comment forcer le retour à la ligne dans les listes?

J'ai un problème concernant le paquet de listage en latex. Je dois intégrer un code source du document XML suivant http://www.sparxsystems.com.au/downloads/profiles/EP_Extensions.xml dans l'annexe de mon mémoire de master. Le problème est que, peu importe les options que je transmets au paquet, je ne semble pas être capable de l'adapter à la page. Les lignes de la liste sont trop longues et le paquet des listes ne les enveloppe pas, ce qui semble étrange ... Quelle combinaison d'options fera l'affaire?

Pour le moment, j'utilise l'instruction lstset suivante:

\lstset{
breakindent=0em,
language=XML,
basicstyle=\footnotesize,
numbers=left,
numberstyle=\footnotesize,
stepnumber=2,
numbersep=5pt,
backgroundcolor=\color{white},
showspaces=false,
showstringspaces=false,
showtabs=false,
frame=single,
tabsize=2,
captionpos=b,
breaklines=true,
breakatwhitespace=true,
breakautoindent=true,
escapeinside={\%*}{*)},
linewidth=\textwidth
}

Qui, avec aucune autre option définie, et combiné avec la commande suivante:

\lstinputlisting{EP_Extensions.xml}

Répertorie la source du fichier donné dans la sortie suivante: alt text

39
Adam

Je viens d'avoir ce problème ...

breaklines a fonctionné pour moi, bien que vous deviez le définir sur true - la valeur par défaut est false:

\lstinputlisting[style=Python,
    caption=My Class,
    label={mine.py},
    breaklines=true,
  ]{../python/mine.py}

est à peu près ce que j'ai utilisé

55
PeterJCLaw

J'ai eu ce problème et cette page a beaucoup de rang sur Google alors voici la solution pour moi:

J'ai eu l'inclusion suivante: \usepackage[none]{hyphenat} qui provoque le problème décrit ci-dessus. Je l'utilisais pour résoudre le problème du latex qui casse automatiquement les lignes au milieu d'un mot, ce qui peut paraître vraiment stupide dans certaines circonstances.

Après avoir longuement cherché une alternative à cette solution, je n’ai trouvé rien d’approprié et j’ai opté pour des lignes correctement séparées, mais une césure mal placée.

9
Aaron

Pas une bonne réponse, mais une idée est d’envelopper le code source avant de l’inclure. Si vous êtes sur Linux, utilisez la commande fold pour cela. Clairement, cela fonctionne mieux si le texte est dans une police de largeur fixe, ce que je recommanderais dans tous les cas pour les listages de code.

2
second

Un suivi de réponse d'Aaron . J'utilisais basicstyle=\ttfamily pour mes annonces. J'ai donc pu autoriser la rupture de ligne en changeant

\usepackage[none]{hyphenat}

à

\usepackage[htt]{hyphenat}
%           ^^^

Le hyphenat docs indique que l’option htt "permet la césure de ... types de texte via \texttt ou \ttfamily." Dans mon cas d'utilisation, je n'ai vu aucune césure dans mes listes, mais j'ai eu la rupture.

0
cxw