2  Latex specific HowTo

 2.1  How to obtain external file information about Latex build
 2.2  How to use minted
 2.3  How to increase memory for Latex?
 2.4  How to use Maple style sheets (packages) with texlive?
 2.5  How to install and use pdf2htmlEX?
 2.6  How to put image in a title page?
 2.7  How to convert pdf to eps?
 2.8  How to draw a baseline hairline for an equation?
 2.9  How to find what changed in TexLive?
 2.10  extracting selected pages from a pdf?
 2.11  how to include files in Latex
 2.12  combining complete documents into one
 2.13  how to install lyx on Linux
 2.14  using hyperlinks
 2.15  page breaks
 2.16  using tables
 2.17  passing flag from command line to pdflatex and htlatex?
 2.18  What levels are there? TOC configuration
 2.19  TOC related
 2.20  on fonts
 2.21  pixels and Latex
 2.22  on equations
 2.23  How to upgrade latex once installed?
 2.24  Things to do post Installation of texlive 2016 on Linux
 2.25  Installation of texlive 2015 on Linux
 2.26  Installation of texlive 2014 on Linux
 2.27  installation of TEX Live 2013
 2.28  on using multicols
 2.29  How to place figures
 2.30  Finding definitions of LaTEX control sequences?
 2.31  wrapping text around figures
 2.32  what tex editors to use?
 2.33  How to define text block to use in more than one place?
 2.34  adjusting text, parskip, parindent
 2.35  How to reduce size of math in one place only?
 2.36  How to hand written fonts and other fonts using xelatex?
 2.37  How to use Times font for the whole document in Latex?
 2.38  how to pass variable to latex to change the compile content?
 2.39  how to generate Latex from other programming languages?
 2.40  how to debug Latex?
 2.41  How to find history of Tex? Family tree?
 2.42  Where to put a style file that is downloaded and not part of TexLive?
 2.43  How to convert pdf to eps?
 2.44  what are values of extensions for images
 2.45  How to include pdf pages as is in Latex
 2.46  How to automatically build images needed for the latex file?
 2.47  Some lualatex examples using Lua inside Latex

2.1  How to obtain external file information about Latex build

  1. use \RequirePackage{snapshot} see http://tex.stackexchange.com/questions/24542/create-list-of-all-external-files-used-by-master-latex-document
  2. use \listfiles
  3. use lualatex -recorder foo.tex it should create foo.fls

2.2  How to use minted

First install this

sudo apt-get install python-pygments

The above installed old version 1.6, so next I tried this

sudo pip install --upgrade pygments

Anow the version is 2.1.3

Then call pdflatex like this

pdflatex --shell-escape foo.tex

Where foo.tex is

\documentclass[11pt]{article}%ext
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc} %DO NOT USE WIT LUALATEX, only with pdflatex
\usepackage[tracking,protrusion=true,expansion=true]{microtype}
\usepackage[margin=1in]{geometry}

\usepackage{minted}
\usepackage{upquote} %to fix string quotes

\begin{document}
\begin{minted}[mathescape,linenos=true,fontfamily=tt,fontsize=\normalsize]
                {matlab}
clear all; close all;
t   = 0:0.05:50;
s   = tf('s');
sys = 1/(s^2+0.2*s+1);
y   = step(sys,t);
plot(t,y,'-r')
hold on
y  = impulse(sys,t);
plot(t,y,'-k')
title('Step and Impulse responses');
xlabel('t');
ylabel('y(t)');
xlim([0 50]);
ylim([-0.8 2]);
legend('step','impulse');
grid on;
set(gcf,'Position',[10,10,310,310]);
\end{minted}
\end{document}

To compile with tex4ht do this

htlatex foo.tex "" "" "" -shell-escape

To compile with make4ht do make4ht foo.tex "--shell-escape"

2.3  How to increase memory for Latex?

sudo vi /usr/local/texlive/2015/texmf.cnf

Added these:

% (Public domain.)
% This texmf.cnf file should contain only your personal changes from the
% original texmf.cnf (for example, as chosen in the installer).
%
% That is, if you need to make changes to texmf.cnf, put your custom
% settings in this file, which is .../texlive/YYYY/texmf.cnf, rather than
% the distributed file (which is .../texlive/YYYY/texmf-dist/web2c/texmf.cnf).
% And include *only* your changed values, not a copy of the whole thing!
%

buf_size=90000000
pool_size=9000000
main_memory=8000000

Then run

sudo /usr/local/texlive/2015/bin/x86_64-linux/fmtutil-sys --all

2.4  How to use Maple style sheets (packages) with texlive?

I have $HOME/texmf and so did these steps

 
cd $HOME/texmf/tex/latex 
mkdir maple 
cd maple 
cp C:\Program Files\Maple 18\etc\*.sty .  %I use Vbox 
 
in other words 
 
