sábado, 28 de junio de 2014

Cómo compilar CEGUI 8.3 con Ogre 1.9 localmente en linux

Compilar Ogre

Después de pelearme con la instalación de apt-get en Debian, he terminado por compilarlo desde la fuente.
  1. Instalar los Prerrequisitos. (Aguas con nvidia-cg-toolkit, si ya estaba instalado, tener cuidado de no arruinar lo que ya estaba, asegurarse de que todos los elementos de nvidia tengan la misma versión el comando nvidia-smi falla si hay inconsistencias, se puede usar para probar).
  2. En esta ocación me tocó descargar el código del repo en Mercurial, por lo que tuve que instalar la herramienta para crear el clon:sudo apt-get install hgsvn
  3. Se crea el clon con:
    hg clone https://bitbucket.org/sinbad/ogre
  4. cd ogre
    mkdir build
    mkdir compile
    cd compile
  5. cmake -D CMAKE_INSTALL_PREFIX=[/home/.../ogre/build/] ..
    make                  # Se puede usar make -j2 si el procesador tiene dos nucleos
    make install
  6. Intentar correr algunos ejemplos.Para ejecutar las aplicaciones, es necesario indicar dónde se encuentran las bibliotecas (dado que instalé en un directorio inusual).
    export LD_LIBRARY_PATH=/home/.../ogre/build/lib:$LD_LIBRARY_PATH
    Para no repetir este paso cada vez que se abre una terminal, se puede agregar esta línea al final del archivo ~/.bashrc. Ejecutar:
    ./SampleBrowser
  7. Si aparece el error
    terminate called after throwing an instance of 'std::runtime_error'
    what(): locale::facet::_S_create_c_locale name not valid
    Instalar:
    sudo apt-get install locales
    sudo dpkg-reconfigure locales   # Seleccionar alguno en inglés, aunque se puede dejar el español como locale por defecto

Compilar CEGUI

CEGUI utiliza cmake para encontrar una instalación a nivel sistema de Ogre, por lo que hay que indicar dónde encontrar los archivos que dicen dónde está y qué necesita Ogre.  Además, FindFreetype.cmake tiene un error.

  1. Primero hay que arreglar FindFreetype.cmake como se indica en https://bbs.archlinux.org/viewtopic.php?id=174300, para evitar el error:
    CEGUI was compiled without freetype support
  2. Luego, al utilizar cmake para compilar CEGUI se indica la ubicación de ogre:
    cd <CEGUI directory>
    mkdir compile
    mkdir build
    cd compile
    cmake -D CMAKE_INSTALL_PREFIX=/home/../cegui-0.8.3/build -D OGRE_HOME=/home/.../ogre/build ..
    make
    make install

CEGUI 0.8.4

En esta versión es necesario agregar específicamente en qué directorios se encuentran las bibliotecas de Ogre.  Afortunadamente lo indica con:

-- Could NOT find OGRE (missing:  OGRE_LIB)

La secuencia de comandos queda entonces:
cd <CEGUI directory>
mkdir compile
mkdir build
cd compile
cmake -D CMAKE_INSTALL_PREFIX=/home/../cegui-0.8.4/build -D OGRE_HOME=/home/.../ogre/build -D OGRE_LIB=/home/.../ogre/build/lib/libOgreMain.so ..
make
make install


lunes, 23 de junio de 2014

Cómo utilizar SmallCaps en latex, con fuente SansSerif

En varias ocasiones se me ha indicado que es mejor escribir mis reportes con un tipo de letra SansSerif, utilizando:

\renewcommand{\familydefault}{\sfdefault} % Mucha gente considera que las fuentes tipo sans son más fáciles de leer.
\renewcommand*{\sfdefault}{cmss}

Sin embargo cuando combino esto con títulos en SmallCaps inmediatamente surge el error:

Font shape `OTI/cms/m/sc'

ó, si no uso cmss:

Font shape `OTI/lmss/m/sc' in size <10.95> not available(Font) Font shape `OTI/lmr/m/sc' tried instead on input line...

Existen dos formas sencillas para resolverlo:
La primera es utilizar la fuente Helvetica.

\usepackage{Helvetic}

Sin embargo, a mí me agrada más utilizar lmss o cms para el texto.  Si sólo quiero cambiar de fuente para conseguir el efecto SmallCaps, la solución es redefinir únicamente el comando para este estilo, utilizando Helvetica (phv):

\usepackage{letltxmacro}
\LetLtxMacro{\oldtextsc}{\textsc}
\renewcommand{\textsc}[1]{{\fontfamily{phv}\selectfont\oldtextsc{#1}}} % Usa Helvetica para las small caps, ya que cmss no tiene esa opción.