Asciidoctor nested table - asciidoctor

I am trying to create nested tables in my Asciidoctor pdf output but I cannot find the syntax.
If I understand it right, nested tables should be supported in Asciidoctor as of 1.5.0. I am running a Docker container that has 1.5.5 (https://github.com/asciidoctor/docker-asciidoctor).
I've tried as per example in table 11 here: http://www.methods.co.nz/asciidoc/newtables.html but to no avail.

Note that Asciidoc and Asciidoctor are not the same thing.
Therefore, make sure you are looking at the correct documentation.
I have not tried it, but if a nested table is going to work, the cell containing it will have to use the asciidoc style. You will then most likely have put the table in a block and escape all the pipe symbols (using \| instead of | or using some other delimiter).
A web search turned up this open issue in the AsciiDoctor tracker requesting (improvements to) nested table support. So this seems not to be implemented yet at least in some backends. The first comment contains an example of how to specify a nested table.
Are you sure you cannot use something other than nested tables? They are usually not the most readable thing.

In order to make it work, you need to delete two unintended newlines. Here's the modified content.
[width="75%",cols="1,2a"]
|==============================================
|Normal cell |Cell with nested table
[cols="2,1"]
!==============================================
!Nested table cell 1 !Nested table cell 2
!==============================================
|==============================================
I must say I used asciidoctor-pdf first time and although the process has been streamlined as much as possible with the docker image, there is a much quicker way to get rendered feedback: Asciidoctor.js - a Chrome extension that converts your .adoc file to HTML and reloads when you save the file.
Asciidoctor.js comes from the same great team that created and maintain Asciidoctor, so it has latest Asciidoctor under the hood.

Related

How to make a Pandoc table wider than textwidth?

I'm adding a table to a document and discovered that the columns are too narrow, making it a bit difficult to read. Therefore I'd like to make the entire table (and thus also the individual columns relative sizes) wider while keeping the textwidth of the rest of the document unchanged. Is it possible to do this using the Pandoc multi-line tables? Or do I need to use pure LaTeX for this table?
This is what the Pandoc markdown for my table looks like:
--------------------------------------------------------------------------------------------------------------------------------------------------------
DSR Activity Description In this thesis
-------------------------------------- --------------------------------------------- -------------------------------------------------------------------
1. Problem Identification & Motivation The specific research problem is defined, The research problem was initially defined by Simon Hacks
and the value of a solution is justified. and Robert Lagerström in a thesis proposal. The value of
the solution is that the produced artifact will establish
a foundation for further work in EAD detection and analysis.
2. Defining Objectives for a Solution The objectives of the solution are infered In order to determine the objectives of the solution the problem
from the problem definition and knowledge definition is examined.
about what is possible and feasible. This
might e.g. be a description of how the
artifact is expected to support solutions
to problems which have not yet been
addressed.
--------------------------------------------------------------------------------------------------------------------------------------------------------
And the resulting PDF (compiled simply using pandoc myfile.md -o myfile.pdf), where you can see that the table is only as wide as the textwidth:
In case it matters, I'm using
\usepackage{fancyhdr}
\pagestyle{fancy}
A crude but effective method is to widen the \columwidth just for the table. You'll probably want to change the \LTleft table margin, like so:
```{=latex}
\newlength{\extraspace}
\setlength\extraspace{4cm}
\setlength\columnwidth{\columnwidth + \extraspace}
\setlength\LTleft{-0.5\extraspace + \tabcolsep}
```
Table goes here
```{=latex}
% restore old columnwidth, table placement
\setlength\columnwidth{\linewidth - 4cm}
\LTleft=\fill
```
Result:
I ended up using this solution:
\usepackage[textwidth=12.1cm,textheight=22cm]{geometry}
...
\newgeometry{textwidth=18cm,textheight=22cm}
<!-- my table here -->
\restoregeometry

Read html table with pandas in python

I'm scraping tables from this website http://www.nowgoal.com/analysis/1514180.html
(in case you click and the match is already gone, from the website Nowgoal you can get any other match with the same structure.
This page has several tables, and so far my code, which worked, was as follows:
name='Head to Head Statistics'
tabla=WebDriverWait(browser,10).until(
EC.presence_of_element_located((By.XPATH,'''//tbody[descendant::*
[contains(text(),"{}")]]'''.format(name))))
tablas=pd.read_html(tabla.get_attribute('outerHTML'),header=0,skiprows=(0,2))[0]
Where I already optimized it adding header and skipping rows. The problem is, when i try the table with name='Live Odds Comparison' I get the following error when trying to read html with pandas
>>ValueError: No tables found
I have debugged a little and the outerHTML attribute works fine and prints what it should, but neither that nor using innerHTML returns the table as it should and as it does with the others. What is happening?
Apparently, though I still don't understand why with this table doesn't work the usual approach, what works is looking for a parental node of the one I was searching. So, for it to work, the only thing that should be changed is
tabla=WebDriverWait(browser,10).until(
EC.presence_of_element_located((By.XPATH,'''//div[contains(#id,"liveCompareDiv") and descendant::*
[contains(text(),"{}")]]'''.format(name))))
This way you find the table I was looking for. My guess is somehow the internal code of tbody node differs from one table to another and that creates the wild behaviour.
Edit because now I know why, I think. After tbody in the tables that worked there are two tr nodes, one containing the title and another containing the data. In this table though there still is the tr node containing the title, the second containing the data is not, and the rows are all uncontained.

Modx - Extend site_content - Add new table

Currently, we're running revolution 2.2. On site_content, we have some tags that are ran for crawling twitter. I want to start tracking the number of results for each tag as results come in, to determine which tags don't return that many results, etc.
So I was thinking that I should create a new table (twitter_data), and have a foreign key that will link it to the search tag ID, which is stored in site_content.
What is the best path to accomplish this? Should I create my table then run the reverse schema tool, outlined here?
http://rtfm.modx.com/display/revolution20/Reverse+Engineer+xPDO+Classes+from+Existing+Database+Table#ReverseEngineerxPDOClassesfromExistingDatabaseTable-CreatingaMySQLtable
I also found this, but not sure if this is what I should be looking into:
http://rtfm.modx.com/display/revolution20/Using+Custom+Database+Tables+in+your+3rd+Party+Components
Probably not - if you can avoid modifying the core modx schema do so. an external table may be your best option, but requires a fair bit of work.
though if you can explain wht you mean by 'tags' a little better [html tags? snippets? content tags? not sure what you mean] there may be other options. for example. one of our clients wanted to count page hits [and didn't want to use google to do it] so all we did was to create a template variable bound to each page they wanted to count and then updated that appropriate variable by writing plugin to fire on the onpageload or onpagerender event. [I don't ermember exactly which or what it was called]
Basically, you may be able to do this by writng a plugin rather than trying to extend anything or add snippets/chunks.

Any way in Expression Engine to simulate Wordpress' shortcode functionality?

I'm relatively new to Expression Engine, and as I'm learning it I am seeing some stuff missing that WordPress has had for a while. A big one for me is shortcodes, since I will use these to allow CMS users to place more complex content in place with their other content.
I'm not seeing any real equivalent to this in EE, apart from a forthcoming plugin that's in private beta.
As an initial test I'm attempting to fake shortcodes by using delimited strings (e.g. #foo#) in the content field, then using a regex to pull those out and pass them to a function that can retrieve the content out of EE's database.
This brings me to a second question, which is that in looking at EE's API docs, there doesn't appear to be a simple means of retrieving the channel entries programmatically (thinking of something akin to WP's built-in get_posts function).
So my questions are:
a) Can this be done?
b) If so, is my method of approaching it reasonable? Or is there something stupidly obvious I'm missing in my approach?
To reiterate, my main objective here is to have some means of allowing people managing content to drop a code in place in their content that will be replaced with channel content.
Thanks for any advice or help you can give me.
Here's a simple example of the functionality you're looking for.
1) Start by installing Low Replace.
2) Create two Global Variables called gv_hello and gv_goodbye with the values "Hello" and "Goodbye" respectively.
3) Put this text into the body of an entry:
[say_hello]
Nice to see you.
[say_goodbye]
4) Put this into your template, wrapping the Low Replace tag around your body field.
{exp:low_replace
find="[say_hello]|[say_goodbye]"
replace="{gv_hello}|{gv_goodbye}"
multiple="yes"
}
{body}
{/exp:low_replace}
5) It should output this into your browser:
Hello
Nice to see you.
Goodbye
Obviously, this is a really simple example. You can put full blown HTML into your global variable. For example, we've used that to render a complex, interactive graphic that isn't editable but can be easily dropped into a page by any editor.
Unfortunately, due to parse order issues, EE tags won't work inside Global Variables. If you need EE tags in your short code output, you'll need to use Low Variables addon instead of Global Variables.
Continued from the comment:
Do you have examples of the kind of shortcodes you want to support/include? Because i have doubts if controlling the page-layout from a text-field or wysiwyg-field is the way to go.
If you want editors to be able to adjust layout or show/hide extra parts on the page, giving them access to some extra fields in the channel, is (imo) much more manageable and future-proof. For instance some selectfields, a relationship (or playa) field, or a matrix, to let them choose which parts to include/exclude on a page, or which entry from another channel to pull content from.
As said in the comment: i totally understand if you want to replace some #foo# tags with images or data from another field (see other answers: nsm-transplant, low_replace). But, giving an editor access to shortcodes and picking them out, is like writing a template-engine to generate ee-template code for the ee-template-engine.
Using some custom fields to let editors pick and choose parts to embed is, i think, much more manageable.
That being said, you could make a plugin to parse the shortcodes from a textareas content, and then program a lot, to fetch data from other modules you want to support. For channel entries you could build out of the channel data library by objectiveHTML. https://github.com/objectivehtml/Channel-Data
I hear you, I too miss shortcodes from WP -- though the reason they work so easily there is the ubiquity of the_content(). With the great flexibility of EE comes fewer blanket solutions.
I'd suggest looking at NSM Transplant. It should fit the bill for you.
There is also a plugin called Shortcode, which you can find here at
Devot-ee
A quote from the page:
Shortcode aims to allow for more dynamic use of content by authors and
editors, allowing for injection of reusable bits of content or even
whole pieces of functionality into any field in EE

