好的,我有一组结构化数据,我想对其进行一致的格式化。在本例中,是一组角色扮演游戏的咒语。现在在 Latex 中,我隐约记得我可以使用来做某事,\DeclareDocumentEnvironment
但已经有一段时间了,我想在 LyX 中做这件事。
所以我希望我的最终文档看起来像:
火球
铸造成本:2CP
施法动作:立即的
范围:短时间
对目标造成 2d12 伤害
连锁闪电
铸造成本:每个目标 1CP
施法动作:立即的
范围:中
链闪电击中目标。
所有目标必须彼此相距很近。
每个目标受到 1d6 伤害
我该如何设置这样的功能?我想在我的文档中实现一致的外观和格式。我需要一个采用多个参数的环境。
我以前只使用过 Lyx 的一些基本功能,比如用于输入数学运算的宏(虽然我经常使用这些功能_
答案1
我首先使用 LyX 的结果:
步骤 1:在 LaTeX 中创建带参数的环境(或命令)
LyX 是 LaTeX 的一种包装器。因此,需要用 LaTeX 编写环境(或命令),并使用简短的 LaTeX 文档对其进行测试。例外情况:您是 LaTeX 专家,能够编写无错误且文本布局完美的 LaTeX。;-)
有限制在 LaTeX 环境(或命令)上,这样就可以容易地映射到 LyX 样式。
- LaTeX 环境仅允许一个可选参数。
- LaTeX 命令仅允许使用两个参数,其中一个是可选参数。
因此,对于您的情况,我将为标题创建一个样式(例如“MyTitle”),并为每个详细信息创建一个样式。最后几行可以是纯文本,因为似乎不需要特殊格式。
第 2 步:在 LyX 中创建风格
每个使用的环境(或命令)都必须有一个 LyX 样式。这些样式定义放在一个.module
文件中。它应该放在layout
主目录中 lyx-tree 的文件夹中。需要通知 LyX 有关新模块的信息。这可以通过运行Reconfigure
LyX 菜单Tools
并重新启动 LyX 来完成。最后,对于您的文档,在菜单 Document - Settings... - Modules 下添加新模块(示例中为“MyModule”)。现在可以选择新样式(例如“MyTitle”),类似于“Section”或“Itemize”。
注意:如果 LaTeX 环境(或命令)允许使用可选参数,则 LyX 会将其表示为“短标题”。(这可能是因为部分标题可以有可选参数,而其目的是作为短标题)。此外,LyX 将其映射到第一个 LaTeX 参数#1
。普通文本映射到#2
。
如果不允许使用可选参数,则 LyX 将把普通文本映射到#1
。
LyX 安装文件夹lyx/layout
包含大量样式、模块和布局定义的示例。LyX 部分Steve Litt 的《LyX、LaTeX 和 TeX》可能值得一读。
以下是步骤 1 的 LaTeX 文档:
\documentclass[12pt]{article}
\setlength{\parindent}{0pt}
\newcommand{\mytitle}[1]{\bigskip\noindent\textbf{\large #1}\par\medskip}
\newcommand{\budget}[2][Dollar~]{\noindent\textbf{Budget:} #1#2\par}
\begin{document}
\mytitle{A Beautiful Mind}\budget[\$]{58 million}
This movie is about John Nash.........
\end{document}
MyModule.module
步骤 2 的模块文件。
#\DeclareLyXModule{MyModule}
#DescriptionBegin
#Defines some styles for movies.....
#DescriptionEnd
#Author: me
Format 35
Style MyTitle
Category MyModule
Margin Static
LatexType Command
LatexName mytitle
NextNoIndent 1
TopSep 1.3
BottomSep 0.7
Align Block
Font
Series Bold
Size Larger
EndFont
OptionalArgs 0
Preamble
\newcommand{\mytitle}[1]{\bigskip\noindent\textbf{\large #1}\par\medskip}
EndPreamble
End
Style Budget
Category MyModule
LatexType Command
Margin First_Dynamic
LatexName budget
LabelType Static
LabelString "Budget:"
NextNoIndent 1
LabelSep xx
ParIndent MMM
ParSkip 0.4
ItemSep 0.2
TopSep 0.7
BottomSep 0.7
ParSep 0.3
Align Block
AlignPossible Left
OptionalArgs 1
LabelFont
Shape Up
Series Bold
EndFont
Preamble
\newcommand{\budget}[2][Dollar~]{\noindent\textbf{Budget:} #1#2\par}
EndPreamble
End
以及生成上述图像的 LyX 文档:
#LyX 2.0 created this file. For more info see http://www.lyx.org/
\lyxformat 413
\begin_document
\begin_header
\textclass article
\use_default_options true
\begin_modules
MyModule
\end_modules
\maintain_unincluded_children false
\language english
\language_package default
\inputencoding auto
\fontencoding global
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command default
\index_command default
\paperfontsize 12
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_amsmath 1
\use_esint 1
\use_mhchem 1
\use_mathdots 1
\cite_engine basic
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\use_refstyle 1
\index Index
\shortcut idx
\color #008000
\end_index
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\paragraph_indentation 0pt
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\end_header
\begin_body
\begin_layout MyTitle
A Beautiful Mind
\end_layout
\begin_layout Budget
\begin_inset Argument
status open
\begin_layout Plain Layout
$
\end_layout
\end_inset
58 million
\end_layout
\begin_layout Standard
This movie is about John Nash.........
\end_layout
\end_body
\end_document