\input juste une partie d'un fichier

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

\input juste une partie d'un fichier

Messagepar touhami » Vendredi 05 Septembre 2014, 18:38

Bon jour.
Je vous propose ce petit code inspiré de http://tex.stackexchange.com/questions/4889/input-only-part-of-a-file
à tester et améliorer, ça peut servir.
fichier maître
Code: Tout sélectionner
\documentclass[a4paper]{article}
%--------------------------------------------------------
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
%--------------------------------------------------------
\usepackage{amsmath,amssymb}
%--------------------------------------------------------
\usepackage[frenchb]{babel}
%--------------------------------------------------------
\newread\mtread
\newcounter{mtlineno}
\newcounter{dmtlineno}
\newcounter{fmtlineno}
\newcommand{\mtput}{}
\newcommand*{\mtinput}[3]{%           % input de text-début à text-fin
  \IfFileExists{#1}{%
    \immediate\openin\mtread #1
    \def\mtmt{#2}
    \setcounter{mtlineno}{0}
    \setcounter{dmtlineno}{0}
    \setcounter{fmtlineno}{0}
    {\endlinechar=-1
    \mtserch{dmtlineno}{\value{mtlineno}}
    \def\mtmt{#3}
    \mtserch{fmtlineno}{\value{mtlineno}}
    \immediate\closein\mtread}
    \partialinput{#1}{\value{dmtlineno}}{\value{fmtlineno}}%
    }{%
    \errmessage{File `#1' doesn't exist!}%
  }%
}
\makeatletter
\newcommand*{\partialinput}[3]{%    % input de ligne-i à ligne-j     
  \IfFileExists{#1}{%
    \immediate\openin\mtread #1
    \setcounter{mtlineno}{1}
    \@whilenum\value{mtlineno}<#2 \do{%
     \mttread%
    }
    \addtocounter{mtlineno}{-1}
    \let\mtput\empty
    \begingroup
    \endlinechar\newlinechar
    \@whilenum\value{mtlineno}<#3 \do{%
      \readline\mtread to\mtline
      \edef\mtput{\mtput\mtline}%
      \stepcounter{mtlineno}%
    }
    \immediate\closein\mtread
    \expandafter\endgroup
    \scantokens\expandafter{\mtput}%
  }{%
    \errmessage{File `#1' doesn't exist!}%
  }%
}
\makeatother
%                      des raccourcis
\newcommand*{\mtserch}[2]{%
\loop
\mttread%
\ifx\mtline\mtmt\setcounter{#1}{#2}\fi
\ifnum\value{#1}=0
\repeat}
\newcommand*{\mttread}{%
\immediate\read\mtread to\mtline
\stepcounter{mtlineno}}
%--------------------------------------------------------         
\newcommand{\bla}{bla bla bla bla bla bla}
\newcommand{\bbla}{\bla\ \bla\ \bla\ \bla\ }
\newcommand{\Bla}{\bbla\ \bbla\ \bbla \par}
%--------------------------------------------------------
\begin{document}

test

% exemple 1
\partialinput{myfile}{11}{15}
\partialinput{myfile}{4}{6}

% exemple 2
\mtinput{myfile}{\begin{itemize}}{\Bla \Bla ici} 

\end{document}

fichier à input :myfile.tex
Code: Tout sélectionner
\section{Introduction}
\Bla \Bla \Bla
\Bla
\begin{center}
text centré
\end{center}

\Bla \Bla
\[x+y=\ell\]

\begin{itemize}
\item Mathematex
\item \TeX
\item et \LaTeX
\end{itemize}

\section{Deux}
\Bla \Bla ici

\textbf{text en gras}

Merci d’avance.
touhami
Méga-utilisateur
 
Messages: 431
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Publicité

Re: \input juste une partie d'un fichier

Messagepar touhami » Dimanche 07 Septembre 2014, 10:32

Bonjour à tous.
Pas de commentaire ?!
J'aimerais avoir votre avis s'il vous plait :
  • Est-ce que il y a des cas où ça marche pas ?
  • Peut-on l'améliorer ?
  • Est-ce que c'est inutile ?
Merci
touhami
Méga-utilisateur
 
Messages: 431
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: \input juste une partie d'un fichier

Messagepar raphkebab » Lundi 08 Septembre 2014, 08:33

Je n'aime pas trop le principe, car si ton fichier "myfile" n'est pas dans sa version définitive aucun changement ne se fera automatiquement. Tu risques donc de te retrouver avec un max de bouleau si tu ajoutes ou interverties dans paragraphes.
raphkebab
Kilo-utilisateur
 
Messages: 227
Inscription: Mardi 31 Décembre 2013, 12:37
Localisation: Caen
Statut actuel: Post-bac | Doctorat

Re: \input juste une partie d'un fichier

Messagepar touhami » Lundi 08 Septembre 2014, 09:09

Merci bien raphkebab.
Le put principale est (de généraliser la commande \input) on peut donc input (juste) la partie qu'on veut.
Par exemple, de ligne 4 à 85 ou bien le contenue d'une section quelconque.
Intervertir des paragraphes est aussi une fonctionnalité.
Un autre exemple d'utilisation est lorsque \input un fichier de macros qui viennent d'ici et de la.
Merci pour l’intervention.
touhami
Méga-utilisateur
 
Messages: 431
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: \input juste une partie d'un fichier

Messagepar raphkebab » Lundi 08 Septembre 2014, 09:57

Ce que je veux dire c'est que si je rajoute une ligne dans "myfile". Il faut vérifier toutes les commandes qui vont chercher du texte de la ligne n à m. Si je ne fais pas attention je peux insérer dans ma ligne une expression de début on de fin de citation. Si j'intervertis le dernier paragraphe que je veux cité et l'avant dernier il va me supprimer un paragraphe.

Le point faible de ce système est que rien dans le fichier "myfile" ne m'indique que je suis en train de faire une connerie quand je le modifie. Un système de labels est plus voyant.
raphkebab
Kilo-utilisateur
 
Messages: 227
Inscription: Mardi 31 Décembre 2013, 12:37
Localisation: Caen
Statut actuel: Post-bac | Doctorat

Re: \input juste une partie d'un fichier

Messagepar touhami » Lundi 08 Septembre 2014, 12:50

Oui, une bonne remarque. Merci.
touhami
Méga-utilisateur
 
Messages: 431
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: \input juste une partie d'un fichier

Messagepar marco56 » Lundi 08 Septembre 2014, 22:52

Pour ma part, j'aime autant scinder les fichiers au départ ou en cours de route. Cela me semble bien compliqué pour pas beaucoup d'utilité. Ce n'est bien sûr que mon avis...
marco56
Giga-utilisateur
 
Messages: 777
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant

Re: \input juste une partie d'un fichier

Messagepar touhami » Mardi 09 Septembre 2014, 13:39

Merci marco56 pour l’intervention.
touhami
Méga-utilisateur
 
Messages: 431
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: DotBot [Crawler], Grapeshot [Crawler], Yandex [Bot] et 8 invités