我的 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”以获取解释。