LINUX.ORG.RU

latex code listings - замена "-" на дефис

 , , ,


0

1

Имеем следующую проблему, xeletex при выводе code listings минусы заменяются на дефис. Этого можно избежать добавив literate в \lstset но при этом перестает работать распознавание комментариев в Lua при подсветке синтаксиса.

\lstset{
...
   literate = {-}{-}1, % заменяем минус снова на минус
...
}

\lstdefinelanguage{lua51}
{
  morekeywords={
    function,
    if,
    then,
    while,
    for,
    end,
    return,
  },
  morecomment=[l]{--}, % l is for line comment
  morecomment=[s]{--[}{]--}, % s is for start and end delimiter
  morestring=[b]",
  morestring=[b]'
}

Вопросов два - 1) как можно отменить замену минусов на дефис? 2) Как вернуть распознавание комментариев в синтаксисе lua?

Ты уверен, что в выводимом коде у тебя именно минусы, а не дефисы? Мне не известны языки, кроме зитеха, которые понимают такие символы

XMs ★★★★★ ()

А чем тебе готовый стиль для lua не подходит, что ты свой разрабатываешь?

\documentclass{article}

\usepackage{listings}

\lstdefinestyle{myLuastyle}
{
  language         = {[5.1]Lua},
  showstringspaces = false,
  upquote          = true,
}

\lstset{style=myLuastyle}

\begin{document}
\begin{lstlisting}
-- defines a factorial function
    function fact (n)
      if n == 0 then
        return 1
      else
        return n * fact(n-1)
      end
    end

    print("enter a number:")
    a = io.read("*number")        -- read a number
    print(fact(a))
\end{lstlisting}
\end{document}
(содрано с https://tex.stackexchange.com/questions/169311/lua-syntax-for-the-listings-pa...)

TeopeTuK ★★★ ()

Кстати, попробовал твой код (но не в pandoc, просто в XeLaTeX) без literate. Он работает, дефисов нет, есть минусы. Так что без минимального примера, демонстрирующего проблему, посоветовать что-нибудь трудно.

TeopeTuK ★★★ ()
Ответ на: комментарий от TeopeTuK

1) У меня в листингах не только Lua. 2) Падает зараза :(. Но ноуте (федора 27) собирается нормально, на билдсервере с Центос 7 падет. Но если даже использовать встроенное описание lua все равно проблема наблюдается. Собственное описание это решение проблемы падения.


15:45:28 pandoc: Error producing PDF from TeX source.
15:45:28 ! File ended while scanning use of \lstKV@OptArg@@.
15:45:28 <inserted text> 
15:45:28                 \par 
15:45:28 <*> /tmp/tex2pdf.8174/input.tex
15:45:28                                
15:45:28 Output written on /tmp/tex2pdf.8174/input.pdf (3 pages).
15:45:28 Transcript written on /tmp/tex2pdf.8174/input.log.
15:45:28 
15:45:28 doc/CMakeFiles/doc.dir/build.make:110: recipe for target 'doc/iris_adapter.pdf' failed
15:45:28 make[2]: *** [doc/iris_adapter.pdf] Error 43
[\code]

vromanov ★★ ()
Ответ на: комментарий от vromanov

Тогда надо смотреть, чем отличается сгенерированный TeX на двух машинах. В конце концов, на Centos 7 что pandoc, что TexLive старенькие. Что касается того, что есть и другие языки, то language={[5.1]Lua} можно передавать в качестве опционального аргумента {lstlisting}.

TeopeTuK ★★★ ()