Obeylines and gappto from etoolbox Unicorn Meta Zoo #1: Why another podcast? ...

Jaya, Venerated Firemage + Chandra's Pyrohelix = 4 damage among two targets?

Is there any pythonic way to find average of specific tuple elements in array?

Why doesn't the standard consider a template constructor as a copy constructor?

Was Dennis Ritchie being too modest in this quote about C and Pascal?

How exactly does Hawking radiation decrease the mass of black holes?

Obeylines and gappto from etoolbox

How long after the last departure shall the airport stay open for an emergency return?

Is Diceware more secure than a long passphrase?

Does Mathematica have an implementation of the Poisson binomial distribution?

A Paper Record is What I Hamper

English or Hindi translation of Vyasa Smriti

How to keep bees out of canned beverages?

First instead of 1 when referencing

Unable to completely uninstall Zoom meeting app

Is there really no use for MD5 anymore?

Sharepoint Designer Discontinuation - software to modify existing workflows

Are there moral objections to a life motivated purely by money? How to sway a person from this lifestyle?

Retract an already submitted recommendation letter (written for an undergrad student)

Suing a Police Officer Instead of the Police Department

Unknown code in script

How do I reattach a shelf to the wall when it ripped out of the wall?

Air bladders in bat-like skin wings for better lift?

Has a Nobel Peace laureate ever been accused of war crimes?

What to do with someone that cheated their way through university and a PhD program?



Obeylines and gappto from etoolbox



Unicorn Meta Zoo #1: Why another podcast?
Announcing the arrival of Valued Associate #679: Cesar ManaraHow can I undo an etoolbox patch?etoolbox: trouble with boolean expressionsmultiple lists in etoolboxPhantom and etoolbox iftoggleDifference between newbool and newtoggle from etoolbox packageRemove indentation from abstract environment with etoolboxetoolbox conflict with bm packagehelp with using etoolbox with docsvlist and listaddrenewcommand or patchcmd (from etoolbox)?question of ifstrequal in etoolbox












5















In order to simplify data entry with as little markup of the data as possible, I am attempting the following:



documentclass{article}

usepackage{etoolbox}

begingroup
obeylines
gdefing#1 #2 #3{gappto{tabbody}{% Collect rows of tabular[x] in tabbody
%% Ignore #1 and/or #2 if empty (= . )
if.#2
if.#1
&&#3\
else
#1&&#3\
fi
else
if.#1
&#2&#3\
else
#1&#2&#3\
fi
fi
}%
}
endgroup

%%%%%% This, without the if's works, though it does not do what I need:

begingroup
obeylines
gdefiing#1 #2 #3{gappto{tabbody}{% Collect rows of tabular[x] in tabbody
#1&#2&#3\
}%
}
endgroup

begin{document}

begingroup
obeylines
everypar={ing} %<<<--- change to iing and there is no error
a 1 u
b 2 v
. 3 w
d 4 x
e 5 y
f 6 z
endgroup

begin{tabular}{ccc}
tabbody
end{tabular}

end{document}


I'm getting an unexpected error:



ERROR: Incomplete if; all text was ignored after line 39.

--- TeX said ---
<inserted text>
fi
l.39 ^^I^^Itabbody


I have looked at past queries, but have not thus far found an answer. If I remove all of the if statements from the definition of ing (=iing) the problem goes a way. Quite sure I'm missing something really basic -- something to do with the timing of the expansion of the ifs, but I'm stuck for the moment.










share|improve this question


















  • 1





    Why do you need obeylines so many places? Dropping obeylines before the definition of ing allows the file to compile and produces reasonable output.

    – Andrew Swann
    2 hours ago













  • Good point! Confirmed.

    – sgmoye
    1 hour ago
















5















In order to simplify data entry with as little markup of the data as possible, I am attempting the following:



documentclass{article}

usepackage{etoolbox}

begingroup
obeylines
gdefing#1 #2 #3{gappto{tabbody}{% Collect rows of tabular[x] in tabbody
%% Ignore #1 and/or #2 if empty (= . )
if.#2
if.#1
&&#3\
else
#1&&#3\
fi
else
if.#1
&#2&#3\
else
#1&#2&#3\
fi
fi
}%
}
endgroup