Modifying the conditional build expression in RoboHelp using Extendscript

I'm trying to automate a process for our documentation team. They have a pretty big batch of framemaker files across several books and use RoboHelp to generate EclipseHelp for two different versions of our project.
Each framemaker file has the appropriate tags set to indicate which version a particular piece of documentation applies to. Currently the writers modify the conditional build expression to specify the correct set of tags and run File->Generate->EclipseHelp each time. I can run the generation process just fine, but I can't figure out how to change which tags it's using.
I've read through RoboHelp's scripting guide and the only references I can find to Conditional Build Tags is the ability to create and delete them. I can't find any references to Conditional Build Expressions. Does anyone know any way to modify it from a script? Alternatively, if someone can suggest a different way of organizing RoboHelp/Framemaker that is more conducive, I'm all ears, though I have basically zero familiarity with either.
The Conditional Build Expression forms form of your EclipseHelp Single Source layout. As such your script needs to refer to the tags there.
I'm going to answer with what I found - even though it's only a partial answer - just in case it can help someone, or possibly give someone enough to figure out a more proper answer.
Basically I found that each Single Source Layout has a corresponding *.ssl file. If your layout is called OnlineHelp, it will be (in my experience) OnlineHelp.ssl and will be in the same directory as your .xpj file. The ssl file is just a bunch of xml and has some number of sections. One of the sections will have the same name as the content category where you would go in the UI to change the Conditional Build Expression. In that section is an element named "BuildExpression". Set that to whatever you need and reopen your RoboHelp project. It's a bit of a hack, but I set up a groovy script to do that before running my ExtendScript and it gets the job done.

Resources