Arhn - архитектура программирования

Изготовление нестандартного латексного бегунка для веточки

У меня есть шаблон ветки, чем генерирует файл Latex. Он отлично работает, за исключением того, что он выдает экранированные символы для html.

Так, например, БД возвращает строку Rosie & Jim.

Твиг делает это Rosie & Jim.

Для латекса мне нужно, чтобы & отображалось как \&.

Поэтому я думаю, что мне нужен собственный экран для латекса, как указано здесь: https://twig.sensiolabs.org/doc/2.x/filters/escape.html#custom-escapers

Тем не менее, я немного зеленый, когда дело доходит до веток, и нигде не могу найти примеров настоящих побегов. Кто-нибудь знает:

а) Это то, что мне действительно нужно?

б) Что мне на самом деле нужно сделать, чтобы сделать его?

08.06.2017

  • Возможно, вам понадобится {{ latex|raw }}, где latex будет переменной шаблона Twig. 09.06.2017
  • @JaredFarrish Это просто выводит необработанные данные. Мне все еще нужно, чтобы его экранировали, просто по-другому. 09.06.2017
  • github.com/bobvandevijver/latex-bundle/blob/master/ Ветка/ 09.06.2017

Ответы:


1

Итак, в итоге я настроил его как службу и вызывал из контроллера по мере необходимости.

Не уверен, что это лучшая практика, но она работает для меня.

Обслуживание:

<?php

namespace AppBundle\FunBundle\Service;

class Latex
{

 public function __construct($twig)
    {
        $this->twig = $twig;
    }

public function escaper()
    {
        // Get twig env
        $twig = $this->twig;
        // Start setEscaper called 'latex' - call it what you want
        $twig->getExtension('Twig_Extension_Core')->setEscaper('latex',
            function($twig, $string, $charset){
            // Replace every instance of '&' with '\&'
            $string = str_replace("&", "\\&", $string);
            }
            return $string;
        );
    }
}

Затем в app/config/services.yml:

services:
    app.latex:
        class: AppBundle\FunBundle\Service\Latex
        arguments: ['@twig']

Затем в действии контроллера:

$latexer = $this->get('app.latex');
$latexer->escaper();

И в самом шаблоне ветки:

{% autoescape 'latex' %}
# latex/twig goes here
{% end autoescape %}

В итоге написал это здесь на своем сайте, где есть полный пример эскейпера LaTeX.

12.06.2017
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..