%%%%%% This, without the if's works, though it does not do what I need:

begingroup
obeylines
gdefiing#1 #2 #3{gappto{tabbody}{% Collect rows of tabular[x] in tabbody
#1&#2&#3\
}%
}
endgroup

begin{document}

begingroup
obeylines
everypar={ing} %<<<--- change to iing and there is no error
a 1 u
b 2 v
. 3 w
d 4 x
e 5 y
f 6 z
endgroup

begin{tabular}{ccc}
tabbody
end{tabular}

end{document}


I'm getting an unexpected error:



ERROR: Incomplete if; all text was ignored after line 39.

--- TeX said ---
<inserted text>
fi
l.39 ^^I^^Itabbody


I have looked at past queries, but have not thus far found an answer. If I remove all of the if statements from the definition of ing (=iing) the problem goes a way. Quite sure I'm missing something really basic -- something to do with the timing of the expansion of the ifs, but I'm stuck for the moment.










share|improve this question


















  • 1





    Why do you need obeylines so many places? Dropping obeylines before the definition of ing allows the file to compile and produces reasonable output.

    – Andrew Swann
    2 hours ago













  • Good point! Confirmed.

    – sgmoye
    1 hour ago














5












5








5








In order to simplify data entry with as little markup of the data as possible, I am attempting the following:



documentclass{article}

usepackage{etoolbox}

begingroup
obeylines
gdefing#1 #2 #3{gappto{tabbody}{% Collect rows of tabular[x] in tabbody
%% Ignore #1 and/or #2 if empty (= . )
if.#2
if.#1
&&#3\
else
#1&&#3\
fi
else
if.#1
&#2&#3\
else
#1&#2&#3\
fi
fi
}%
}
endgroup

%%%%%% This, without the if's works, though it does not do what I need:

begingroup
obeylines
gdefiing#1 #2 #3{gappto{tabbody}{% Collect rows of tabular[x] in tabbody
#1&#2&#3\
}%
}
endgroup

begin{document}

begingroup
obeylines
everypar={ing} %<<<--- change to iing and there is no error
a 1 u
b 2 v
. 3 w
d 4 x
e 5 y
f 6 z
endgroup

begin{tabular}{ccc}
tabbody
end{tabular}

end{document}


I'm getting an unexpected error:



ERROR: Incomplete if; all text was ignored after line 39.

--- TeX said ---
<inserted text>
fi
l.39 ^^I^^Itabbody


I have looked at past queries, but have not thus far found an answer. If I remove all of the if statements from the definition of ing (=iing) the problem goes a way. Quite sure I'm missing something really basic -- something to do with the timing of the expansion of the ifs, but I'm stuck for the moment.










share|improve this question














In order to simplify data entry with as little markup of the data as possible, I am attempting the following:



documentclass{article}

usepackage{etoolbox}

begingroup
obeylines
gdefing#1 #2 #3{gappto{tabbody}{% Collect rows of tabular[x] in tabbody
%% Ignore #1 and/or #2 if empty (= . )
if.#2
if.#1
&&#3\
else
#1&&#3\
fi
else
if.#1
&#2&#3\
else
#1&#2&#3\
fi
fi
}%
}
endgroup

%%%%%% This, without the if's works, though it does not do what I need:

begingroup
obeylines
gdefiing#1 #2 #3{gappto{tabbody}{% Collect rows of tabular[x] in tabbody
#1&#2&#3\
}%
}
endgroup

begin{document}

begingroup
obeylines
everypar={ing} %<<<--- change to iing and there is no error
a 1 u
b 2 v
. 3 w
d 4 x
e 5 y
f 6 z
endgroup

begin{tabular}{ccc}
tabbody
end{tabular}

end{document}


I'm getting an unexpected error:



ERROR: Incomplete if; all text was ignored after line 39.

--- TeX said ---
<inserted text>
fi
l.39 ^^I^^Itabbody


