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é

Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Ahrefs [Bot], Bing [Bot] et 6 invités