Ctags: TeX:[增强] 用于投影仪演示的 LaTeX 补丁

创建于 2020-02-12  ·  9评论  ·  资料来源: universal-ctags/ctags

实现类似这篇文章https://sourceforge.net/p/ctags/patches/76/ 中的补丁,以便 LaTeX 投影仪演示按幻灯片而不是部分排序

Parser buenhancement

所有9条评论

谢谢你提出这个问题。

你有一个示例输入吗?
我想将它作为测试用例包含在我们的存储库中。

https://github.com/strace/strace-talks/blob/master/2019-ossdevconf-kaluga-linux_design_flaw_story/ossdevconf_2019-slides-linux_design_flaw_story.tex

是一个很好的例子,但它不使用\frametitle
它使用\begin{frame}{AN ITEM WE WOULD LIKE TO TAG}

我已经实现了捕获\frametitle函数。
但是, \begin{frame}{...}还没有。

我觉得这个可以用,我把标题改成使用\frametitle关键字
https://github.com/jagjordi/IL2239-presentation

还在挣扎。

有什么办法可以帮我解决这个问题吗?

你能试试#2424吗?

你好@masatake
我有一个建议,可以在投影仪演示中修改解析器的行为。
如果幻灯片的排列是这样写的

Frame 1
|-- Subframe 1.1
|-- Subframe 1.2
|-- Subframe 1.3

Frame 2
|-- Subframe 2.1
|-- Subframe 2.2

通常,当“子幻灯片”存在时,我会将相同的标题重复多次。 例如

\frametitle{Frame1}
\framesubtitle{Subframe1.1}

\frametitle{Frame1}
\framesubtitle{Subframe1.2}

\frametitle{Frame1}
\framesubtitle{Subframe1.3}

\frametitle{Frame2}
\framesubtitle{Subframe2.1}

\frametitle{Frame2}
\framesubtitle{Subframe2.2}

根据解析器的当前行为,每次使用命令frametitle时,它都会生成一个标记条目。 我会争辩说,通常行为应该是它只在使用该命令的第一个驯服时生成一个标签条目,并且该命令的后续使用(具有相同的标题名称)将“指向”第一次使用。

让我知道你的想法?

问候,

我将在合并https://github.com/universal-ctags/ctags/pull/2450后处理此项目
这将花费比您想象的更长的时间。

在#2450中,我将介绍一个符号表。
有了它,我们可以编写以下代码:

tagEntryInfo *tag = lookupTag ("Frame1");
if (! (tag && kinfOf(tag) == "frametitle"))
   skip();
else /* a frame title we have never seen. */
   makeTag ();

听起来很棒。 如果您需要测试什么,请告诉我👍

它部分工作。
需要做更多的工作。

[yamato@slave]~/var/ctags-github% cat /tmp/input.tex 
cat /tmp/input.tex 
\frametitle{Frame1}
\framesubtitle{Subframe1.1}

\frametitle{Frame1}
\framesubtitle{Subframe1.2}

\frametitle{Frame1}
\framesubtitle{Subframe1.3}

\frametitle{Frame2}
\framesubtitle{Subframe2.1}

\frametitle{Frame2}
\framesubtitle{Subframe2.2}
[yamato@slave]~/var/ctags-github% ./ctags --sort=no -o - /tmp/input.tex 
./ctags --sort=no -o - /tmp/input.tex 
Frame1  /tmp/input.tex  /^\\frametitle{Frame1}$/;"  f   language:TeXBeamer
Subframe1.1 /tmp/input.tex  /^\\framesubtitle{Subframe1.1}$/;"  g   language:TeXBeamer  frametitle:Frame1
Subframe1.2 /tmp/input.tex  /^\\framesubtitle{Subframe1.2}$/;"  g   language:TeXBeamer  frametitle:Frame1
Subframe1.3 /tmp/input.tex  /^\\framesubtitle{Subframe1.3}$/;"  g   language:TeXBeamer  frametitle:Frame1
Frame2  /tmp/input.tex  /^\\frametitle{Frame2}$/;"  f   language:TeXBeamer
Subframe2.1 /tmp/input.tex  /^\\framesubtitle{Subframe2.1}$/;"  g   language:TeXBeamer  frametitle:Frame2
Subframe2.2 /tmp/input.tex  /^\\framesubtitle{Subframe2.2}$/;"  g   language:TeXBeamer  frametitle:Frame2
此页面是否有帮助?
0 / 5 - 0 等级