On 24/01/2012, at 20.54, Dirk Günther wrote:
 
I use the LaTeX grammar and I have defined my own shortverb command [...] What should I do that |c| in \tabular{...} is not defined as verbatim?
As Allan suggested, I think that you need to have a rule in the LaTeX grammar that will match the column specification part of the tabular environment. Instead of writing a completely new rule, I tried changing the relevant existing rule, copied below. The only difference is in the begin match. I also tried adding your rule for scoping anything between pipes as verbatim, and this change to the tabular rules seems to do what you want - anything in the column spec is not scoped as verbatim. Hope that helps!
-Daniel Grady
{	begin = '(?x)
					(?:\s*)										# Optional whitespace
					((\\)begin)									# Marker - Function
					(\{)										# Open Bracket
						(array|tabular[xy*]?)
					(\})										# Close Bracket
					(\s*\{.*\})?								# Column specification
					(\s*\n)?				# Match to end of line absent of content
				';
			captures = {
				1 = { name = 'support.function.be.latex'; };
				2 = { name = 'punctuation.definition.function.latex'; };
				3 = { name = 'punctuation.definition.arguments.begin.latex'; };
				4 = { name = 'variable.parameter.function.latex'; };
				5 = { name = 'punctuation.definition.arguments.end.latex'; };
				6 = { name = 'variable.columnspec.tabular.latex'; };
			};
			contentName = 'meta.data.environment.tabular.latex';
			end = '(?x)
					(?:\s*)										# Optional whitespace
					((\\)end)									# Marker - Function
					(\{)										# Open Bracket
						(\4)				# Previous capture from begin
					(\})										# Close Bracket
					(?:\s*\n)?				# Match to end of line absent of content
				';
			name = 'meta.function.environment.tabular.latex';
			patterns = (
				{	match = '\\';
					name = 'punctuation.definition.table.row.latex';
				},
				{	begin = '(?:^|(?<=\\\\))(?!\\\\|\s*\\end\{(?:tabular|array))';
					end = '(?=\\\\|\s*\\end\{(?:tabular|array))';
					name = 'meta.row.environment.tabular.latex';
					patterns = (
						{	match = '&';
							name = 'punctuation.definition.table.cell.latex';
						},
						{	begin = '(?:^|(?<=&))((?!&|\\\\|$))';
							end = '(?=&|\\\\|\s*\\end\{(?:tabular|array))';
							name = 'meta.cell.environment.tabular.latex';
							patterns = ( { include = '$base'; } );
						},
						{	include = '$base'; },
					);
				},
				{	include = '$base'; },
			);
		}