Lyx 自定义命令视图

Lyx 自定义命令视图

我的 LaTeX 序言中有一个命令定义:

\newcommand*{\code}[1]{\texttt{#1}}

但此命令的用法显示为 ERT,例如\code{select}。我希望它显示为选择也就是斜体。怎么做呢?

答案1

您需要告诉 Lyx 如何标记命令,通过更改您使用的布局,或者,可能是正确的做法,定义一个模块。

Rob Oakes 写了一篇博客文章,定制 Lyx:模块介绍。他的解释让这件事看上去相当简单,尽管我从未尝试过。

答案2

我能够从 Rob 的另一篇文章中提取我的答案这里:从 lyx 编辑器中关闭 lyx 文件。使用文本编辑器后,将以下内容放在 lyx 文件的顶部附近\end_modules。使用 lyx 编辑器重新打开 lyx 文件。然后,您可以通过以下方式自定义文本的一部分:选择文本 > 右键单击​​ > 文本样式 > Charstyle:code。

 \begin_local_layout
    Format 7
      InsetLayout    CharStyle:Code
      LyxType               charstyle
      LabelString           code
      LatexType             command
      LatexName             code
      Font
        Family              Sans
        Color               Green
      EndFont
      Preamble
        \newcommand*{\code}[1]{\texttt{#1}}
      EndPreamble
    End
 \end_local_layout

要对不同的文档使用相同的布局,请使用文件 > 从模板新建。

答案3

尽管已经过去了很多年,但我认为在这里添加如何向 LyX 添加自定义引用命令是有意义的。我这样做是为了使用 biblatex 命令\parencite,并\textcite在 LyX 中包含 biblatex 支持后LyX wiki 上的本指南

因为“关于 natbib 兼容模式的注意事项:”一节中提到的更改对Options>Local Layout我来说不起作用(LyX 2.2.1),所以我自己包含了对上述两个命令的支持。

这种方法的灵感(实际上,很多都是复制粘贴的)来自/usr/share/lyx/layouts/natbib.module

以下列表向 LyX 描述了如何显示引文类型以及要使用哪个 LaTeX 命令。查看 LyX 手册中有关自定义的内容(帮助 > 自定义),第“5.3.12 引文格式描述”部分,了解有关所用语言的详细信息。总结一下,像%author%打印参考书目字段、定义宏(如果在某处写入!macroname DEF,则由该宏替换)这样的表达式都是条件表达式,其中只有当不为空时才会打印,否则会打印(如果省略第二个语句,则不打印任何内容)。如果在 LyX 引文对话框中选择了多个引文,则相关。对于与引文数量一样多的调用,它不为空,并且每次调用都会更改其他字段,例如下一个引文。之后的所有内容都是注释。DEF%!macroname%%fieldname%[[SOMETHING]][[ELSE]]SOMETHING%fieldname%ELSE[[...]]%next%%next%%author%#

我添加了以下内容Options>Local Layout

CiteEngine default
    # [][] indicate that this command accepts pre- and post-text if set
    # in the LyX dialog ("see" and "p. 123" in 
    # "(see Miller, 1990, p. 123)")
    # This also states which LaTeX command must be used.

    # Makes an error in LyX cite dialog. Commands seemingly must 
    # start with 'cite...'
    #parencite[][] 

    # Put \let\citep\parencite in document preamble
    citep[][]      
End
CiteFormat default
    # Macros to print user text if specified in LyX dialog
    !textbefore {%textbefore%[[%textbefore% ]]}
    !textafter {%textafter%[[, %textafter%]]}
    # Macros to print bibtex fields or '??' if bibtex field is empty
    !abbrvauthor {%abbrvauthor%[[%abbrvauthor%]][[??]]}
    !year {%year%[[%year%]][[??]]}{%modifier%[[%modifier%]]}

    # Opening and closing characters. Useful to define as macros if
    # multiple citation commands are defined
    !open (
    !sep ;
    !close )

    # These two call each other until there are no citations left
    !citealp %!abbrvauthor%, %!year%%!nextcitealp%
    !nextcitealp {%next%[[%!sep% %!citealp%]]}

    # Main definition
    citep %!open%%!textbefore%%!citealp%%!textafter%%!close%
    # May include additional commands if added in `CiteEngine` section
    # as well. See /usr/share/lyx/layouts/natbib.layout
    # citet %!open%%!textbefore%%!citealt%%!textafter%%!close%

End

parencite我将 biblatex 导入语句添加到文档的序言中,如上面的链接中所述。如果像上面的评论中所述直接在本地格式中定义,则会出错,因此我添加了一个名为 的别名\citep

% --- As advised in wiki article linked above -----------------------
\usepackage{polyglossia} % Load if using biblatex with {Xe,Lua}LaTeX

\usepackage[style=authoryear,backend=biber]{biblatex} 
\addbibresource{my.bib} % Put your .bib file here
% -------------------------------------------------------------------

% Add the alias for \parencite like mentioned above
% \citep now means the same as \parencite
\let\citep\parencite   

答案4

你也可以复制@phaedrus 写的文字在他的回答中到文档 > 设置... > 本地布局中的字段。使用他的代码的这一部分:

InsetLayout    CharStyle:Code
  LyxType               charstyle
  LabelString           code
  LatexType             command
  LatexName             code
  Font
    Family              Sans
    Color               Green
  EndFont
  Preamble
    \newcommand*{\code}[1]{\texttt{#1}}
  EndPreamble
End

在帮助 > 自定义手册中搜索“InsetLayout”以获取解释。

相关内容