I have looked at past queries, but have not thus far found an answer. If I remove all of the if statements from the definition of ing (=iing) the problem goes a way. Quite sure I'm missing something really basic -- something to do with the timing of the expansion of the ifs, but I'm stuck for the moment.







etoolbox






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 2 hours ago









sgmoyesgmoye

4,11511328




4,11511328








  • 1





    Why do you need obeylines so many places? Dropping obeylines before the definition of ing allows the file to compile and produces reasonable output.

    – Andrew Swann
    2 hours ago













  • Good point! Confirmed.

    – sgmoye
    1 hour ago














  • 1





    Why do you need obeylines so many places? Dropping obeylines before the definition of ing allows the file to compile and produces reasonable output.

    – Andrew Swann
    2 hours ago













  • Good point! Confirmed.

    – sgmoye
    1 hour ago








1




1





Why do you need obeylines so many places? Dropping obeylines before the definition of ing allows the file to compile and produces reasonable output.

– Andrew Swann
2 hours ago







Why do you need obeylines so many places? Dropping obeylines before the definition of ing allows the file to compile and produces reasonable output.

– Andrew Swann
2 hours ago















Good point! Confirmed.

– sgmoye
1 hour ago





Good point! Confirmed.

– sgmoye
1 hour ago










1 Answer
1






active

oldest

votes


















6














You don't want to define ing under the scope of obeylines, but just use the active ^^M as delimiter (reinserting it at the end so a par will be issued.



You also want to expand the conditionals before appending the result to tabbody.



documentclass{article}
usepackage{etoolbox}

