Edition de macro TeXShop MAC

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.

Edition de macro TeXShop MAC

Messagepar adriauriol » Jeudi 31 Mai 2018, 14:20

Bonjour à tous,
J'utilise Latex sur mac avec le logiciel TeXShop (v.3.62).
Le logiciel propose de créer ses propres macros clavier.
J'aimerais un raccourci clavier qui me permette d'insérer du texte automatiquement dans un \hat{} ou un \vec{}.
J'arrive à créer un raccourci clavier qui insère \hat{} par exemple, mais j'aimerais aller un peu plus loin.
J'aimerais pouvoir taper la lettre sur laquelle je veux mettre un chapeau, puis mon raccourci clavier, et que la lettre se trouve directement entre les crochets.

J'ai essayé de recopier et d'adapter (en vain..) un macro qui est présent nativement dans le logiciel, le Insert Begin/End, qui permet de taper un mot, puis le raccourci clavier, et de créer automatiquement :

\begin{mot}
*Curseur placé ici*
\end{mot}


Je vous joint le macro en question :

Code: Tout sélectionner
--Applescript direct
-- Script to insert a begin/end block
-- Ramon Figueroa-Centeno March 10, 2009

tell application "TeXShop"
   
   -- The linefeed character.
   set linefeed to ASCII character 10
   
   set TeX_delimiters to {linefeed, return, tab} & characters of ¬
      " {}[](),:;.\\|/?!<>`'\"@#$%^~&-+=" as list
   
   set the front_document to the front document
   -- set the front_document to document #DOCUMENTNAME#
   
   -- The whole text of the document
   set whole_document to (the text of the front_document) as string
   
   -- The offset of the selection
   set selection_offset to offset of the selection of the front_document
   
   repeat until (selection_offset = 0) or (character selection_offset of ¬
      the whole_document is in TeX_delimiters)
      set selection_offset to selection_offset - 1
   end repeat
   set the offset of the selection of the front_document to selection_offset
   
   set selection_length to 0
   
   try
      set next_character to character (selection_offset + selection_length + 1) of ¬
         the whole_document
      repeat until (next_character is in TeX_delimiters)
         set selection_length to selection_length + 1
         try
            set next_character to character (selection_offset + selection_length + 1) of ¬
               the whole_document
         on error
            -- reached the end of the document
            exit repeat
         end try
      end repeat
   end try
   set the length of the selection of the front_document to selection_length
   
   -- The selection is empty, so stop
   if selection_length = 0 then
      beep
      return
   end if
   
   set environment_name to the content of the selection of the front_document
   set begin_environment to "\\begin{" & environment_name & "}"
   set end_environment to "\\end{" & environment_name & "}"
   set environment to begin_environment & linefeed & " " & linefeed & end_environment
   set insertion_point to (count of begin_environment) + selection_offset + 3
   
   -- determine if we are the beginning of a line
   set at_the_beginning to ((selection_offset = 0) or (character selection_offset of ¬
      the whole_document is in {linefeed, return}))
   
   -- determine if we are at the end of a line
   -- (since we do not know if we are at the end of the document
   -- we use a "try" to avoid having to count the characters of the document)
   set at_the_end to false
   try
      if character (selection_offset + selection_length + 1) of ¬
         the whole_document is in {linefeed, return} then
         set at_the_end to true
      end if
   on error
      set at_the_end to true
   end try
   
   if at_the_beginning and at_the_end then
      -- say "at the beginning and the end"
      set the content of the selection of the front_document to ¬
         environment
      set the offset of the selection of the front_document to ¬
         insertion_point - 1
   else if at_the_beginning then
      -- say "at the beginning"
      set the content of the selection of the front_document to ¬
         environment & linefeed
      set the offset of the selection of the front_document to ¬
         insertion_point
   else if at_the_end then
      -- say "at the end"
      set the content of the selection of the front_document to ¬
         linefeed & environment
      set the offset of the selection of the front_document to ¬
         insertion_point
   else
      -- say "at the middle"
      set the content of the selection of the front_document to ¬
         linefeed & environment & linefeed
      set the offset of the selection of the front_document to ¬
         insertion_point
   end if
end tell


À l'aide, ça me ferait gagner un temps fou pour écrire de la physique !

PS: Je suis nouveau sur le forum, j'espère que j'ai tout fait bien comme il faut haha :lol:
adriauriol
Utilisateur
 
Messages: 1
Inscription: Jeudi 31 Mai 2018, 14:01
Statut actuel: Post-bac | Master

Publicité

Re: Edition de macro TeXShop MAC

Messagepar desbonnez » Samedi 29 Septembre 2018, 17:14

Bonjour,

Voici pour \hat

Code: Tout sélectionner
\newcommand{\ha}[1]{\ensuremath{\hat{#1}}}


utilisation :
1) mettre l'instruction dans les préambules
2) il suffit alors de taper
Code: Tout sélectionner
\ha{v}


et faire une macro similaire pour \vec

DÉSOLÉ, mais je pense que ça ne répond pas à la question.... avec toutes mes excuses
desbonnez
Déca-utilisateur
 
Messages: 23
Inscription: Mercredi 21 Mars 2007, 17:45
Localisation: Comines (Belgique)
Statut actuel: Post-bac | Master

Re: Edition de macro TeXShop MAC

Messagepar rebouxo » Dimanche 30 Septembre 2018, 10:10

Non pas du tout. La méthode que tu proposes à tendance à rendre les codes illisibles et difficile à partager.
Est-ce que tu as lu : çà ?

Olivier
A line is a point that went for a walk. Paul Klee
Par solidarité, pas de MP
rebouxo
Modérateur
 
Messages: 6897
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: Edition de macro TeXShop MAC

Messagepar desbonnez » Dimanche 30 Septembre 2018, 19:18

Génial ! Le problème de Adriaudriol est résolu :

Dans la fenêtre Texshop, aller sur Source>Commandes de complètement>Editer le fichier de la commande...
Un fichier texte (CommandCompletion.txt) s'ouvre dans une fenêtre, il suffit ajouter (à la fin ou ailleurs dans le fichier) le texte
Code: Tout sélectionner
vv:=\vec{#INS#}

et enregistrer les modifications (CMD S)

Dans le fichier source, il suffit alors de taper vv suivi de la touche esc et c'est la commande \vec{} qui apparaît, avec le point d'insertion entre les accolades.
vv est le raccourci clavier; on peut évidemment choisir autre chose !
desbonnez
Déca-utilisateur
 
Messages: 23
Inscription: Mercredi 21 Mars 2007, 17:45
Localisation: Comines (Belgique)
Statut actuel: Post-bac | Master


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Ahrefs [Bot], Google [Bot], Grapeshot [Crawler], Magpie [Crawler] et 31 invités