[OS X TeX] TeXShop macro: add column to tabular

Will Robertson will at mecheng.adelaide.edu.au
Fri Jul 16 11:01:08 CEST 2004


Hi all

Just before I race off I thought I'd put up my first efforts at a new 
macro for TeXShop. Instructions are the same: copy/paste into a new 
item in the TeXShop macro editor. iTeXMac version to come.

What to do with it:

Select a tabular environment, starting the selection with 
\begin{tabular} and ending it with \end{tabular}. If your table has one 
row per line and every line finishes with "\\", this macro can insert a 
new empty column in between the already existing columns in your 
tabular.

(It should work perfectly with my other "new table" macros I've 
recently posted.)

Try it out, send comments & bug reports to the list. I'll try and make 
it more robust over the next week or so.
Hope it works!

Will

<---CUT FROM HERE DOWN--->



-- CUSTOMISE AS YOU LIKE:
--property default_button : "Before"
property default_button : "After"
property cell_blob : "•"

-- DON'T EDIT!
property slashslash : "\\\\"

set q to display dialog "This macro adds a new column to the selected 
tabular. Please enter the column number to which you would like to add 
a new column before or after." default answer "1" buttons {"Before", 
"After"} default button default_button

set add_where to the button returned of q
set col_num to the text returned of q

if add_where = "Before" and col_num = "1" then
	display dialog "I'm no good with spacing when inserting a new first 
column. Do you still wish to continue?" buttons {"Cancel", "Continue"} 
default button "Continue"
end if

tell application "TeXShop"
	
	
	set tabular to the content of the selection of the front document
	set new_tabular to the first paragraph of tabular
	
	set lineone to the first paragraph of tabular
	set lineend to the last paragraph of tabular
	
	if lineone does not contain "\\begin{tabular}" or lineend does not 
contain "\\end{tabular}" then
		display dialog "Please select the whole tabular environment so the 
first line contains \"\\begin{tabular}\" and the last line contains 
\"\\end{tabular}\"."
	else
		
		repeat with ii from 2 to the count of the paragraphs of tabular
			
			set this_line to paragraph ii of tabular
			
			if paragraph ii of tabular contains "\\\\" then
				
				set trim_line to do shell script "echo " & the quoted form of 
this_line & " | cut -f 1-1 -d '\\\\'"
				
				
				set new_col to "& " & cell_blob & " &"
				if add_where = "After" then
					set line_start to do shell script "echo " & the quoted form of 
trim_line & " | cut -f -" & col_num & " -d '&'"
					set line_end to do shell script "echo " & the quoted form of 
trim_line & " | cut -f " & col_num + 1 & "- -d '&'"
					if line_end = "" then
						set new_col to "& " & cell_blob & " "
					end if
				else if add_where = "Before" then
					if col_num = "1" then
						set line_start to ""
						set new_col to "• &"
						set line_end to trim_line
					else
						set line_start to do shell script "echo " & the quoted form of 
trim_line & " | cut -f -" & col_num - 1 & " -d '&'"
						set line_end to do shell script "echo " & the quoted form of 
trim_line & " | cut -f " & col_num & "- -d '&'"
						if line_end = "" then
							set new_col to "& " & cell_blob & " "
						end if
					end if
				end if
				
				set new_line to line_start & new_col & line_end & slashslash
				set new_tabular to new_tabular & return & new_line
				
			else
				set new_tabular to new_tabular & return & this_line
			end if
			
		end repeat
		
		set the selection of the front document to new_tabular
		
	end if
	
end tell
--------------------- Info ---------------------
Mac OS X TeX: http://www.esm.psu.edu/mac-tex/
              http://latex.yauh.de/faq/
TeX FAQ: http://www.tex.ac.uk/faq
List Post: <mailto:MacOSX-TeX at email.esm.psu.edu>




More information about the macostex-archives mailing list