cp /maple_location/etc/*.sty .  %copy all style files over

If using miketex, then use the GUI, add ROOT, and click apply.

2.5  How to install and use pdf2htmlEX?

To install

 
sudo apt-get update 
sudo apt-get install pdf2htmlex

To use

pdf2htmlEX --zoom 1.3 HW2_solution.pdf

To remove the side-bar which has extra TOC do

pdf2htmlEX --zoom 1.3 --embed-outline 0  foo.pdf

pdf2htmlEX seems to use html as extension. no option to change it so use this to make it use .htm which is what I use

pdf2htmlEX --zoom 1.3 --embed-outline 0  foo.pdf > foo.htm

One thing that I still do not understand about this program. It converts the whole pdf file to html page. Ok. But then what is the difference between this and using the build-in pdf reader in a browser, such as with Chrome for example?

I could not find how to make it split pages by sections and chapters and such as I can do with tex4ht. Without this ability, I am not sure how useful this will be for me. It is just like using the pdf itself this way. Will try to find out about this.

2.6  How to put image in a title page?

\documentclass[oneside,a4paper  , 12 pt]{book}
\usepackage{titlepic}
\usepackage{graphicx}
\usepackage{caption}
%\usepackage{package}
%\usepackage[space]{grffile}

\begin{document}
\title{my book}
\author{me}
\date{\today}
\titlepic{
\begin{figure}[t!]
\centering
\includegraphics[width=0.7\linewidth]{img.png}
\caption{}
\label{fig:img}
\end{figure}
}
\maketitle

test

\end{document}
pict

2.7  How to convert pdf to eps?

See http://tex.stackexchange.com/questions/20883/how-to-convert-pdf-to-eps This inkscape input.pdf --export-eps=output.eps works ok, but the above command gives errors such as these on some images:

>inkscape 3d_1.pdf --export-eps=3d_1.eps
** Message: Invalid glyph found, continuing...
** Message: Invalid glyph found, continuing...
** Message: Invalid glyph found, continuing...
** Message: Invalid glyph found, continuing...
** Message: Invalid glyph found, continuing...
** Message: Invalid glyph found, continuing...
** Message: Invalid glyph found, continuing...
** Message: Invalid glyph found, continuing...

While on the same file, pdf2eps below works fine.

To crop pdf also (which can be useful) use this script by Herbert from above link

#!/bin/sh
# $Id: pdf2eps,v 0.01 2005/10/28 00:55:46 Herbert Voss Exp $
# Convert PDF to encapsulated PostScript.
# usage:
# pdf2eps <page number> <pdf file without ext>

pdfcrop $2.pdf
pdftops -f $1 -l $1 -eps "$2-crop.pdf"
rm  "$2-crop.pdf"
mv  "$2-crop.eps" $2.eps

I wrote the following simple script prep which process all the pdf image files and generates the needed files for tex4ht.

#!/bin/bash
for file in $1; do
    filename=${file%.*}
    pdf2svg "$filename.pdf" "$filename.svg"
    pdf2eps 1 "$filename"
done

It is called like this prep "*.pdf" or for one file prep foo.pdf it will generate a .svg and .eps for each file.

2.8  How to draw a baseline hairline for an equation?

This is thanks to @egreg from Tex stackexchange:

\newcommand{\rl}{\rlap{\vrule height 0pt depth .1pt width \textwidth}}

and then use \rl in the left hand sides of the equations.

2.9  How to find what changed in TexLive?

see http://tex.stackexchange.com/questions/156908/whats-new-on-tlmgr one good method is by egreg which is this command http://tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/?sortby=date

2.10  extracting selected pages from a pdf?

To extract selected pages from a pdf into a separate pdf see http://www.linuxjournal.com/content/tech-tip-extract-pages-pdf

Use pdftk (free install on linux, use package manager). Here is an example

pdftk A=myfile.pdf cat A6-10 output result.pdf

2.11  how to include files in Latex

see http://tex.stackexchange.com/questions/246/when-should-i-use-input-vs-include

2.12  combining complete documents into one

2.12.1  combining using manual sectioning

Problem description: I have many standalone Latex documents that I want to compile into documents on their own, but also I want to combine them into one main document and have the table of contents and other references work as if all documents were written as one file.

Solution:

Given this example layout

 
 home/main.tex 
 home/folderA/a.tex

Where main.tex and a.tex are self contained Latex files, each with its own title, table of contents and can include local resources such as images and listings.

Add the package \usepackage{standalone} in main.tex to strip all the preamble from the included latex files. Also add it to each child document, so that each child document can be compiled as standalone as well.

To use the above, make sure the master document at the top level includes all packages included by all the children.

Setup main.tex

 
\documentclass[12pt,notitlepage]{article} 
\usepackage{standalone}% 
\usepackage{listings} 
\usepackage{import} 
\usepackage{lipsum} 
\usepackage{graphicx} 
\usepackage{hyperref} 
 
\makeatletter 
\providecommand{\currentimportpath}{\import@path} 
\makeatother 
 
\begin{document} 
\title{This is my document home/main.tex title} 
\author{me} 
\maketitle 
\tableofcontents 
 
\section{this is first section in main.tex} 
once upon a time, and now include the other document 
 
\subimport{folderA/}{a} 
\end{document}

Setup a.tex as follows. This is important: remember to add \standalonetrue after \usepackage{standalone} in each child package. We need this to be able to compile each child package on its own and get a table of contents and title. We will us an \ifstandalone logic in each child to check if we are building it standalone or not. When the main is build, this flag will automatically be false, hence we will not get table of content shown in each child. Little complicated, but just do it as shown:

 
\documentclass[12pt,notitlepage]{article} 
\usepackage{standalone} 
\standalonetrue   %remember this ! 
 
\usepackage{listings} 
\usepackage{import} 
\usepackage{lipsum} 
\usepackage{graphicx} 
\usepackage{hyperref} 
 
\makeatletter 
\providecommand{\currentimportpath}{\import@path} 
\makeatother 
 
\begin{document} 
 
\ifstandalone   %Do this, so toc only shows when build standalone 
  \title{This is my document home/folderA/a.tex title} 
  \author{me} 
  \maketitle 
  \tableofcontents 
\fi 
 
\section{first section in file a.tex} 
\includegraphics{a.png} 
 
\section{second section in file a.tex} 
\lstinputlisting{a.txt} 
 
\section{third section in file a.tex} 
you can find my report \href{\currentimportpath a.txt}{here} 
 
\lipsum[1] 
\end{document}

pict

Now you can compile a.texm or its own

cd home/folderA
pdflatex a.tex

And the result is

pict

But when compiling main.tex cd home; pdflatex main.tex the result shows a table of contents that includes all children documents as shown

pict

This is the result side by side

pict

This zip file contains the tree shown above with all the files needed to rebuild it.

2.12.2  combining using automatic sectioning

One problem with the above approach, is that we had to be explicit with add \section and \subsection in the correct order in different documents in different folders.

It would be better if this can be automated. Using a method shown here http: //tex.stackexchange.com/questions/9024/is-there-a-program-that-allows-to-move-sections-and-automatically-adjusts-the-le and I modified it slightly, here are the files needed. First assume we have a tree like this:

home/main.tex
home/A/a.tex
home/A/B/b.tex

and we want to build main.tex, which includes a.tex, and where a.tex also includes b.tex, and where we can build each document as standalone. These are the 3 files

main.tex

\documentclass[12pt,notitlepage]{book}
\usepackage{standalone}%
\input{commonlatex}

\begin{document}
\title{This is my document home/main.tex title}
\author{me}
\maketitle
\tableofcontents

\begin{deeplevel}{this is first section in main.tex}
once upone a time, and now include the other document

\subimport*{folderA/}{a}
\end{deeplevel}
\end{document}

the file a.tex is

\documentclass[12pt,notitlepage]{article}
\usepackage{standalone}
\standalonetrue
\input{commonlatex}

\begin{document}

\ifstandalone
  \setcounter{level@depth}{1}
  \title{This is my document home/folderA/a.tex title}
  \author{me}
  \maketitle
  \tableofcontents
\fi

\begin{deeplevel}{first section in file a.tex}
\includegraphics{a.png}

  \subimport*{folderAB/}{b}

  \begin{deeplevel}{this should show up below the above}
     \lipsum[75]
  \end{deeplevel}

\end{deeplevel}

\begin{deeplevel}{second section in file a.tex}
\lstinputlisting{a.txt}
\end{deeplevel}

\begin{deeplevel}{third section in file a.tex}
you can find my report \href{\currentimportpath a.txt}{here}
\end{deeplevel}

\lipsum[1]
\end{document}

and the file b.tex is

\documentclass[12pt,notitlepage]{article}
\usepackage{standalone}
\standalonetrue
\input{commonlatex}

\begin{document}

\ifstandalone
  \setcounter{level@depth}{2}
  \title{This is my document home/folderA/folderB/b.tex title}
  \author{me}
  \maketitle
  \tableofcontents
\fi

\begin{deeplevel}{first section in file b.tex}
\lipsum[75]

\begin{deeplevel}{this should show up below the above}
  \lipsum[75]
\end{deeplevel}

\end{deeplevel}

\begin{deeplevel}{second section in file b.tex}
\lstinputlisting{b.txt}
\end{deeplevel}


\begin{deeplevel}{third section in file b.tex}
you can find my report \href{\currentimportpath b.txt}{here}
\end{deeplevel}

\lipsum[1]
\end{document}

and the common include file is

%======================================
\makeatletter
\newcounter{level@depth}
\setcounter{level@depth}{-1}

\newenvironment{deeplevel} %
{ %
  \addtocounter{level@depth}{1}%

  \ifcase\c@level@depth
  \expandafter \part
  \or \expandafter \chapter
  \or \expandafter \section
  \or \expandafter \subsection
  \or \expandafter \subsubsection
  \or \expandafter \paragraph
  \or \expandafter \subparagraph
  \or \expandafter \subsubparagraph
  \else
  \PackageError{deeplevel}
  { %
    Sections are too deeply nested.%
  } %
  { %
    Trying to recover with \string\subsubparagraph%
  } %
  \expandafter \subsubparagraph
  \fi
} %
{%
  \addtocounter{level@depth}{-1}%
}

\makeatother

Now one is able to build main.tex or a.tex or b.tex each on its own, and still get a complete document for each.

2.13  how to install lyx on Linux

see http://wiki.lyx.org/LyX/LyXOnUbuntu

if not in the package manager PPA, then do

sudo add-apt-repository ppa:lyx-devel/daily (add the PPA)
sudo apt-get update (update so that apt is aware of the new PPA)
sudo apt-get install lyx2.0 (install from the PPA)
lyx2.0 &

2.14  using hyperlinks

http://biosun1.harvard.edu/~paciorek

More info on pdf hyper-references is at http://www.tug.org/applications/hyperref/manual.html.

2.15  page breaks

reference: http://help-csli.stanford.edu/tex/latex-pagebreaks.shtml


\pagebreak[]
 use to start a new page at the end of the current line. Without
 arguments if forces a page break. With arguments of 0,1,2,3,
 or 4 it suggests that this is a good place to break. 4 being
 equivalent to no argument and forcing the break. No extra space
 is put at the end of the page.
\nopagebreak
 similar to \pagebreak except it prevents a pagebreak at the end
 of the current line. I rarely use it.
\samepage
 pretty much as the latex manual says. I rarely use it.
\newpage
 forces a break at the point and puts in space as needed at the
 end of the page.
\clearpage
    similar to \newpage but figures are also printed
\cleardoublepage
    similar to \clearpage but will force another page if needed so
    the next page with print is odd numbered.

2.16  using tables

From http://www.andy-roberts.net/writing/latex/tables


The tabular is another such environment, designed for formatting your data into
nicely arranged tables. Arguments are required after the environment declaration to
describe the alignment of each column. The number of columns does not need to
be specified as it is inferred by looking at the number of arguments provided.
It is also possible to add vertical lines between the columns here.

The following symbols are available to describe the table columns:
l left-justified column
c centered column
r right-justified column
p{width} paragraph column with text vertically aligned at the top
m{width} paragraph column with text vertically aligned in the middle
b{width} paragraph column with text vertically aligned at the bottom
| vertical line
|| double vertical line

Once in the environment,
& column separator
\\ start new row
\hline horizontal line

to adjust the spacing between rows in a latex table, add square
brackets and the size adjustment after the linebreak.

for instance, to compress rows by 1 inch:

    entry1 & entry2 & entry3 \\[-1in]

2.17  passing flag from command line to pdflatex and htlatex?

for htlatex

htlatex main.tex "" "" ""  "\def\flag{}"

for pdflatex

pdflatex "\def\flag{}\input{main.tex}"

and now inside main.tex write

\documentclass{article}
\begin{document}
\ifdefined\flag
  yes
\else
 no
\fi
\end{document}

2.18  What levels are there? TOC configuration

from http://www.emerson.emory.edu/services/latex/latex_132.html

Sectioning commands provide the means to structure your text into units.

\part
\chapter (report style only)
\section
\subsection
\subsubsection
\paragraph
\subparagraph
\subsubparagraph (milstd and book-form styles only)
\subsubsubparagraph (milstd and book-form styles only)

 \part  -1    -----> school
 \chapter  0  ------> semester
 \section  1  ------> course
 \subsection  2  -------> HWs
 \subsubsection  3 ----> HW1,2,3....
 \paragraph  4   --------> part(a),(b),.....
 \subparagraph  5

2.19  TOC related

\setcounter{tocdepth}{n} where n is an integer, tells latex how deep to make TOC. n depends on the class type, see above.

\setcounter{secnumdepth}{m} tells latex which entries in the TOC (which depends on the first command above) to give it a number to the left side. default is 3 I think. But better to have numbers for all sections and subsection in TOC.

Do the above in preamble of document.

some links on TOC in latex

  1. http://www.andy-roberts.net/writing/latex/contents
  2. http://help-csli.stanford.edu/tex/latex-sections.shtml
  3. http://facweb.knowlton.ohio-state.edu/pviton/support/swphtpa4.html
  4. To make paragraph make new entry in TOC below subsubsection, see this

can change depth of toc using  \setcounter{tocdepth}{depth} in preamble. it looks like default depth is 3.

2.20  on fonts

using Fourier fonts

  \usepackage{fourier}
  \usepackage[T1]{fontenc}

may be need to install. I got error

! LaTeX Error: File `fourier.sty' not found.

remember the $ texhash command also.

try downloading it from http://www.ctan.org/pkg/fourier but I'll wait until Tex Live 2013 is out. There are more steps to do to install it it seems.

2.21  pixels and Latex

From David Carlisle

 40px is a variable size depending on screen resolution,
if you take a nominal 76 dpi then it's 40/76 on 1in.

2.22  on equations

Need to work on this.

2.22.1  using align with references

see http://www.dickimaw-books.com

This image below from the above page http://www.dickimaw-books.com/latex/novices/html/align.html

pict

2.23  How to upgrade latex once installed?

see http://tex.stackexchange.com/questions/55437/how-do-i-update-my-tex-distribution

Basically, just do

sudo /usr/local/texlive/2014/bin/i386-linux/tlmgr  update --self
sudo /usr/local/texlive/2014/bin/i386-linux/tlmgr update --all

For TL 2015

sudo /usr/local/texlive/2015/bin/x86_64-linux/tlmgr  update --self
sudo /usr/local/texlive/2015/bin/x86_64-linux/tlmgr update --all

2.24  Things to do post Installation of texlive 2016 on Linux

These are the steps I need to do after installation of TL

  1. fix \pgfusepathqfill bug. See http://tex.stackexchange.com/questions/185349/error-using-pgfsysdriver-with-tex4ht-only-shows-up-with-texlive-2014-ok-with-t
  2. There is a new error when compiling make4ht --lua see http://tex.stackexchange.com/questions/315162/error-with-tex4ht-under-tl-2016-when-using-lua-string-contains-an-invalid-utf-8 but this should be fixed very soon (ok, allready fixed)
  3. If compiling with lualtaex, need to add this to all files
    \IfFileExists{luatex85.sty}
    {
    \usepackage{luatex85}
    }
    {}
  4. Watch out, do not use \usepackage[T1]{fontenc} Makes tex4ht \verb not accept different fonts. Bug. see http://tex.stackexchange.com/questions/318232/why-tex4ht-do-not-change-font-size-of-verb-when-including-usepackaget1font
  5. Increase bufsize, else it will fail on some large builds

    sudo vi /usr/local/texlive/2016/texmf.cnf

    Added these:

    % (Public domain.)
    % This texmf.cnf file should contain only your personal changes from the
    % original texmf.cnf (for example, as chosen in the installer).
    %
    % That is, if you need to make changes to texmf.cnf, put your custom
    % settings in this file, which is .../texlive/YYYY/texmf.cnf, rather than
    % the distributed file (which is .../texlive/YYYY/texmf-dist/web2c/texmf.cnf).
    % And include *only* your changed values, not a copy of the whole thing!
    %

    buf_size=90000000
    pool_size=9000000
    main_memory=8000000
  6. install pdf2svg sudo apt-get install pdf2svg
  7. install scour (do not use apt-get install scour, use pip to get latest version)

    sudo apt-get install python-pip
    sudo pip install scour

    Downloading/unpacking scour
      Downloading scour-0.33.tar.gz
      Running setup.py (path:/tmp/pip_build_root/scour/setup.py) egg_info for package scour

    Downloading/unpacking six>=1.9.0 (from scour)
      Downloading six-1.10.0-py2.py3-none-any.whl
    Installing collected packages: scour, six
      Running setup.py install for scour

        Installing scour script to /usr/local/bin
      Found existing installation: six 1.5.2
        Not uninstalling six at /usr/lib/python2.7/dist-packages, owned by OS
    Successfully installed scour six
    Cleaning up...

    >which scour
    /usr/local/bin/scour

    >scour --version
    0.33

    used to shrink size of svg images (clean them)

  8. fix algorithm2e.sty so that lualatex can use
    styles>kpsewhich  algorithm2e.sty
    /usr/local/texlive/2016/texmf-dist/tex/latex/algorithm2e/algorithm2e.sty

    and remove 2 lines with non-ascii chars, around lines 1313 and 1315.

  9. Make sure not to use subimport* but use \subimport
  10. install sudo apt-get install imagemagick for convert command
  11. install  sudo apt-get install optipng to optimize png

2.25  Installation of texlive 2015 on Linux

Download the .gz file from http://ctan.math.washington.edu/tex-archive/systems/texlive/tlnet/

install-tl-unx.tar.gz

Then extract

gunzip install-tl-unx.tar.gz
tar -xvf install-tl-unx.tar

Then move to the folder created from the above and do

sudo ./install-tl

Make sure to change the paper type to letter. The default is A4.

======================> TeX Live installation procedure <=====================

======>   Letters/digits in <angle brackets> indicate   <=======
======>   menu items for commands or options            <=======

 Detected platform: GNU/Linux on Intel x86

 <B> binary platforms: 1 out of 19

 <S> set installation scheme (scheme-full)

 <C> customizing installation collections
     47 collections out of 48, disk space required: 4061 MB

 <D> directories:
   TEXDIR (the main TeX directory):
     /usr/local/texlive/2015
   TEXMFLOCAL (directory for site-wide local files):
     /usr/local/texlive/texmf-local
   TEXMFSYSVAR (directory for variable and automatically generated data):
     /usr/local/texlive/2015/texmf-var
   TEXMFSYSCONFIG (directory for local config):
     /usr/local/texlive/2015/texmf-config
   TEXMFVAR (personal directory for variable and automatically generated data):
     ~/.texlive2015/texmf-var
   TEXMFCONFIG (personal directory for local config):
     ~/.texlive2015/texmf-config
   TEXMFHOME (directory for user-specific files):
     ~/texmf

 <O> options:
   [ ] use letter size instead of A4 by default
   [X] allow execution of restricted list of programs via \write18
   [X] create all format files
   [X] install macro/font doc tree
   [X] install macro/font source tree
   [ ] create symlinks to standard directories

 <V> set up for portable installation

Actions:
 <I> start installation to hard disk
 <H> help
 <Q> quit

Enter O and then

Options setup:

 <P> use letter size instead of A4 by default: [X]
 <E> execution of restricted list of programs: [X]
 <F> create format files:                      [X]
 <D> install font/macro doc tree:              [X]
 <S> install font/macro source tree:           [X]
 <L> create symlinks in standard directories:  [ ]
            binaries to:
            manpages to:
                info to:

Actions: (disk space required: 4061 MB)
 <R> return to main menu
 <Q> quit

Enter command: R

I do not know what create symlinks in standard directories is supposed to be set to so leave it blank and add path in your .bashrc to the latex bin folder

Enter command: I
Installing to: /usr/local/texlive/2015
Installing [0001/3068, time/total: ??:??/??:??]: 12many [376k]
Installing [0002/3068, time/total: 00:07/09:58:59]: 2up [66k]
Installing [0003/3068, time/total: 00:08/09:43:10]: Asana-Math [482k]
Installing [0004/3068, time/total: 00:17/09:51:45]: ESIEEcv [137k]
Installing [0005/3068, time/total: 00:20/10:06:31]: FAQ-en [4971k]
Installing [0006/3068, time/total: 01:55/10:12:15]: GS1 [1100k]
Installing [0007/3068, time/total: 02:15/10:07:53]: HA-prosper [266k]
Installing [0008/3068, time/total: 02:20/10:07:44]: IEEEconf [188k]
Installing [0009/3068, time/total: 02:24/10:09:36]: IEEEtran [1355k]
Installing [0010/3068, time/total: 02:49/10:07:00]: MemoirChapStyles [739k]
Installing [0011/3068, time/total: 03:03/10:07:07]: SIstyle [338k]
Installing [0012/3068, time/total: 03:10/10:09:07]: SIunits [284k]
Installing [0013/3068, time/total: 03:15/10:07:54]: Tabbing [217k]
Installing [0014/3068, time/total: 03:20/10:10:39]: Type1fonts [516k]
Installing [0015/3068, time/total: 03:30/10:11:13]: a0poster [119k]
Installing [0016/3068, time/total: 03:32/10:10:28]: a2ping [48k]
Installing [0017/3068, time/total: 03:33/10:10:45]: a2ping.i386-linux [1k]
Installing [0018/3068, time/total: 03:33/10:10:44]: a4wide [133k]
Installing [0019/3068, time/total: 03:35/10:09:15]: a5comb [91k]
Installing [0020/3068, time/total: 03:37/10:10:03]: aastex [1292k]
Installing [0021/3068, time/total: 04:05/10:18:46]: abbr [4k]
Installing [0022/3068, time/total: 04:05/10:18:36]: abc [156k]
Installing [0023/3068, time/total: 04:09/10:21:06]: abntex2 [4493k]
.....
running fmtutil-sys --no-error-if-no-engine=luajittex --all ...done
running package-specific postactions
finished with package-specific postactions

 See
   /usr/local/texlive/2015/index.html
 for links to documentation.  The TeX Live web site
 contains updates and corrections: http://tug.org/texlive.

 TeX Live is a joint project of the TeX user groups around the world;
 please consider supporting it by joining the group best for you. The
 list of user groups is on the web at http://tug.org/usergroups.html.

 Add /usr/local/texlive/2015/texmf-dist/doc/info to INFOPATH.
 Add /usr/local/texlive/2015/texmf-dist/doc/man to MANPATH
   (if not dynamically found).

 Most importantly, add /usr/local/texlive/2015/bin/i386-linux
 to your PATH for current and future sessions.

 Welcome to TeX Live!
Logfile: /usr/local/texlive/2015/install-tl.log
>

Now install make4ht. Make sure it goes to ~/texmf/scripts/lua/make4ht and to set the path to point to the above as well.

No need to install lua as it comes with TL

Make sure to fix the pgfsysdriver to be able to use tikz, see this

2.26  Installation of texlive 2014 on Linux

Download the .gz file from http://ctan.math.washington.edu/tex-archive/systems/texlive/tlnet/

install-tl-unx.tar.gz 16-Jun-2014 18:26  3.2M

Then extract

gunzip install-tl-unx.tar.gz
tar -xvf install-tl-unx.tar

Then move to the folder created from the above and do

sudo ./install-tl

Make sure to change the paper type to letter. The default is
A4.

Enter command: I
Installing to: /usr/local/texlive/2014
....
TeX Live is a joint project of the TeX user groups around the world;
 please consider supporting it by joining the group best for you. The
 list of user groups is on the web at http://tug.org/usergroups.html.


 Add /usr/local/texlive/2014/texmf-dist/doc/info to INFOPATH.
 Add /usr/local/texlive/2014/texmf-dist/doc/man to MANPATH
   (if not dynamically found).

 Most importantly, add /usr/local/texlive/2014/bin/i386-linux
 to your PATH for current and future sessions.

 Welcome to TeX Live!

 Summary of warning messages during installation:
   Partial download of http://mirror.jmu.edu/pub/CTAN/systems/texlive/tlnet/archive/chletter.doc.tar.xz found, removing it.

Logfile: /usr/local/texlive/2014/install-tl.log
>

2.26.1  post installation for tex4ht issues

I need to fix/add few things after texlive is installed for tex4ht. This is a summary of the items to do.

  1. When using standalone package, this error will show up with tex4ht only

    (/usr/local/texlive/2014/texmf-dist/tex/generic/xkeyval/xkeyval.tex
    (/usr/local/texlive/2014/texmf-dist/tex/generic/xkeyval/keyval.tex)))
    ! Extra \else.
    l.227     \else

    ? x

    There is a patch for this. Get the updated standalone.sty and replace the current installed one with it. The standalong.sty can be found at https://bitbucket.org/martin_scharrer/standalone/raw/635aacfa0e8f2cba4f4086f4f15d57791b18bf64/standalone.sty

    Replace the file /usr/local/texlive/2013/texmf-dist/tex/latex/standalone/standalone With it. Now this problem will go away.

  2. Install make4ht
  3. fix tex4ht.env file to improve the fonts generated when making images for math. see elsewhere here for instructions. This step is not not needed any more, since I switched to make4ht for compiling, since make4ht does not use tex4ht.env, but if you are not using make4ht, then tex4ht.env is still used by standard htlatex command.

2.27  installation of TEX Live 2013

This is the log from

download http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz

>ls -l
total 0
drwxrwxrwx 1 me me 0 Jan 16 18:34 install-tl-20140116
>cd install-tl-20140116/
>ls -l
total 89
-rwxrwxrwx 1 me me  1157 May 31  2010 index.html
-rwxrwxrwx 1 me me 79388 Sep 15 15:16 install-tl
-rwxrwxrwx 1 me me  2098 Sep 28  2006 LICENSE.CTAN
-rwxrwxrwx 1 me me  5086 Jun  5  2011 LICENSE.TL
-rwxrwxrwx 1 me me   183 Aug  9  2008 README
drwxrwxrwx 1 me me     0 Jan 16 18:34 readme-html.dir
drwxrwxrwx 1 me me     0 Jan 16 18:34 readme-txt.dir
-rwxrwxrwx 1 me me   250 Aug  9  2008 README.usergroups
-rwxrwxrwx 1 me me   360 May 29  2013 release-texlive.txt
drwxrwxrwx 1 me me     0 Jan 16 18:34 texmf-dist
drwxrwxrwx 1 me me     0 Jan 16 18:34 tlpkg
>

now run the installer as root sudo ./install-tl

[sudo] password for me:
Loading http://mirrors.rit.edu/CTAN/systems/texlive/tlnet/tlpkg/texlive.tlpdb
Installing TeX Live 2013 from: http://mirrors.rit.edu/CTAN/systems/texlive/tlnet
Platform: i386-linux => 'Intel x86 with GNU/Linux'
Distribution: net  (downloading)
Using URL: http://mirrors.rit.edu/CTAN/systems/texlive/tlnet
Directory for temporary files: /tmp

======================> TeX Live installation procedure <=====================

======>   Letters/digits in <angle brackets> indicate   <=======
======>   menu items for commands or options            <=======

 Detected platform: Intel x86 with GNU/Linux

 <B> binary platforms: 1 out of 21

 <S> set installation scheme (scheme-full)

 <C> customizing installation collections
     44 collections out of 45, disk space required: 3533 MB

 <D> directories:
   TEXDIR (the main TeX directory):
     /usr/local/texlive/2013
   TEXMFLOCAL (directory for site-wide local files):
     /usr/local/texlive/texmf-local
   TEXMFSYSVAR (directory for variable and automatically generated data):
     /usr/local/texlive/2013/texmf-var
   TEXMFSYSCONFIG (directory for local config):
     /usr/local/texlive/2013/texmf-config
   TEXMFVAR (personal directory for variable and automatically generated data):
     ~/.texlive2013/texmf-var
   TEXMFCONFIG (personal directory for local config):
     ~/.texlive2013/texmf-config
   TEXMFHOME (directory for user-specific files):
     ~/texmf

 <O> options:
   [ ] use letter size instead of A4 by default
   [X] allow execution of restricted list of programs via \write18
   [X] create all format files
   [X] install macro/font doc tree
   [X] install macro/font source tree

 <V> set up for portable installation

Actions:
 <I> start installation to hard disk
 <H> help
 <Q> quit

Enter command: I

Installing to: /usr/local/texlive/2013
Installing [0001/2785, time/total: ??:??/??:??]: 12many [376k]
Installing [0002/2785, time/total: 00:01/01:16:21]: 2up [66k]
Installing [0003/2785, time/total: 00:02/02:10:06]: Asana-Math [458
.....
  go make coffee now and come back in 1 hr or so..
...........
system          | lua | dumping '/usr/local/texlive/2013/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/trees/929f6dbc83f6d3b65dab91f1efa4aacb.lua' into '/usr/local/texlive/2013/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/trees/929f6dbc83f6d3b65dab91f1efa4aacb.luc' stripped
resolvers       | caching | 'files' compiled to '/usr/local/texlive/2013/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/trees/929f6dbc83f6d3b65dab91f1efa4aacb.luc'
mtxrun          |
mtxrun          | runtime: 2.546 seconds
done
pre-generating all format files (fmtutil-sys --all), be patient...done
running package-specific postactions
finished with package-specific postactions

 See
   /usr/local/texlive/2013/index.html
 for links to documentation.  The TeX Live web site
 contains updates and corrections: http://tug.org/texlive.

 TeX Live is a joint project of the TeX user groups around the world;
 please consider supporting it by joining the group best for you. The
 list of user groups is on the web at http://tug.org/usergroups.html.


 Add /usr/local/texlive/2013/texmf-dist/doc/info to INFOPATH.
 Add /usr/local/texlive/2013/texmf-dist/doc/man to MANPATH
   (if not dynamically found).

 Most importantly, add /usr/local/texlive/2013/bin/i386-linux
 to your PATH for current and future sessions.

 Welcome to TeX Live!
Logfile: /usr/local/texlive/2013/install-tl.log
>

Here is the logfile install-tl.log.txt

To update do

sudo `which tlmgr` update --self --all --reinstall-forcibly-removed

[sudo] password for me:

tlmgr: package repository http://ctan.mirrors.hoobly.com/systems/texlive/tlnet
tlmgr: saving backups to /usr/local/texlive/2013/tlpkg/backups
[1/1, ??:??/??:??] update: texlive.infra [299k] (31401 -> 31673) ... done
Restarting tlmgr to complete update ...
tlmgr: package repository http://ctan.mirrors.hoobly.com/systems/texlive/tlnet
tlmgr: saving backups to /usr/local/texlive/2013/tlpkg/backups
[  1/293] auto-remove: lgrx ... done
[  2/293] auto-remove: gmeometric ... done
[  3/293, ??:??/??:??] update: Asana-Math [458k] (27228 -> 31750) ... done
[  4/293, 00:05/55:11] update: abntex2 [4526k] (31530 -> 32490) ... done
[  5/293, 00:10/10:08] update: achemso [469k] (31608 -> 31893) ... done
[  6/293, 00:12/11:07] update: acro [532k] (31571 -> 32450) ... done
[  7/293, 00:20/16:53] update: amiri [1637k] (30816 -> 32506) ... done
[  8/293, 00:25/16:34] update: animate [3085k] (31241 -> 31766) ... done
[  9/293, 00:28/13:12] update: autonum [379k] (30979 -> 32126) ... done
......
[289/293, 15:22/15:22] update: collection-plainextra [1k] (30395 -> 31683) ... done
[290/293, 15:23/15:23] update: collection-pstricks [1k] (31016 -> 32514) ... done
[291/293, 15:24/15:24] update: collection-publishers [1k] (31532 -> 32440) ... done
[292/293, 15:24/15:24] update: collection-science [1k] (30307 -> 32182) ... done
[293/293, 15:25/15:25] update: scheme-context [1k] (29997 -> 32062) ... done
tlmgr: package log updated: /usr/local/texlive/2013/texmf-var/web2c/tlmgr.log
running mktexlsr ...
done running mktexlsr.
running mtxrun --generate ...
done running mtxrun --generate.
running updmap-sys ...
done running updmap-sys.
regenerating fmtutil.cnf in /usr/local/texlive/2013/texmf-var
running fmtutil-sys --no-error-if-no-format --byengine ptex ...
done running fmtutil-sys --no-error-if-no-format --byengine ptex.
running fmtutil-sys --no-error-if-no-format --byengine eptex ...
done running fmtutil-sys --no-error-if-no-format --byengine eptex.
running fmtutil-sys --no-error-if-no-format --byengine pdftex ...
done running fmtutil-sys --no-error-if-no-format --byengine pdftex.
running fmtutil-sys --byfmt cont-en ...
done running fmtutil-sys --byfmt cont-en.
running fmtutil-sys --byfmt pdfcsplain ...
done running fmtutil-sys --byfmt pdfcsplain.
>

The /usr/local/texlive/2013/texmf-var/web2c/tlmgr.log log file contains the full listing. It appends the log of each update to the last update. so the log will contain all the updates done and not just the one just done

[Fri Jun 21 01:03:25 2013] update: dvipdfmx.i386-linux (30205 -> 30845)
[Fri Jun 21 01:03:28 2013] update: dvipng.i386-linux (30088 -> 30845)
[Fri Jun 21 01:03:50 2013] update: luatex.i386-linux (30739 -> 30845)
.....
[Tue Jan  7 17:39:02 2014] update: collection-latexextra (31599 -> 32457)
[Tue Jan  7 17:39:03 2014] update: collection-metapost (30387 -> 32455)
[Tue Jan  7 17:39:04 2014] update: collection-music (31524 -> 32405)
[Tue Jan  7 17:39:04 2014] update: collection-pictures (31517 -> 32320)
[Tue Jan  7 17:39:05 2014] update: collection-plainextra (30395 -> 31683)
[Tue Jan  7 17:39:06 2014] update: collection-pstricks (31016 -> 32514)
[Tue Jan  7 17:39:06 2014] update: collection-publishers (31532 -> 32440)
[Tue Jan  7 17:39:07 2014] update: collection-science (30307 -> 32182)
[Tue Jan  7 17:39:08 2014] update: scheme-context (29997 -> 32062)

To start the tlmgr GUI, must be root, and the command is

sudo `which tlmgr` gui

got TEX Live DVD today. Here is the front and the back

2.28  on using multicols

  1. to force a figure in a column, let includegraphics resize it using \includegraphics[width=\columnwidth]{image}

2.29  How to place figures

Using \begin{figure} makes images float and so hard to control the location. Instead, can use just \includegraphics{name} but to get use caption, use this method by Gonzalo Medina

When this viewed in HTML, tex4ht puts one image below the other. It seems tex4ht does not support minipages.

To do the same for tex4ht try the following, using multicols new support added to tex4ht

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{capt-of}
\usepackage{lipsum}%

\begin{document}
\lipsum[1]
\begin{center}
  \includegraphics{foo}
  \captionof{figure}{A non floating figure}
  \label{fig:test}
\end{center}

\lipsum[2]
\end{document}

pict

Figure 2.1: result of the above

These are different examples of placing figures

\documentclass{article}
\usepackage{subfigure}
\usepackage{lipsum}
\usepackage[demo]{graphicx}
\usepackage[utf8]{inputenc}

\begin{document}
\lipsum[1]

\begin{figure}[ht!]
     \begin{center}
%
        \subfigure[Caption of First Figure]{%
            \label{fig:first}
            \includegraphics[width=0.4\textwidth]{FirstFigure}
        }%
        \subfigure[Caption of Second Figure]{%
           \label{fig:second}
           \includegraphics[width=0.4\textwidth]{SecondFigure}
        }\\ %  ------- End of the first row ----------------------%
        \subfigure[Caption of Third Figure]{%
            \label{fig:third}
            \includegraphics[width=0.4\textwidth]{ThirdFigure}
        }%
        \subfigure[Caption of Fourth Figure]{%
            \label{fig:fourth}
            \includegraphics[width=0.4\textwidth]{FourthFigure}
        }%
%
    \end{center}
    \caption{%
        The l-o-n-g caption for all the subfigures
        (FirstFigure through FourthFigure) goes here.
     }%
   \label{fig:subfigures}
\end{figure}

\lipsum[2-5]
\end{document}

references:

  1. http: //tex.stackexchange.com/questions/107363/putting-multiple-images-in-a-page

2.30  Finding definitions of LaTEX control sequences?

use texdef -t latex <control word>

For example

>texdef -t latex input

\input:
macro:->\@ifnextchar \bgroup \@iinput \@@input

>
>texdef -t latex pi

\pi:
\mathchar"119


\the\pi:
281

>texdef -t latex frac

\frac:
macro:#1#2->{\begingroup #1\endgroup \over #2}

2.31  wrapping text around figures

see http://tex.stackexchange.com/questions/56176/handling-of-wrapfig-pictures-in-latex and http://texblog.org/tag/wrapfigure/ also there is wraptable see http://tex.stackexchange.com/questions/49300/wrap-text-around-a-tabular

From the first link:

\documentclass{article}
\usepackage{wrapfig}
\usepackage{lipsum}

\begin{document}

\lipsum[1-4]
\begin{wrapfigure}{R}{5cm}
\centering
\rule{3cm}{7cm}
\end{wrapfigure}
\lipsum[1-6]

\end{document}

2.32  what tex editors to use?

list of some I tried

  1. Texmaker (shows structure of document on left panel. Ok, but it gets confused with \Verbatim that has also Latex code in it, it think it is part of the document and shows it in the structure of the actual document as well.
  2. texworks
  3. Kyle on Linux (nice)

2.33  How to define text block to use in more than one place?

Thanks for TorbjørnT. from Tex forum for these methods.

Sometimes I needed to define some text and put it in 2 different places.

If the text has no verbatim in it, this method can be used

\documentclass{article}%
\begin{document}

\newcommand\mytext{
text with some with no verbatim

more text here
}

\mytext

\renewcommand\mytext{
more text with here

more text here also.......
}

\mytext

\end{document}

But if the text has verbatim in it, the above does not work. Use this method

\documentclass{article}%
\usepackage{filecontents}
\begin{document}

\begin{filecontents*}{somefile.txt}
Text with \verb|Initialization|  verbatim it.

This would now be put in text file, then read again
\end{filecontents*}

\input{somefile.txt}
\end{document}

2.34  adjusting text, parskip, parindent

From http://www.andy-roberts.net/writing/latex/tables


 There are also things known as command lengths, which are not
 fixed values as they depend on the configuration of the current
 document class and/or preamble. Useful ones include:

    * \parindent - the size of the paragraph indent
    * \baselineskip - vertical distance between lines.
    * \parskip - the extra space between paragraphs.
    * \textwidth - the width of a line of text in the local
                   environment (e.g., the
                   lines are commonly narrower in the abstract
                   than in the normal text).
    * \textheight - the height of the text on the page.

try this sometime

%
% this makes list spacing much better.
%
\newenvironment{my_enumerate}{
\begin{enumerate}
  \setlength{\itemsep}{1pt}
  \setlength{\parskip}{0pt}
  \setlength{\parsep}{0pt}}{\end{enumerate}
}

What I do is insert this code somewhere at the top of my LaTeX document, before I need to create any enumerations. Then, later in the document, when I do want to create an enumeration, instead of using the enumerate tag, I use the my_enumerate

2.35  How to reduce size of math in one place only?

\text{\scriptsize $\sin(x)$}

Use different size as needed, footnotesize or tiny and others.

2.36  How to hand written fonts and other fonts using xelatex?

This file can only be compiled by xelatex of lualatex

\documentclass{article}
\usepackage[no-math]{fontspec}


\setmainfont[
  Ligatures=TeX,
]{Architect}


\begin{document}
  This is some TEXT.
\end{document}

Then compile using xelatex foo.tex. The fonts used above, called Architect was downloaded from http://www.911fonts.com/font/download_StylusITCTTRegular_66.htm

See using-handwriting-font-in-proofs for more information.

Some fonts utilities on linux

    kcharselect
    gfontsel
    xfontsel
    xlsfonts
    chkfontpath
    fslsfonts

It seems on Linux one needs to just create $HOME/.fonts/ folder and put the .tff files there.

For example, I downloaded zip file from the above, extracted it, and copied one .tff file to

>pwd
/home/me/.fonts

>ls -l
-rwxr-xr-x 1 me me 36708 Sep 22 02:09 17273_architectbold.ttf

Now, make sure to rename the file above to match the actual font name as given inside the file. Double clicking on the file at least on windows, and look for the font name. do not use the file name itself. Must rename the file to match the font name. For the above, I did

>mv 17273_architectbold.ttf Architect-Bold.ttf

Since Architect-Bold was the actual font name.

And changed the latex file to the exact file name above as follows

\documentclass{article}
\usepackage[no-math]{fontspec}

\setmainfont[
  Ligatures=TeX,
]{Architect-Bold}

\begin{document}
  This is some TEXT.
\end{document}

The command fc-cache might be also useful to run after doing the above just in case. Use xelatex and not lulatex for the above. It seems there is difference on how fonts are found depending on which one to use. The above instructions are for xelatex which is what I used. It might work with lulatex, do not know now.

See fontspec-xelatex-finding-fonts-by-name-installed-or-in-texmfhome

To use times package, just add the line

2.37  How to use Times font for the whole document in Latex?

Just add this line

\usepackage{times}

See how-do-you-change-the-document-font-in-latex for more information.

2.38  how to pass variable to latex to change the compile content?

I use this method which works ok for me. I have a file called switch.tex where the switch is set to true or false. I have to edit this file to change the switch. Then in the main latex document, I input this file. This diagram shows the process.

\ifbool{switch}
{.... latex code to compile when switch is true....}
{.... latex code to compile when switch is false....}

pict

2.39  how to generate Latex from other programming languages?

This shows how to use other environments to generate Latex code. In Mathematica

s = ToString["\\documentclass[12pt,titlepage]{article}
\\begin{document}
It is known that $\\sin(0)=" <> ToString[Sin[0]] <> "$
\\end{document}"];

file = OpenWrite["C:\\tmp\\p.tex", PageWidth -> Infinity];
WriteString[file, s];
Close[file];

This generates the Latex file p.tex

\documentclass[12pt,titlepage]{article}
\begin{document}
It is known that $\sin(0)=0$
\end{document}

Using Python

import math
s=r"""
\documentclass[12pt,titlepage]{article}
\begin{document}
It is known that $\sin(0)="""+repr(math.sin(0))+r"""$
\end{document}"""

text_file = open(r"C:\tmp\p.tex", "w")
text_file.write(s)
text_file.close()

The above generates the Latex file

\documentclass[12pt,titlepage]{article}
\begin{document}
It is known that $\sin(0)=0.0$
\end{document}

From C++ (needs C++11)

#include <iostream>
#include <string>
#include <math.h>
using namespace std;


int main()
{
    //int r = 5;
        string s =R"(

\documentclass[12pt,titlepage]{article}
\begin{document}
 It is known that (a) $\sin(\pi)=)" + std::to_string(sin(M_PI)) + R"($
\end{document}

)";

        cout << s << endl;
        return 0;
}

And now compile and run

>g++ -Wall -std=c++0x try_string_literal.cpp
>./a.out


\documentclass[12pt,titlepage]{article}
\begin{document}
 It is known that (a) $\sin(\pi)=0.000000$
\end{document}

2.40  how to debug Latex?

Add --debug --interactive

2.41  How to find history of Tex? Family tree?

type texdoc tex-overview.pdf

2.42  Where to put a style file that is downloaded and not part of TexLive?

cd `kpsewhich -var-value=TEXMFHOME`

and make directory tex/latex/mystuff/ and put the file there.

Verify using kpsewhich filename.sty.

Reference: answer at tex stackexchange

2.43  How to convert pdf to eps?

pdftops -f 1 -l 1 -eps pic.pdf

2.44  what are values of extensions for images

Using this:

\documentclass[11pt,notitlepage]{article}%
\usepackage{graphicx}
\begin{document}

\makeatletter
\Gin@extensions
\makeatother

\end{document}

Compiled with htlatex gives

.eps,.ps,.eps.gz,.ps.gz,.eps.Z,.mps

and compiled with pdflatex gives

.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPEG,.JBIG2,.JB2,.eps

And compiled with lualatex gives

.png,.pdf,.jpg,.mps,.tif,.jpeg,.PNG,.PDF,.JPG,.JPEG,.eps

2.45  How to include pdf pages as is in Latex

The number of pages of the pdf is first found, then a loop is used to load each page. Make sure to use \clearpage before, so that the first pdf page is on a new page and make sure to clear the page also after each page in the loop.

Here is an example


\usepackage{tikz}
\usepackage{pgffor}
....

\pdfximage{foo.pdf}
\foreach \n in {1,...,\the\pdflastximagepages}
{
\begin{tikzpicture}[remember picture,overlay]
  \node[inner sep=0pt] at (current page.center)
{
   \includegraphics[page=\n]{foo.pdf}};
   \end{tikzpicture}
   \clearpage
}

If you know the pdf file has only one page, then the following is enough

\clearpage
\begin{tikzpicture}[remember picture,overlay]
  \node[inner sep=0pt] at (current page.center)
{
     \includegraphics[page=1,scale=0.9]{foo.pdf}
};
\end{tikzpicture}
\clearpage

2.46  How to automatically build images needed for the latex file?

I put all my images needed for the document in an images/ folder below the main document folder. Using recusrive make, the document Makefile has this line at its top

DIRS = images

include common.mk
...

Then the Makefile in the images/ file looks like this

DIRS =

include common.mk

FILES := $(shell ls -1 *.pdf)
#$(info $$FILES is [${FILES}])
TARGET = $(basename $(FILES))
#$(info $$TARGET is [${TARGET}])

all:: ${TARGET:=.svg}
@echo "Finished building [$?]"

%.svg : %.pdf
prep $<

.PHONY: clean
clean ::
-rm -f ${TARGET:=.svg}

Where prep is my script I use to crop the images and generate SVG image from each. Here it is

>cat `which prep`
#!/bin/bash
set -u
set -e
set -o pipefail

for file in $1; do
    filename=${file%.*}
    pdfcrop --margins 10 --clip "$filename.pdf" "$filename.pdf"
    pdf2svg "$filename.pdf" "$filename.svg"
#    pdftops -f 1 -l 1  -level3 -eps "$filename.pdf"
done
my_courses>

I use pdf file for the source of all the images. The above setup takes care of updating the images if one of them changes when compiling the latex file.

2.47  Some lualatex examples using Lua inside Latex

2.47.1  Making counter

% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{luacode}
\usepackage{amsmath}
%------------------------
\begin{luacode}
local x = 0
function add()
    x = x +1
    tex.print(x)
end

function sub()
    x = x - 1
    tex.print(x)
end

function reset()
    x = 0
end

\end{luacode}
\newcommand\add[0]{ \directlua{add()}}%
\newcommand\sub[0]{ \directlua{sub()}}%
\newcommand\reset[0]{ \directlua{reset()}}%
%-------------------
\begin{document}
\reset
\add
\add
\sub
\add
\end{document}

2.47.2  simplify fraction

see http://tex.stackexchange.com/questions/253693/reducing-fraction-using-latex-3/253716#253716

\documentclass{article}
\usepackage{luacode}
\usepackage{amsmath}
%------------------------
\begin{luacode}
function simplify(a,b)
  local function gcd(a,b)
    if b ~= 0 then
        return gcd(b, a % b)
    else
        return math.abs(a)
    end
  end

t = gcd(a, b)
tex.print("\\frac{"..a/t.."}{"..b/t.."}")
end
\end{luacode}
\newcommand\simplify[2]{\directlua{simplify(#1,#2) }}%
%-------------------
\begin{document}
\noindent Can I make \LaTeX{} reduce a fraction automatically?\\[\baselineskip]
For example, I would like the fraction
\begin{equation*}
  \frac{278\,922}{74\,088}
\end{equation*}

to be reduced to

\begin{equation*}
  \simplify{278922}{74088}
\end{equation*}
\end{document}

The output of the above is

Can I make LATEX reduce a fraction automatically?
For example, I would like the fraction

278922-
 74088

to be reduced to

6641-
1764

2.47.3  read CVS field to Latex table

This uses lua function to read the specific field in the CVS file. For example, given this CVS file in the directory

123,Poty city,Poti,red,-295731.42857144,617222.85714285
124,Lanchhuti city,Poti,red,-299217.14285715,647851.42857142
125,Ozurgeti city,Poti,red,-317217.14285715,648422.85714285
126,Samtredia city,Poti,red,-287502.85714287,672022.85714285

and you want to insert, say field located at row 2 and column 5, which is -299217.14285715 in the above, and field at row 1 and column 3, which is Poti then do

\begin{tabular}{|l|l|l|l|l|}\hline
    1  & \getField{1}{2}   & 3  & 4                & 5 \\\hline
    6  & 7                 & 8  & \getField{2}{5}  & 9  \\\hline
    10 & 11                & 12 & 13               & 14 \\\hline
\end{tabular}

The full code is below. I googled lua code to parse CVS files, there are few on the net, I found one that worked and used it. The CVS file is read automatically. Change the cvs file name in the code below and its path as needed. The latex file needs to be compiled with lualatex not pdflatex

\documentclass[]{article}
\usepackage{luacode}

\begin{luacode*} -- CVS API: http://nocurve.com/simple-csv-read-and-write-using-lua/
 local function split(str, sep)
     fields={}
     local matchfunc = string.gmatch(str, "([^"..sep.."]+)")
     if not matchfunc then return {str} end
     for str in matchfunc do
         table.insert(fields, str)
     end
     return fields
end

function read(path, sep, tonum)
    tonum = tonum or true
    sep = sep or ','
    local csvFile = {}
    local file = assert(io.open(path, "r"))
    for line in file:lines() do
        fields = split(line, sep)
        if tonum then -- convert numeric fields to numbers
            for i=1,#fields do
                fields[i] = tonumber(fields[i]) or fields[i]
            end
        end
        table.insert(csvFile, fields)
    end
    file:close()
    return csvFile
end

local m = read('./c.cvs') -- read file csv file to local matrix m

function getField(row,col) -- API to latex command below
tex.print(m[row][col])
end

\end{luacode*}
\newcommand\getField[2]{\directlua{getField(#1,#2) }}%

\begin{document}

\begin{table}[]
    \centering
    \caption{My example}
    \begin{tabular}{|l|l|l|l|l|}\hline
        1  & \getField{1}{2}   & 3  & 4                & 5 \\\hline
        6  & 7                 & 8  & \getField{2}{5}  & 9  \\\hline
        10 & 11                & 12 & 13               & 14 \\\hline
    \end{tabular}
\end{table}

\end{document}

reference tex stackexchange

This below reads a while CVS file to a latex table

\documentclass[]{article}
\usepackage{luacode}

\begin{luacode*} -- CVS API thanks to http://nocurve.com/simple-csv-read-and-write-using-lua/
 local function split(str, sep)
     fields={}
     local matchfunc = string.gmatch(str, "([^"..sep.."]+)")
     if not matchfunc then return {str} end
     for str in matchfunc do
         table.insert(fields, str)
     end
     return fields
end

function read(path, sep, tonum)
    tonum = tonum or true
    sep = sep or ','
    local csvFile = {}
    local file = assert(io.open(path, "r"))
    for line in file:lines() do
        fields = split(line, sep)
        if tonum then -- convert numeric fields to numbers
            for i=1,#fields do
                fields[i] = tonumber(fields[i]) or fields[i]
            end
        end
        table.insert(csvFile, fields)
    end
    file:close()
    return csvFile
end

function getCVS(fileName)
 local m = read(fileName) -- read file csv1.txt to matrix m
 local nRow = #m
 local nCol = #m[1]

 tex.sprint("\\begin{tabular}{")
 for j=1,#m[1] do
     tex.sprint("|l")
 end
 tex.print("|}\\hline")

 for i = 1,nRow do
   for j = 1,nCol do
       tex.sprint(m[i][j])
       if j<nCol then tex.sprint("&") end
   end
   tex.print("\\\\ \\hline")
 end
 tex.print("\\end{tabular}")
end

\end{luacode*}
\newcommand\getCVS[1]{\directlua{getCVS(#1) }}%

\begin{document}

\begin{table}[]
    \centering
    \caption{My CVS file in a Latex table}
    \getCVS{"c.cvs"}
\end{table}

\end{document}

2.47.4  reversing enumeration list

Given enumeration list, where each item just uses one line, to reverse it:

% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{luacode}
\usepackage{amsmath}
%------------------------
\begin{luacode*}  -- copy the list here as is.
data=[[\item 2001
      \item 2002
      \item 2003
      \item 2005 was a very good year
      \item 2006 was also a very good year
      \item 2007
      ]]

function string:split(sep) --http://lua-users.org/wiki/SplitJoin
        local sep, fields = sep or ":", {}
        local pattern = string.format("([^%s]+)", sep)
        self:gsub(pattern, function(c) fields[#fields+1] = c end)
        return fields
end

function flip()
    lines = data:split("\n")
    tex.print("\\begin{enumerate}")
    for i=#lines,1,-1 do
       tex.print(lines[i])
    end
    tex.print("\\end{enumerate}")
end
\end{luacode*}
\newcommand\flip[0]{ \directlua{flip()}}%

\begin{document}
\flip{}
\end{document}

Another way is

% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{luacode}
\usepackage{amsmath}

%------------------------
\begin{luacode*}
function split(str, pat)  --http://lua-users.org/wiki/SplitJoin
   local t = {}  -- NOTE: use {n = 0} in Lua-5.0
   local fpat = "(.-)" .. pat
   local last_end = 1
   local s, e, cap = str:find(fpat, 1)
   while s do
      if s ~= 1 or cap ~= "" then
     table.insert(t,cap)
      end
      last_end = e+1
      s, e, cap = str:find(fpat, last_end)
   end
   if last_end <= #str then
      cap = str:sub(last_end)
      table.insert(t, cap)
   end
   return t
end

function flip(data)
    items = split(data,"\\item")
    tex.print("\\begin{enumerate}")
    for i=#items,1,-1 do
       tex.print("\\item "..items[i])
    end
    tex.print("\\end{enumerate}")
end
\end{luacode*}
%-------------------

\begin{document}
This is my enumeration list
\begin{enumerate}
      \item 2001
      \item 2002
      \item 2003
\end{enumerate}

Here it is flipped:
\directlua{flip(\luastring{\unexpanded{%
      \item 2001
      \item 2002
      \item 2003
      }})}
\end{document}

The result of the above is

This is my enumeration list

  1. 2001
  2. 2002
  3. 2003

Here it is flipped:

  1. 2003
  2. 2002
  3. 2001