导出时是否可以从命令行激活 LyX 分支?
这文档说以下命令应该可以工作,但是在我的测试中不行。
lyx -x "command-sequence branch-activate b1" -E pdf2 outfile.pdf infile.lyx
您可以使用以下最小 LyX 文件和上述命令对此进行测试。在生成的 PDF 中,您应该找到“AAA CCC”,但实际上只出现了“CCC”。
#LyX 2.3 created this file. For more info see http://www.lyx.org/
\lyxformat 544
\begin_document
\begin_header
\save_transient_properties true
\origin unavailable
\textclass article
\use_default_options true
\maintain_unincluded_children false
\language english
\language_package default
\inputencoding auto
\fontencoding global
\font_roman "default" "default"
\font_sans "default" "default"
\font_typewriter "default" "default"
\font_math "auto" "auto"
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100 100
\font_tt_scale 100 100
\use_microtype false
\use_dash_ligatures true
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command default
\index_command default
\paperfontsize default
\use_hyperref false
\papersize default
\use_geometry false
\use_package amsmath 1
\use_package amssymb 1
\use_package cancel 1
\use_package esint 1
\use_package mathdots 1
\use_package mathtools 1
\use_package mhchem 1
\use_package stackrel 1
\use_package stmaryrd 1
\use_package undertilde 1
\cite_engine basic
\cite_engine_type default
\biblio_style plain
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\justification true
\use_refstyle 1
\use_minted 0
\branch b1
\selected 0
\filename_suffix 0
\color #faf0e6
\end_branch
\branch b2
\selected 0
\filename_suffix 0
\color #faf0e6
\end_branch
\index Index
\shortcut idx
\color #008000
\end_index
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\paragraph_indentation default
\is_math_indent 0
\math_numbering_side default
\quotes_style english
\dynamic_quotes 0
\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 Standard
\begin_inset Branch b1
inverted 0
status open
\begin_layout Standard
AAA
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Branch b2
inverted 0
status open
\begin_layout Standard
BBB
\end_layout
\end_inset
\end_layout
\begin_layout Standard
CCC
\end_layout
\end_body
\end_document
答案1
您可以使用以下内容:
lyx -x "command-sequence branch-activate b1; buffer-export pdf2; undo; lyx-quit" infile.lyx
如果您希望将文件命名为 infile.pdf 以外的其他名称,则可以使用buffer-export-as
。“撤消”是为了避免出现询问您是否要保存更改的对话框。它并不优雅,应该有一种更自然的方式来做你想做的事,但我不知道目前是否有这样的方法。
顺便说一句,这个简单的例子很棒。它让我们很容易地尝试回答你的问题。
答案2
我通过使用 sed 直接操作 lyx 文件解决了这个问题。这可以避免竞争条件,尤其适合编写大型自定义导出脚本。
sed -e '/\\branch b1/,+1s/\\selected.*/\\selected 1/' < infile.lyx > tmp.lyx
lyx -E pdf2 outfile.pdf tmp.lyx
rm tmp.lyx