Has anybody else noticed that the branches feature doesn't work inside
math and inside graphics? It would be especially nice to have it in the
"special" LaTeX strings inside XFig graphics. An in text phrases inside
math, like 

        / 0  if x > 0
f(x) = |
        \ 1  if x <= 0

where you may want to have "if" in a different language.

The attached does precisely that. It adds raw LaTeX commands \b<branchname> 
that are then available to the user. When enabled, they just pass through
their content, when disabled, they suppress it.

A demo is attached too. (You may have to tinker with the pathname of
branch.fig to get it showing on your system) 

- Martin

Index: InsetBranch.cpp
===================================================================
--- InsetBranch.cpp	(revision 21475)
+++ InsetBranch.cpp	(working copy)
@@ -22,6 +22,7 @@
 #include "FuncRequest.h"
 #include "FuncStatus.h"
 #include "gettext.h"
+#include "LaTeXFeatures.h"
 #include "Lexer.h"
 #include "OutputParams.h"
 
@@ -212,8 +213,10 @@
 		std::find_if(branchlist.begin(), end,
 			     BranchNamesEqual(params_.branch));
 	if (it == end)
-		return false;
-	return it->getSelected();
+		selected_ = false;	
+	else
+		selected_ = it->getSelected();
+	return selected_;
 }
 
 
@@ -269,6 +272,12 @@
 
 void InsetBranch::validate(LaTeXFeatures & features) const
 {
+	string const name = to_utf8(params_.branch);
+	features.require(name);
+	if (selected_)
+		features.addPreambleSnippet("\\newcommand{\\b" + name + "}[1]{#1}");
+	else
+		features.addPreambleSnippet("\\newcommand{\\b" + name + "}[1]{}");
 	InsetText::validate(features);
 }
 
Index: InsetBranch.h
===================================================================
--- InsetBranch.h	(revision 21475)
+++ InsetBranch.h	(working copy)
@@ -96,6 +96,8 @@
 
 	///
 	InsetBranchParams params_;
+	///
+	mutable bool selected_;
 };
 
 

Attachment: newfile1.lyx
Description: application/lyx

Attachment: branch.fig
Description: application/xfig

Reply via email to