Exemplo n.º 1
0
 public function preCompile($source)
 {
     $source = str_replace('\\(', '{literal}\\(', $source);
     $source = str_replace('\\)', '\\){/literal}', $source);
     $source = str_replace('\\{', '{literal}\\{', $source);
     $source = str_replace('\\}', '\\}{/literal}', $source);
     $source = str_replace('\\[', '{literal}\\[', $source);
     $source = str_replace('\\]', '\\]{/literal}', $source);
     $source = PsStrings::pregReplaceCyclic('/\\$\\$/', $source, array('{literal}$$', '$${/literal}'));
     //Обернём математический текст, например: &alpha; перейдёт в <span class="math_text">&alpha;</span>
     $source = TextFormulesProcessor::replaceMathText($source);
     //Заменим некоторые блоки на вызов методов данного класса
     $source = SmartyReplacesIf::preCompile($source);
     return $source;
 }
Exemplo n.º 2
0
function smarty_block_f($params, $content, Smarty_Internal_Template &$template)
{
    if (isEmpty($content)) {
        return;
        //---
    }
    /*
     * Если это не TeX формула \[\], то это текстовая формула и её надо обработать.
     */
    if (!TexTools::isBlockFormula($content)) {
        $content = TextFormulesProcessor::processBlockFormula($content);
    }
    /*
     * Проверим, задан ли идентификатор для формулы.
     * Если задан - пронумеруем её, т.к. на неё будут ссылаться.
     */
    $formulaId = trim(value_Array(array('id', 'num'), $params));
    if (!$formulaId) {
        return $content;
    }
    return FoldedContextWatcher::getInstance()->getFormulaNumeratorContext()->wrapFormulaBox($formulaId, $content);
}