# TeX re-encoding with TeXShop

## $\rm \TeX$ re-encoding with TeXShop (OS X, 10.9)

For the TeXShop editor (tested on Mac OS 10.9), here is a tool which helps with the task of re-encoding old EoM pages. (Its functionality is similar to this method for Emacs, but without minibuffers.)

If the Applescript and perl scripts are installed as explained below, and the wiki text file for an old EoM page with png images is displayed in the front document of TeXShop, then one keystroke (Option-Command-S) removes all the png encodings and replaces them by $·$ (resp. $$·$$), prompting the user to fill in the appropriate $\rm\TeX$ code. The user can navigate between the placeholders $·$ and $$·$$ by pressing Ctrl-Command-F (forward) and Ctrl-Command-G (backwards). The script also cleans up the references list.

### Installation Instructions for a Single Macro

This has been tested with TeXShop on Mac OS 10.9 only, but will most likely also work for older OS versions. (Of course, TeXShop needs to be installed on your system).

• Create a folder called EOM_Scripts inside your Documents folder. (You can also use a different folder, but then you need to change one line in the script.)
• Open your favourite text editor (for example TextEdit) and copy these contents into a new document. Save this document (as a Plain Text file) with title eom_replace_for_mac.pl in the folder EOM_Scripts.
• Then copy these contents into a new document. Save this document (as a Plain Text file) with title eom_refs.pl in the folder EOM_Scripts.
• The two files you just created are perl scripts (written by Ulf Rehmann) and need to be made executable. In order to do this,
open the Terminal app and type
cd Documents/EOM_Scripts/
then press Enter and type
chmod u+x eom_replace_for_mac.pl
then press Enter and type
chmod u+x eom_refs.pl
then press Enter.
Now you can quit the Terminal app.
• Open the TeXShop app, go to TexShop>Preferences and set encoding to Unicode (UTF-8).
• Then go to Macros>Open Macro Editor, click on the Separator button and then on the New Item button. In the Name: field, replace New Item by EOM Clean Up. In the Key: field, enter a lowercase s and tick the Option box. Finally, copy the text of this document into the Content: field. (This text is an Applescript.) Finally, click on the Save button.

Note: if you decided not to use the folder Documents/EOM_Scripts, you need to enter the correct folder name on line 26 of the Applescript.

### Usage

#### Stand-alone

Open the EoM source in a TeXShop window and press Option-Command-S or, alternatively, select EOM Clean Up (installed earlier) from the Macros menu. Once the Applescript is finished, you can navigate between the placeholders $·$ and $$·$$ by pressing Ctrl-Command-F (forward) and Ctrl-Command-G (backward).

#### In conjunction with the Firefox add-on It's All Text

Follow the instructions here and here and don't forget to choose TeXShop as your editor in the Preferences!

Note: the It's All Text add-on saves temporary files in Library/Application\ Support/Firefox/Profiles/xxxxxxx.default/itsalltext/ (here xxxxxxx.default needs to be replaced by your profile), but does not seem to delete them after use. You can periodically delete the contents of this folder.

### Installation Instructions for Two Independent Macros

There may be situations in which only the list of references needs to be changed (when the maths is already in the right format) or in which only the maths needs to be changed (when the list of references is already in the right format). For this purpose the following two Apple scripts can be installed in TeXShop.

• Open the TeXShop app.
• Go to Macros>Open Macro Editor.
• Click on the New Item button. In the Name: field, replace New Item by EOM Clean Up Maths. Copy the text from the EOM_Clean_Up_Maths.scpt script below into the Content: field.
• Click on the New Item button. In the Name: field, replace New Item by EOM Clean Up Refs. Copy the text from the EOM_Clean_Up_Refs.scpt script below into the Content: field.
• Click on the Save button.

#### EOM_Clean_Up_Maths.scpt

--AppleScript

(*
This script can be used in conjunction with TeXShop to clean up EOM source files.
It replaces "<img ..." strings by $•$ and "<table class="eq" ..." strings by $$•$$.

After execution, the cursor is positioned at the first bullet •.
To go to the next bullet, press CTRL-COMMAND-F in TeXShop;
to go to the previous bullet (if it has not been replaced by TeX code), press
CTRL-COMMAND-G in TeXShop.

This script should be located in a folder called EOM_Scripts together with
the perl script (written by Ulf Rehmann)

eom_replace_for_mac.pl

In case a different folder is used, please change this below.

The perl script needs to be made executable. In order to do this,
open the Terminal app and type

cd Documents/EOM_Scripts/

then press <ENTER> and type

chmod u+x eom_replace_for_mac.pl

then press <ENTER>

Now you can quit the Terminal app.

*)

