mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +00:00
Added Advanced Search manual.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31176 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
29e0fc8b02
commit
724b2c87e8
369
lib/doc/AdvancedSearch.lyx
Normal file
369
lib/doc/AdvancedSearch.lyx
Normal file
@ -0,0 +1,369 @@
|
||||
#LyX 1.5.0svn created this file. For more info see http://www.lyx.org/
|
||||
\lyxformat 276
|
||||
\begin_document
|
||||
\begin_header
|
||||
\textclass article
|
||||
\language english
|
||||
\inputencoding auto
|
||||
\font_roman default
|
||||
\font_sans default
|
||||
\font_typewriter default
|
||||
\font_default_family default
|
||||
\font_sc false
|
||||
\font_osf false
|
||||
\font_sf_scale 100
|
||||
\font_tt_scale 100
|
||||
\graphics default
|
||||
\paperfontsize default
|
||||
\papersize default
|
||||
\use_geometry false
|
||||
\use_amsmath 1
|
||||
\use_esint 1
|
||||
\cite_engine basic
|
||||
\use_bibtopic false
|
||||
\paperorientation portrait
|
||||
\secnumdepth 3
|
||||
\tocdepth 3
|
||||
\paragraph_separation indent
|
||||
\defskip medskip
|
||||
\quotes_language english
|
||||
\papercolumns 1
|
||||
\papersides 1
|
||||
\paperpagestyle default
|
||||
\tracking_changes false
|
||||
\output_changes false
|
||||
\author ""
|
||||
\author ""
|
||||
\end_header
|
||||
|
||||
\begin_body
|
||||
|
||||
\begin_layout Section
|
||||
Introduction to the find advanced feature
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
This is an introduction to the find advanced feature of LyX, that is activated
|
||||
through the [C-S-f] sequence (Ctrl+Shift+f).
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
First, leave the ignore format option
|
||||
\series bold
|
||||
checked
|
||||
\series default
|
||||
.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Enumerate
|
||||
Search for the word
|
||||
\series bold
|
||||
about
|
||||
\series default
|
||||
and see how it is found both in text mode and in math mode, and both in
|
||||
emphasized, bold or normal face, and both in section titles and in standard
|
||||
text.
|
||||
When finished typing the text to find in the
|
||||
\noun on
|
||||
Find...
|
||||
|
||||
\noun default
|
||||
box, pressing repeatidly
|
||||
\noun on
|
||||
[Enter]
|
||||
\noun default
|
||||
will search for it forward, while pressing
|
||||
\noun on
|
||||
[Shift+Enter]
|
||||
\noun default
|
||||
will search backwards.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Enumerate
|
||||
Search for some math by typing in the
|
||||
\noun on
|
||||
Find...
|
||||
|
||||
\noun default
|
||||
box a
|
||||
\begin_inset Formula $x^{2}$
|
||||
\end_inset
|
||||
|
||||
in simple math (C-m) mode (you can directly copy it from this text and
|
||||
paste into the
|
||||
\noun on
|
||||
Find...
|
||||
|
||||
\noun default
|
||||
box), or also something more elaborate like
|
||||
\begin_inset Formula $\frac{gh}{ij}$
|
||||
\end_inset
|
||||
|
||||
.
|
||||
See how it is found both when alone and when in subformulas and nested
|
||||
parts of subformulas.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
Now, uncheck the ignore format option.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Enumerate
|
||||
Search for a plain 'about' word and see how emphasized and boldface instances,
|
||||
as well as the ones in non-standard style, are not found anymore.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Enumerate
|
||||
Search for
|
||||
\emph on
|
||||
emphasized about
|
||||
\emph default
|
||||
or
|
||||
\series bold
|
||||
boldface about
|
||||
\series default
|
||||
and see how you can find the respective instances with same face only,
|
||||
and within same text style only (e.g.
|
||||
in order to find the words in this paragraph, you need to also add an enumerate
|
||||
style).
|
||||
Note that e.g.
|
||||
emphasized text is found not only when alone, but also when it is in a
|
||||
longer emphasized sentence.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Enumerate
|
||||
Search for the word 'about' (again plain face) giving it a Section style
|
||||
from the style selection dropdown menu, and see how it is found only within
|
||||
Section titles.
|
||||
Repeat with the word '
|
||||
\emph on
|
||||
advanced
|
||||
\emph default
|
||||
' in emphasized face, with
|
||||
\noun on
|
||||
Section
|
||||
\noun default
|
||||
style, and see how its corresponding instance is found.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Enumerate
|
||||
Search for some math in centered line math (C-S-m) mode, like this
|
||||
\begin_inset Formula \[
|
||||
x^{2}\]
|
||||
|
||||
\end_inset
|
||||
|
||||
and see how only instances of the text within the same kind of environment
|
||||
are found.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Subsection
|
||||
About using regular expressions in the Find...
|
||||
box
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
Now you can try the regular expression based searching facility.
|
||||
Users may arbitrarily insert, within text or math material, regexp-mode
|
||||
insets that allow to enter regular subexpressions.
|
||||
This is done either through
|
||||
\noun on
|
||||
[Insert]->[Regexp]
|
||||
\noun default
|
||||
or by typing [C-S-r].
|
||||
Characters entered in the
|
||||
\noun on
|
||||
[Find...]
|
||||
\noun default
|
||||
box within regexp insets are matched according to the regular expression
|
||||
matching rules
|
||||
\begin_inset Foot
|
||||
status collapsed
|
||||
|
||||
\begin_layout Standard
|
||||
but under the constraint that any subexpression must match a well-formed
|
||||
LyX text segment, i.e.
|
||||
when matching LaTeX code, no segments with unbalanced {} braces are allowed
|
||||
to match subexpressions entered by the user.
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
, while text entered outside regexp insets is matched exactly against the
|
||||
same text in the document.
|
||||
Note that it is allowed to cut and paste regexp-mode insets as usual.
|
||||
In order to try the feature, first leave the ignore format option checked.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Enumerate
|
||||
Search for the fraction
|
||||
\begin_inset Formula $\frac{\regexp{.*}}{mn}$
|
||||
\end_inset
|
||||
|
||||
, where the '.*' on the numerator is the match-everything regular expression
|
||||
that may be added by pressing the
|
||||
\noun on
|
||||
[Match...]->[Anything]
|
||||
\noun default
|
||||
button, or entering the regexp-mode through C-S-r and by typing '.*'.
|
||||
See how all fractions with the specified denominator are found.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Enumerate
|
||||
Now uncheck the Ignore Format option and search for '
|
||||
\series bold
|
||||
.*
|
||||
\series default
|
||||
' in boldface, or '
|
||||
\emph on
|
||||
.*
|
||||
\emph default
|
||||
' in emphasized face.
|
||||
See how, respectively, all boldface and all emphasized text is found.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Enumerate
|
||||
Search for a plain '.*' giving it a Section style, and navigate across section
|
||||
titles (similarly, navigate across enumerated or bulletted lists).
|
||||
\end_layout
|
||||
|
||||
\begin_layout Enumerate
|
||||
You can use references to subexpressions as usual, enclosing parts of the
|
||||
regex expression within round braces '()', and referring back to them through
|
||||
|
||||
\backslash
|
||||
1,
|
||||
\backslash
|
||||
2, etc...
|
||||
(within either the same or another regexp-mode inset, where a '
|
||||
\backslash
|
||||
' symbol is entered by pressing twice the '
|
||||
\backslash
|
||||
' key).
|
||||
For example, try searching for '
|
||||
\begin_inset Formula \regexp{[\^a-z]([a-z]+)}
|
||||
\end_inset
|
||||
|
||||
|
||||
\begin_inset Formula \regexp{\backslash1}
|
||||
\end_inset
|
||||
|
||||
' in order to find word repetitions, if any.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
What follows is just a set of meaningless formulas and sentences useful
|
||||
for for testing purposes.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
\begin_inset Formula $y+x+X^{2}+\frac{gh}{ij}-1+x_{j}^{i}+y_{jk}^{ip}+i$
|
||||
\end_inset
|
||||
|
||||
and
|
||||
\begin_inset Formula $z+x_{j}^{i}.$
|
||||
\end_inset
|
||||
|
||||
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
Hi, world !
|
||||
\emph on
|
||||
what
|
||||
\emph default
|
||||
about your
|
||||
\begin_inset Formula $X+y^{2}+\frac{x+x^{2}+\frac{gh}{ij}}{y^{x+x^{2}}+\frac{kl}{mn}}-about$
|
||||
\end_inset
|
||||
|
||||
?
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
\begin_inset Formula \[
|
||||
X+y^{2}+\frac{x+x^{2}+\frac{gh}{ij}}{y^{x+x^{2}}+\frac{kl}{mn}}-about\]
|
||||
|
||||
\end_inset
|
||||
|
||||
Hi, universe ! what
|
||||
\emph on
|
||||
about
|
||||
\emph default
|
||||
my
|
||||
\begin_inset Formula $c+\frac{kl}{mn}+\frac{\sqrt{\frac{gh}{ij}}}{mn}-\frac{1+\sqrt{\frac{about}{mn}}}{mn}+\textrm{about}$
|
||||
\end_inset
|
||||
|
||||
?
|
||||
\end_layout
|
||||
|
||||
\begin_layout Section
|
||||
Conclusion and future work about the find
|
||||
\emph on
|
||||
advanced
|
||||
\emph default
|
||||
feature
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
This feature seems very useful to me.
|
||||
Hope others will find it useful as well.
|
||||
Currently, I'm not really happy with the implementation, because it has
|
||||
at least quadratic complexity (document size multiplied by maximum paragraph
|
||||
size, plus regexp matching complexity, if enabled, and infact it is quite
|
||||
slow), but hopefully that will be fixable by changing the TeXOnePar() function
|
||||
and simpleTeXOnePar() method, and possibly other TeX related methods.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
Infact, a DocIterator could be used to keep track of the current position,
|
||||
and an externally supplied functor could be called at each position providing
|
||||
the DocIterator and LaTeX string translated so far to the external code.
|
||||
This would allow to couple each DocIterator state with the position in
|
||||
the output LaTeX string, allowing to recover the DocIterator positions
|
||||
after a regexp-based find operation made (only once this time) on translated
|
||||
LaTeX.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
Again, a few meaningless sentences useful for testing purposes on about.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
But
|
||||
\emph on
|
||||
what about your
|
||||
\emph default
|
||||
health ?
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
But
|
||||
\series bold
|
||||
what about your health
|
||||
\series default
|
||||
?
|
||||
\end_layout
|
||||
|
||||
\begin_layout Itemize
|
||||
search for plain 'about'
|
||||
\end_layout
|
||||
|
||||
\begin_layout Itemize
|
||||
search for
|
||||
\emph on
|
||||
emphasized about
|
||||
\emph default
|
||||
or
|
||||
\series bold
|
||||
boldface about
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
\begin_inset Formula $y+x-x^{2}\cdot2$
|
||||
\end_inset
|
||||
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_body
|
||||
\end_document
|
Loading…
Reference in New Issue
Block a user