 expand_goal(+Goal1, 
?Layout1, -Goal2, -Layout2)
goal_expansion(+Goal1, 
?Layout1, -Goal2, -Layout2)
expand_term(+Term1, 
?Layout1, -Term2, -Layout2)
term_expansion(+Term1, 
?Layout1, -Term2, -Layout2)
dcg_translate_rule(+In, 
?LayoutIn, -Out, -LayoutOut)These versions are called before their 2-argument counterparts. 
The input layout term is either a variable (if no layout information is 
available) or a term carrying detailed layout information as returned by 
the
expand_goal(+Goal1, 
?Layout1, -Goal2, -Layout2)
goal_expansion(+Goal1, 
?Layout1, -Goal2, -Layout2)
expand_term(+Term1, 
?Layout1, -Term2, -Layout2)
term_expansion(+Term1, 
?Layout1, -Term2, -Layout2)
dcg_translate_rule(+In, 
?LayoutIn, -Out, -LayoutOut)These versions are called before their 2-argument counterparts. 
The input layout term is either a variable (if no layout information is 
available) or a term carrying detailed layout information as returned by 
the subterm_positions of read_term/2. 
The output layout should be a variable if no layout information can be 
computed for the expansion; a sub-term can also be a variable to 
indicate “don't know” .