begingrouplccode`~=`^^Mlowercase{endgroupdefing#1 #2 #3~{%
xappto{tabbody}{% Collect rows of tabular[x] in tabbody
%% Ignore #1 and/or #2 if empty (= . )
if.#2%
if.#1%
unexpanded{&&#3\}%
else
unexpanded{#1&&#3\}%
fi
else
if.#1%
unexpanded{&#2&#3\}%
else
unexpanded{#1&#2&#3\}%
fi
fi
}~% we want a `par`
}}

begin{document}

begingroup
obeylines
everypar={ing} %<<<--- change to iing and there is no error
a 1 u
b 2 v
. 3 w
d 4 x
e 5 y
f 6 z
endgroup

%showtabbody % for debugging

begin{tabular}{ccc}
tabbody
end{tabular}

end{document}


enter image description here






share|improve this answer
























  • However, an input such as a 1 u\ would be much easier to manage and less fragile.

    – egreg
    1 hour ago














Your Answer








StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "85"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f487572%2fobeylines-and-gappto-from-etoolbox%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









6














You don't want to define ing under the scope of obeylines, but just use the active ^^M as delimiter (reinserting it at the end so a par will be issued.



You also want to expand the conditionals before appending the result to tabbody.



documentclass{article}
usepackage{etoolbox}

begingrouplccode`~=`^^Mlowercase{endgroupdefing#1 #2 #3~{%
xappto{tabbody}{% Collect rows of tabular[x] in tabbody
%% Ignore #1 and/or #2 if empty (= . )
if.#2%
if.#1%
unexpanded{&&#3\}%
else
unexpanded{#1&&#3\}%
fi
else
if.#1%
unexpanded{&#2&#3\}%
else
unexpanded{#1&#2&#3\}%
fi
fi
}~% we want a `par`
}}

begin{document}

begingroup
obeylines
everypar={ing} %<<<--- change to iing and there is no error
a 1 u
b 2 v
. 3 w
d 4 x
e 5 y
f 6 z
endgroup

%showtabbody % for debugging

begin{tabular}{ccc}
tabbody
end{tabular}

end{document}


enter image description here






share|improve this answer
























  • However, an input such as a 1 u\ would be much easier to manage and less fragile.

    – egreg
    1 hour ago


















6














You don't want to define ing under the scope of obeylines, but just use the active ^^M as delimiter (reinserting it at the end so a par will be issued.



You also want to expand the conditionals before appending the result to tabbody.



documentclass{article}
usepackage{etoolbox}

begingrouplccode`~=`^^Mlowercase{endgroupdefing#1 #2 #3~{%
xappto{tabbody}{% Collect rows of tabular[x] in tabbody
%% Ignore #1 and/or #2 if empty (= . )
if.#2%
if.#1%
unexpanded{&&#3\}%
else
unexpanded{#1&&#3\}%
fi
else
if.#1%
unexpanded{&#2&#3\}%
else
unexpanded{#1&#2&#3\}%
fi
fi
}~% we want a `par`
}}

begin{document}

begingroup
obeylines
everypar={ing} %<<<--- change to iing and there is no error
a 1 u
b 2 v
. 3 w
d 4 x
e 5 y
f 6 z
endgroup

%showtabbody % for debugging

begin{tabular}{ccc}
tabbody
end{tabular}

end{document}


enter image description here






share|improve this answer
























  • However, an input such as a 1 u\ would be much easier to manage and less fragile.

    – egreg
    1 hour ago
















6












6








6







You don't want to define ing under the scope of obeylines, but just use the active ^^M as delimiter (reinserting it at the end so a par will be issued.



You also want to expand the conditionals before appending the result to tabbody.



documentclass{article}
usepackage{etoolbox}

begingrouplccode`~=`^^Mlowercase{endgroupdefing#1 #2 #3~{%
xappto{tabbody}{% Collect rows of tabular[x] in tabbody
%% Ignore #1 and/or #2 if empty (= . )
if.#2%
if.#1%
unexpanded{&&#3\}%
else
unexpanded{#1&&#3\}%
fi
else
if.#1%
unexpanded{&#2&#3\}%
else
unexpanded{#1&#2&#3\}%
fi
fi
}~% we want a `par`
}}

begin{document}

begingroup
obeylines
everypar={ing} %<<<--- change to iing and there is no error
a 1 u
b 2 v
. 3 w
d 4 x
e 5 y
f 6 z
endgroup

%showtabbody % for debugging

begin{tabular}{ccc}
tabbody
end{tabular}

end{document}


enter image description here






share|improve this answer













You don't want to define ing under the scope of obeylines, but just use the active ^^M as delimiter (reinserting it at the end so a par will be issued.



You also want to expand the conditionals before appending the result to tabbody.



documentclass{article}
usepackage{etoolbox}

begingrouplccode`~=`^^Mlowercase{endgroupdefing#1 #2 #3~{%
xappto{tabbody}{% Collect rows of tabular[x] in tabbody
%% Ignore #1 and/or #2 if empty (= . )
if.#2%
if.#1%
unexpanded{&&#3\}%
else
unexpanded{#1&&#3\}%
fi
else
if.#1%
unexpanded{&#2&#3\}%
else
unexpanded{#1&#2&#3\}%
fi
fi
}~% we want a `par`
}}

begin{document}

begingroup
obeylines
everypar={ing} %<<<--- change to iing and there is no error
a 1 u
b 2 v
. 3 w
d 4 x
e 5 y
f 6 z
endgroup

%showtabbody % for debugging

begin{tabular}{ccc}
tabbody
end{tabular}

end{document}


enter image description here







share|improve this answer












share|improve this answer



share|improve this answer










answered 1 hour ago









egregegreg

737k8919353263




737k8919353263













  • However, an input such as a 1 u\ would be much easier to manage and less fragile.

    – egreg
    1 hour ago





















  • However, an input such as a 1 u\ would be much easier to manage and less fragile.

    – egreg
    1 hour ago



















However, an input such as a 1 u\ would be much easier to manage and less fragile.

– egreg
1 hour ago







However, an input such as a 1 u\ would be much easier to manage and less fragile.

– egreg
1 hour ago




















draft saved

draft discarded




















































Thanks for contributing an answer to TeX - LaTeX Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f487572%2fobeylines-and-gappto-from-etoolbox%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Gersau Kjelder | Navigasjonsmeny46°59′0″N 8°31′0″E46°59′0″N...

Hestehale Innhaldsliste Hestehale på kvinner | Hestehale på menn | Galleri | Sjå òg |...

What is the “three and three hundred thousand syndrome”?Who wrote the book Arena?What five creatures were...