-- enter location of perl scripts here
set perlpath to "~/Documents/EOM_Scripts"

-- ACTUAL SCRIPT STARTS BELOW

----------------------------------------------------------------------------------------------------
-- copy TeXShop front document into script_source
tell application "TeXShop"
set script_source to text of front document as «class utf8»
end tell

-- make a temporary file on which the perl scripts can operate
set tempfile to make_temp_file()

-- copy script_source into the temporary file
write_to_temp_file(POSIX file tempfile, script_source)

-- replace img strings by $•$ (inline maths) and table strings by $$•$$ (display maths)
set tempstuff to (do shell script "cd " & perlpath & "; ./eom_replace_for_mac.pl " & " < " & quoted form of tempfile)

-- replace content of tempfile with tempstuff and convert to UNIX (LF) format; uses flip
write_to_temp_file(POSIX file tempfile, tempstuff)
do shell script "/bin/tcsh -c '~/Library/TeXShop/bin/flip -u  " & tempfile & "'"

-- copy everything back to the front document of TeXShop
tell application "TeXShop"
set text of front document to tempstuff as «class utf8»
end tell

-- move the cursor to the first "slot" $•$ or $$•$$
tell application "TeXShop"
activate
end tell

tell application "System Events"
tell process "TeXShop"
key code 126 using command down
key code 3 using {command down, control down}
end tell
end tell

-- stuff below used to create temporary files and write to them
on make_temp_file()
set folder_name to path to temporary items
set file_name to "eom_temp" & (random number from 100000 to 999999)
set existing_file_names to list folder folder_name
repeat while file_name is in existing_file_names
set file_name to "eom_temp" & (random number from 100000 to 999999)
end repeat
return (POSIX path of folder_name) & file_name
end make_temp_file

on write_to_temp_file(temp_file, temp_text)
set file_ref to open for access temp_file with write permission
set eof file_ref to 0
write temp_text to file_ref as «class utf8»
close access file_ref
end write_to_temp_file


#### EOM_Clean_Up_Refs.scpt

--AppleScript

(*
This script can be used in conjunction with TeXShop to clean up EOM source files.
It cleans up the list of references.

This script should be located in a folder called EOM_Scripts together with
the perl script (written by Ulf Rehmann)

eom_refs.pl

In case a different folder is used, please change this below.

The perl script need to be made executable. In order to do this,
open the Terminal app and type

cd Documents/EOM_Scripts/

then press <ENTER> and type

chmod u+x eom_refs.pl

then press <ENTER>

Now you can quit the Terminal app.

*)

-- enter location of perl scripts here
set perlpath to "~/Documents/EOM_Scripts"

-- ACTUAL SCRIPT STARTS BELOW

----------------------------------------------------------------------------------------------------
-- copy TeXShop front document into script_source
tell application "TeXShop"
set script_source to text of front document as «class utf8»
end tell

-- make a temporary file on which the perl scripts can operate
set tempfile to make_temp_file()

-- copy script_source into the temporary file
write_to_temp_file(POSIX file tempfile, script_source)

-- apply perl script (clean up references) to temporary file with output into a variable called tempstuff
set tempstuff to (do shell script "cd " & perlpath & "; ./eom_refs.pl " & " < " & quoted form of tempfile)

-- replace content of tempfile with tempstuff and convert to UNIX (LF) format; uses flip
write_to_temp_file(POSIX file tempfile, tempstuff)
do shell script "/bin/tcsh -c '~/Library/TeXShop/bin/flip -u  " & tempfile & "'"

-- copy everything back to the front document of TeXShop
tell application "TeXShop"
set text of front document to tempstuff as «class utf8»
end tell

-- stuff below used to create temporary files and write to them
on make_temp_file()
set folder_name to path to temporary items
set file_name to "eom_temp" & (random number from 100000 to 999999)
set existing_file_names to list folder folder_name
repeat while file_name is in existing_file_names
set file_name to "eom_temp" & (random number from 100000 to 999999)
end repeat
return (POSIX path of folder_name) & file_name
end make_temp_file

on write_to_temp_file(temp_file, temp_text)
set file_ref to open for access temp_file with write permission
set eof file_ref to 0
write temp_text to file_ref as «class utf8»
close access file_ref
end write_to_temp_file

How to Cite This Entry:
TeX re-encoding with TeXShop. Encyclopedia of Mathematics. URL: http://encyclopediaofmath.org/index.php?title=TeX_re-encoding_with_TeXShop&oldid=34480