Voici une version qui marchera avec les macros à argument. Attention, quand je dis macros à argument, je veux dire des choses du genre \textit, \textbf, etc., pas \color{red} ou \textcolor{red}{...} qui ne peuvent pas fonctionner de toutes façons (car le code ne peut savoir si un argument est destiné à être tapé ou pas, donc ici "red" va être considéré comme du texte à taper donc remplacé par "r\hspace{..}e\hspace{...}d" ce qui provoquera une erreur) : il faudra donc toujours utiliser \colorred ou \textcolorred{...}. Pour ne pas réinventer la roue, j'ai utilisé le package ted en le patchant vite fait pour qu'il n'insère rien après une macros.
- Code: Tout sélectionner
\documentclass[a4paper]{article}
\usepackage{ted}
\usepackage{xcolor}
% patch pour ted
\makeatletter
\newif\if@ted@ignore@macros@
\@ted@ignore@macros@false
\renewcommand\ted@def@subsmac[2]{%
\ted@encode{#2}%
\long\expandafter\def\expandafter\ted@subsmac@loop
\expandafter##\expandafter1\the\ted@toks##2{%
\ted@add@toks{##1}%
\ifx##2\ted@@end
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi{%
\expandafter\ted@remove@nil\the\ted@toks
}{%
\global\advance\ted@count\@ne
\if@ted@ignore@macros@
\ifcat\relax\noexpand##1%
%
\else
\ted@add@toks{#1}%
\fi
\else
\ted@add@toks{#1}%
\fi
\ted@subsmac@loop##2}}%
\expandafter\ted@def@subsmac@\expandafter{\the\ted@toks}}
\makeatother
% macro
\makeatletter
\newcommand*{\btt@insert}{\hspace{0pt plus 1pt}}%
\newcommand{\breakabletexttt}[1]{\begingroup
\@ted@ignore@macros@true
\Substitute{#1}{}{\btt@insert}%
\texttt{\the\ted@toks}\endgroup
}
\makeatother
\begin{document}
\breakabletexttt{Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.}
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
\breakabletexttt{Lorem ipsum dolor sit amet, consectetur adipisicing elit, coucou \textit{do} eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. \scshape Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.}
\end{document}