
# coding: utf-8

# ## LaTeX Table Writer
# Paul J. Atzberger <br>
# [http://atzberger.org](http://atzberger.org)
# 
# Writes LaTeX for table of data.
# 
# 

# In[6]:


import numpy as np;
import os;

script_base_name = 'atz_make_latex_table_ex1'; # script name without extension

print("LaTeX Table Writer.");
print("Paul J. Atzberger");
print("http://atzberger.org");
print("");
print("Writes LaTeX for table of data.");
print("");

print("Packages:");
print("numpy.__version__ = " + str(np.__version__));
print("script_base_name = " + script_base_name);


# In[2]:


base_dir  = './output/%s'%(script_base_name);
if not os.path.exists(base_dir):
  os.makedirs(base_dir);
print("base_dir = " + base_dir);


# In[3]:


def make_table_1(values,row_labels,column_labels):
    num_rows = len(row_labels); num_cols = len(column_labels);
    # create the table
    s = "";

    # write opening
    s += r"\begin{tabular}";
    s += "{l|";
    s += (num_cols - 1)*"c" + "}" + "\n";

    # write row header
    for j in range(0,num_cols):
      if j > 0:
        s += r" & ";
      s += r"%s"%column_labels[j];
      if j == num_cols - 1:
        s+= r"\\" + "\n";

    s += r"\cline{1-%d}"%num_cols + "\n";
    for i in range(0,num_rows):
      s += r"%s"%row_labels[i];
      for j in range(0,num_cols-1):
        val = values[i,j];
        s += " & %.2e"%val;
        if j == num_cols - 2:
          s += r"\\" + "\n";    

    s += r"\end{tabular}" + "\n";    
    
    return s;


# In[4]:


# --- Make Table:
row_labels = [];
row_labels.append(r'First Run Name');
row_labels.append(r'Another Run Name');

column_labels = [];
column_labels.append(r'Method:');
column_labels.append(r'1000');
column_labels.append(r'2000');
column_labels.append(r'3000');
column_labels.append(r'Final');

num_rows = len(row_labels); num_cols = len(column_labels);
values = np.random.rand(num_rows,num_cols-1);

# -- 
s = make_table_1(values,row_labels,column_labels);
print(s)
print("Write file:");
filename = '%s/test_table_2.tex'%base_dir;
print("filename = " + filename);
fid = open(filename,'w');
fid.write(s);
fid.close();

